Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.12 first-letter Media Specjalna Dyskusja Wikipedysta Dyskusja wikipedysty Wikibooks Dyskusja Wikibooks Plik Dyskusja pliku MediaWiki Dyskusja MediaWiki Szablon Dyskusja szablonu Pomoc Dyskusja pomocy Kategoria Dyskusja kategorii Wikijunior Dyskusja Wikijuniora TimedText TimedText talk Moduł Dyskusja modułu Wydarzenie Dyskusja wydarzenia Wikibooks:Szablony/Porządkowe 4 2991 548286 516179 2026-07-25T12:51:47Z Persino 2851 /* Szablony integracji informacyjne */ 548286 wikitext text/x-wiki <noinclude>{{Autonawigacja|Pomoc:Spis treści}}</noinclude> == Porządki == Szablony dzielące artykuły, przyporządkując stronę do jakieś kategorii w przestrzeni nazw {{Np|Category|link=tak}}. === Szablony zgłaszające mankamenty === Te szablony dzielimy na szablony do zgłaszania problemów (nie błędów) ogólnych i szczególnych. Też tutaj zaliczamy szablony do zgłaszania za to błędów, do których zaliczamy min. szablon {{Tt|{{s|ZB}}}} ({{Tt|{{s|Zgłoś błąd}}}}). ==== Szablony do zgłaszania problemów ==== Przedstawione tutaj szablony są do zgłaszania problemów. ===== Ogólno-problematyczne szablony dopracowania artykułów podręcznikowych ===== {{EfektKodów | 1 = {{Tt|{{s|Dopracować|powód|więcej przypisów{{=}}{{Czas|Y-m}}}}}} i jego przekierowania: {{s|DoPracowania|powód|więcej przypisów{{=}}{{Czas|Y-m}}}}{{•}} {{s|Cleanup|powód|więcej przypisów{{=}}{{Czas|Y-m}}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Dopracować|powód|więcej przypisów={{Czas|Y-m}}|typ jednostki=artykuł}}}} | 2 = {{Tt|{{s|Dopracować2|powód}}}} | _2 = {{OpakujKategorieZeSortowaniem|{{Dopracować2|powód|typ jednostki=artykuł}}}} }} ===== Szczególno-problematyczne szablony dopracowania artykułów podręcznikowych ===== Szablony do zgłaszania szczególnych problemów w artykułach podręcznikowych, wskazujące jakieś problemy, które należy naprawić, by się wszystko zgadzało. ====== Weryfikalność ====== {{EfektKodów | 1 = {{Tt|{{s|Brak strony}}}} * Ten szablon służy do dodawania prośby o podanie numeru strony lub zakresu stron w książce, czasopiśmie lub innym wydawnictwie. | _1 = {{OpakujKategorieZeSortowaniem|{{Brak strony|typ jednostki=artykuł}}}} | 2 = {{Tt|{{s|Fakt|Wątpliwa informacja|data{{=}}{{Czas|Y-m}}}}}} * Szablon ten należy umieścić w artykule w miejscu, gdzie ze względu na niepodpartą źródłami treść powinien znajdować się {{lpp|Przypisy|przypis bibliograficzny}}. | _2 = {{OpakujKategorieZeSortowaniem|{{Fakt|Wątpliwa informacja|data={{Czas|Y-m}}|typ jednostki=artykuł}}|kategorie istnieją=tak}} | 3 = {{Tt|{{s|Niewiarygodne źródło|data{{=}}{{Czas|Y-m}}}}}} * Szablon ten należy umieścić w artykule obok odnośnika bibliograficznego do nierzetelnego źródła | _3 = {{OpakujKategorieZeSortowaniem|{{Niewiarygodne źródło|data={{Czas|Y-m}}|typ jednostki=artykuł}}|kategorie istnieją=tak}} | 4 = {{Tt|{{s|Nie w źródle}}}} * Wstawiamy w treści artykułu, bezpośrednio po odnośniku do źródła (pozycji bibliograficznej, przypisu), które nie zawiera informacji, którą rzekomo ma potwierdzać. | _4 = {{OpakujKategorieZeSortowaniem|{{Nie w źródle|typ jednostki=artykuł}}}} | 5 = {{Tt|{{s|Martwy link}}}} * Ten szablon używany jest do oznaczania źródeł internetowych zawierających {{lpg|martwy link|martwe linki}}. | _5 = {{OpakujKategorieZeSortowaniem|{{Martwy link|typ jednostki=artykuł}}}} | 6 = {{Tt|{{s|Wątpliwe}}}} * Szablon należy umieścić w artykule przy fragmencie tekstu, który wydaje się wątpliwy i wymaga weryfikacji, pomimo umieszczenia przy nim {{lpp|Przypisy|przypisów}} (a inne {{ls|Szablony problemów umieszczane w tekście|szablony problemów umieszczanych w tekście}} nie są adekwatne). | _6 = {{OpakujKategorieZeSortowaniem|{{Wątpliwe|typ jednostki=artykuł}}}} }} ====== Podręcznikowość ====== {{EfektKodów | 1 = {{Tt|{{s|Czy to ważne}}}} * Służy on do oznaczania zdań lub wyrażeń, które wydają się nie mieć związku z głównym tematem strony, czyli czynią z niego {{lpr|NIEŁAD|bezładny zbiór informacji}}. | _1 = {{OpakujKategorieZeSortowaniem|{{Czy to ważne|typ jednostki=artykuł}}}} }} ====== Wyrażenia zwodnicze ====== {{EfektKodów | 1 = {{Tt|{{s|Doprecyzuj|data{{=}}2017-01|wymaga doprecyzowania}}}} * Szablon służy do oznaczania fragmentów stron, które są: niezrozumiałe lub zbyt ogólne i wymagają podania dodatkowych informacji. | _1 = {{OpakujKategorieZeSortowaniem|{{Doprecyzuj|data=2017-01|wymaga doprecyzowania|typ jednostki=artykuł}}|kategorie istnieją=tak}} | 2 = {{Tt|{{s|Czyim}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć czyim, np. imieniem to zostało nazwane. | _2 = {{OpakujKategorieZeSortowaniem|{{Czyim|typ jednostki=artykuł}}}} | 3 = {{Tt|{{s|Kto}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, kto daną rzecz stworzył. | _3 = {{OpakujKategorieZeSortowaniem|{{Kto|typ jednostki=artykuł}}}} | 4 = {{Tt|{{s|Przez kogo}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, przez kogo to zastało stworzone, wypowiedziane itp. | _4 = {{OpakujKategorieZeSortowaniem|{{Przez kogo|typ jednostki=artykuł}}}} | 5 = {{Tt|{{s|Według kogo}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, według kogo ta jest. | _5 = {{OpakujKategorieZeSortowaniem|{{Według kogo|typ jednostki=artykuł}}}} | 6 = {{Tt|{{s|Jaka}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, o jaką daną rzecz chodzi. | _6 = {{OpakujKategorieZeSortowaniem|{{Jaka|typ jednostki=artykuł}}}} | 7 = {{Tt|{{s|Jakich}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, o jakie dane rzeczy chodzi. | _7 = {{OpakujKategorieZeSortowaniem|{{Jakich|typ jednostki=artykuł}}}} | 8 = {{Tt|{{s|Gdzie}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, gdzie dana rzecz występuje. | _8 = {{OpakujKategorieZeSortowaniem|{{Gdzie|typ jednostki=artykuł}}}} | 9 = {{Tt|{{s|Kiedy}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, kiedy dana rzecz występuje. | _9 = {{OpakujKategorieZeSortowaniem|{{Kiedy|typ jednostki=artykuł}}}} | 10 = {{Tt|{{s|Od kiedy}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, od kiedy dana rzecz występuje. | _10= {{OpakujKategorieZeSortowaniem|{{Od kiedy|typ jednostki=artykuł}}}} }} ====== Twórczość własna ====== {{EfektKodów | 1 = {{Tt|{{s|Or}}}} * Używany w sytuacjach, gdzie w projekcie autor ({{Np|User|link=tak}}) przedstawia swoją twórczość własną. | _1 = {{OpakujKategorieZeSortowaniem|{{Or|typ jednostki=artykuł}}}} }} ====== Aktualność ====== {{EfektKodów | 1 = <nowiki>*</nowiki> {{Tt|{{s|Aktualizuj po|tekst{{=}}Sprawa pozostaje wciąż (2013) nierozwiązana|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{#expr:{{CURRENTDAY}}-1}}}}}} * Gdy przedstawione informacje w tekście dezaktualizowały się. | _1 = {{OpakujKategorieZeSortowaniem|kategorie istnieją=tak|* {{Aktualizuj po|tekst=Sprawa pozostaje wciąż (2013) nierozwiązana|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{#expr:{{CURRENTDAY}}-1}}|typ jednostki=artykuł}}}} | 2 = <nowiki>*</nowiki> {{Tt|{{s|Aktualizuj po|tekst{{=}}Sprawa pozostaje wciąż (2013) nierozwiązana|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{#expr:{{CURRENTDAY}}+1}}}}}} * Gdy przedstawione informacje w tekście w przyszłości mogą się zdezaktualizować. | _2 = {{OpakujKategorieZeSortowaniem|kategorie istnieją=tak|* {{Aktualizuj po|tekst=Sprawa pozostaje wciąż (2013) nierozwiązana|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{#expr:{{CURRENTDAY}}+1}}|typ jednostki=artykuł}}}} }} ==== Szablony do zgłaszania błędów ==== {{EfektKodów | 1 = {{Tt|{{s|Zgłoś błąd|powód{{=}}Opis problemu|data{{=}}{{Czas|Y-m-d}}}}}} i jego przekierowanie {{Tt|{{s|ZB|powód{{=}}Opis problemu|data{{=}}{{Czas|Y-m-d}}}}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Zgłoś błąd|powód=Opis problemu|data={{Czas|Y-m-d}}|typ jednostki=artykuł}}}} | 2 = {{Tt|{{s|Status zgłoszenia|nowe}}}} | _2 = {{Status zgłoszenia|nowe}} }} === Szablony integracji i podziału === Zawiera szablony integracji, gdy dotyczy połączenia kilka artykułów w jeden artykuł, a także dzielenia, gdy artykuł dotyczy podzielenia na kilka artykułów. ==== Szablony integracji ==== {{EfektKodów | 1 = {{Tt|{{s|Integruj | Podręcznik 1/Artykuł 1 | Podręcznik 2/Artykuł 2 | uzasadnienie 1 {{=}} Należy sprawdzić, czy propozycja integracji pierwszej jednostki z tą jednostką jest zasadna | uzasadnienie 2 {{=}} Należy sprawdzić, czy propozycja integracji drugiej jednostki z tą jednostką jest zasadna | uzasadnienie {{=}} Należy sprawdzić, czy propozycja integracji jest zasadna }}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Integruj|Podręcznik 1/Artykuł 1|Podręcznik 2/Artykuł 2|uzasadnienie 1=Należy sprawdzić, czy propozycja integracji pierwszej jednostki z tą jednostką jest zasadna|uzasadnienie 2=Należy sprawdzić, czy propozycja integracji drugiej jednostki z tą jednostką jest zasadna|uzasadnienie=Należy sprawdzić, czy propozycja integracji jest zasadna|typ jednostki=artykuł|bez błędu=tak}}}} | 2 = {{Tt|{{s|Integruj z|cel{{=}}strona/podstrona}}}} * wstawiamy na stronę, do której należy dołączyć treść innej | _2 = {{OpakujKategorieZeSortowaniem|{{integruj z|cel=strona/podstrona|typ jednostki=artykuł|bez błędu=tak}}}} | 3 = {{Tt|{{s|integruj do|cel{{=}}strona/podstrona}}}} * wstawiamy na stronę, którą należy zlikwidować a jej treść włączyć do innej | _3 = {{OpakujKategorieZeSortowaniem|{{integruj do|cel=strona/podstrona|typ jednostki=artykuł|bez błędu=tak}}}} | 4 = {{Tt|{{s|Integrowanie|Podręcznik/Artykuł}}}} | _4 = {{OpakujKategorieZeSortowaniem|{{Integrowanie|Podręcznik/Artykuł|typ jednostki=artykuł|bez błędu=tak}}}} }} ===== Szablony integracji informacyjne ===== {{EfektKodów | 1 = {{Tt|{{s|Zintegrowany|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja{{=}}338449}}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Zintegrowany|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja=338449|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona}}}} }} ==== Szablony dzielenia ==== {{EfektKodów | 1 = {{Tt|{{s|Podziel | Podręcznik 1/Artykuł 1 | Podręcznik 2/Artykuł 2 | uzasadnienie 1 {{=}} Należy sprawdzić, czy propozycja podziału na pierwszą jednostkę z tej jednostki jest zasadna | uzasadnienie 2 {{=}} Należy sprawdzić, czy propozycja podziału na drugą jednostkę z tej jednostki jest zasadna | uzasadnienie {{=}} Należy sprawdzić, czy propozycja podziału jest zasadna }}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Podziel|Podręcznik 1/Artykuł 1|Podręcznik 2/Artykuł 2|uzasadnienie 1=Należy sprawdzić, czy propozycja podziału na pierwszą jednostkę z tej jednostki jest zasadna|uzasadnienie 2=Należy sprawdzić, czy propozycja podziału na drugą jednostkę z tej jednostki jest zasadna|uzasadnienie=Należy sprawdzić, czy propozycja podziału jest zasadna|typ jednostki=artykuł|bez błędu=tak}}}} | 2 = {{Tt|{{s|Wydziel | Podręcznik/Artykuł | fragmenty {{=}} zagadnienia XYZ | sekcja {{=}} tak | uzasadnienie {{=}} Należy sprawdzić, czy propozycja podziału jest zasadna }}}} | _2 = {{OpakujKategorieZeSortowaniem|{{Wydziel|Podręcznik/Artykuł|fragmenty=zagadnienia XYZ|sekcja=tak|uzasadnienie=Należy sprawdzić, czy propozycja podziału jest zasadna|typ jednostki=artykuł|bez błędu=tak}}}} | 3 = {{Tt|{{s|Podziel sekcję | Podręcznik/Artykuł | uzasadnienie {{=}} Należy sprawdzić, czy propozycja podziału sekcji jest zasadna}}}} | _3 = {{OpakujKategorieZeSortowaniem|{{Podziel sekcję|Podręcznik/Artykuł|uzasadnienie=Należy sprawdzić, czy propozycja podziału sekcji jest zasadna|typ jednostki=artykuł|bez błędu=tak}}}} }} ===== Szablony dzielenia informacyjne ===== {{EfektKodów | 1 = {{Tt|{{s|Wydzielony | Szczególna teoria względności/Teoria funkcji lagrangianu |wersja {{=}} 338449 }}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Wydzielony|Szczególna teoria względności/Teoria funkcji lagrangianu|wersja=338449|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona|bez błędu=tak}}}} }} ==== Szablony łączenia historii wielu stron w jedną historię danej strony ==== {{EfektKodów | 1 = {{Tt|{{s|Połącz | Podręcznik/Artykuł | Podręcznik/Artykuł2 | uzasadnienie {{=}} Należy sprawdzić, czy propozycja połączenia historii edycji jest zasadna }}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Połącz|Podręcznik/Artykuł|Podręcznik/Artykuł2|uzasadnienie=Należy sprawdzić, czy propozycja połączenia historii edycji jest zasadna|typ jednostki=artykuł|bez błędu=tak}}}} }} === Szablony typowo informacyjne === {{EfektKodów | 1 = {{Tt|{{s|Przetłumaczony|kod języka{{=}}en|kod projektu{{=}}w|Statistical physics}}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Przetłumaczony|kod języka=en|kod projektu=w|Statistical physics|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona}}|kategorie istnieją=tak}} | 2 = {{Tt|{{s|Przetłumaczona metastrona|en|Wikibooks:No original research}}}} | _2 = {{Przetłumaczona metastrona|en|Wikibooks:No original research}} }} === Szablony problemów subtelnych podręcznikowych === {{EfektKodów | 1 = {{tt|{{S|POV}}}} | _1 = {{POV}} }} === Szablony pozwoleń wykorzystane na stronach dyskusji stron podręczników === {{EfektKodów|kod-rozmiar=40% | 1 = {{Tt|{{s|OTRS|2021031710013151|nazwa przestrzeni nazw{{=}}Talk|nazwa jednostki{{=}}Wstępna charakterystyka bakteriofaga Serratia φOS10/Materiały/Bufory i roztwory}}}} * W użyciu nie trzeba używać parametrów pudełkowych, wystarczy sam numer OTRS. * Numer OTRS powinien zgadzać się z podręcznikiem, a tutaj rzeczywiście tak jest według parametrów pudełkowych modułu {{m|Pudełko}}, bo inaczej to wywoła fitr nadużyć. | _1 = {{OpakujKategorieZeSortowaniem|{{OTRS|2021031710013151|nazwa przestrzeni nazw=Talk|nazwa jednostki=Wstępna charakterystyka bakteriofaga Serratia φOS10/Materiały/Bufory i roztwory}}}} }} == Konserwacja == {{EfektKodów | 1 = {{tt|{{s|WEdycji}}}} | _1 = {{OpakujKategorieZeSortowaniem|{{WEdycji|typ jednostki=artykuł}}}} | 2 = {{Tt|{{s|W edycji|30 minut w celu poprawienia informacji w sekcji Historia}}}} | _2 = {{OpakujKategorieZeSortowaniem|{{W edycji|30 minut w celu poprawienia informacji w sekcji Historia|typ jednostki=artykuł}}}} | 3 = {{Tt|{{s|W edycji 2|Michał Sobkowski}}}} | _3 = {{OpakujKategorieZeSortowaniem|{{W edycji 2|Michał Sobkowski|typ jednostki=artykuł}}}} | 4 = {{Tt|{{s|W trakcie tworzenia}}}} | _4 = {{W trakcie tworzenia}} | 5 = {{Tt|{{s|W trakcie tworzenia 1|jakiś użytkownik}}}} | _5 = {{W trakcie tworzenia 1|jakiś użytkownik}} | 6 = {{Tt|{{s|TODO|co zrobić}}}} | _6 = {{TODO|co zrobić}} | 7 = {{Tt|{{s|Potrzebna ilustracja|opis{{=}}obrazek}}}} i jego przekierowanie {{Tt|{{s|PicRequest|opis{{=}}obrazek}}}} * wstawiamy w miejscu, gdzie ma znaleźć się ilustracja | _7 = {{OpakujKategorieZeSortowaniem|{{Potrzebna ilustracja|opis=obrazek}}}} | 8 = {{Tt|{{s|Sek-stub}}}} i jego przekierowanie {{Tt|{{S|RDoZrobienia}}}} * do wstawiania w sekcji * stosować tylko w artykułach, w których większość tekstu jest napisana | _8 = {{Sek-stub}} }} {{BrClear}} <noinclude>{{Kategoria|Wizualne opisy techniczne szablonów}}</noinclude> p78sfuv0rs83zmmip4mvuny62rswjae 548287 548286 2026-07-25T12:53:40Z Persino 2851 548287 wikitext text/x-wiki <noinclude>{{Autonawigacja|Pomoc:Spis treści}}</noinclude> == Porządki == Szablony dzielące artykuły, przyporządkując stronę do jakieś kategorii w przestrzeni nazw {{Np|Category|link=tak}}. === Szablony zgłaszające mankamenty === Te szablony dzielimy na szablony do zgłaszania problemów (nie błędów) ogólnych i szczególnych. Też tutaj zaliczamy szablony do zgłaszania za to błędów, do których zaliczamy min. szablon {{Tt|{{s|ZB}}}} ({{Tt|{{s|Zgłoś błąd}}}}). ==== Szablony do zgłaszania problemów ==== Przedstawione tutaj szablony są do zgłaszania problemów. ===== Ogólno-problematyczne szablony dopracowania artykułów podręcznikowych ===== {{EfektKodów | 1 = {{Tt|{{s|Dopracować|powód|więcej przypisów{{=}}{{Czas|Y-m}}}}}} i jego przekierowania: {{s|DoPracowania|powód|więcej przypisów{{=}}{{Czas|Y-m}}}}{{•}} {{s|Cleanup|powód|więcej przypisów{{=}}{{Czas|Y-m}}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Dopracować|powód|więcej przypisów={{Czas|Y-m}}|typ jednostki=artykuł}}}} | 2 = {{Tt|{{s|Dopracować2|powód}}}} | _2 = {{OpakujKategorieZeSortowaniem|{{Dopracować2|powód|typ jednostki=artykuł}}}} }} ===== Szczególno-problematyczne szablony dopracowania artykułów podręcznikowych ===== Szablony do zgłaszania szczególnych problemów w artykułach podręcznikowych, wskazujące jakieś problemy, które należy naprawić, by się wszystko zgadzało. ====== Weryfikalność ====== {{EfektKodów | 1 = {{Tt|{{s|Brak strony}}}} * Ten szablon służy do dodawania prośby o podanie numeru strony lub zakresu stron w książce, czasopiśmie lub innym wydawnictwie. | _1 = {{OpakujKategorieZeSortowaniem|{{Brak strony|typ jednostki=artykuł}}}} | 2 = {{Tt|{{s|Fakt|Wątpliwa informacja|data{{=}}{{Czas|Y-m}}}}}} * Szablon ten należy umieścić w artykule w miejscu, gdzie ze względu na niepodpartą źródłami treść powinien znajdować się {{lpp|Przypisy|przypis bibliograficzny}}. | _2 = {{OpakujKategorieZeSortowaniem|{{Fakt|Wątpliwa informacja|data={{Czas|Y-m}}|typ jednostki=artykuł}}|kategorie istnieją=tak}} | 3 = {{Tt|{{s|Niewiarygodne źródło|data{{=}}{{Czas|Y-m}}}}}} * Szablon ten należy umieścić w artykule obok odnośnika bibliograficznego do nierzetelnego źródła | _3 = {{OpakujKategorieZeSortowaniem|{{Niewiarygodne źródło|data={{Czas|Y-m}}|typ jednostki=artykuł}}|kategorie istnieją=tak}} | 4 = {{Tt|{{s|Nie w źródle}}}} * Wstawiamy w treści artykułu, bezpośrednio po odnośniku do źródła (pozycji bibliograficznej, przypisu), które nie zawiera informacji, którą rzekomo ma potwierdzać. | _4 = {{OpakujKategorieZeSortowaniem|{{Nie w źródle|typ jednostki=artykuł}}}} | 5 = {{Tt|{{s|Martwy link}}}} * Ten szablon używany jest do oznaczania źródeł internetowych zawierających {{lpg|martwy link|martwe linki}}. | _5 = {{OpakujKategorieZeSortowaniem|{{Martwy link|typ jednostki=artykuł}}}} | 6 = {{Tt|{{s|Wątpliwe}}}} * Szablon należy umieścić w artykule przy fragmencie tekstu, który wydaje się wątpliwy i wymaga weryfikacji, pomimo umieszczenia przy nim {{lpp|Przypisy|przypisów}} (a inne {{ls|Szablony problemów umieszczane w tekście|szablony problemów umieszczanych w tekście}} nie są adekwatne). | _6 = {{OpakujKategorieZeSortowaniem|{{Wątpliwe|typ jednostki=artykuł}}}} }} ====== Podręcznikowość ====== {{EfektKodów | 1 = {{Tt|{{s|Czy to ważne}}}} * Służy on do oznaczania zdań lub wyrażeń, które wydają się nie mieć związku z głównym tematem strony, czyli czynią z niego {{lpr|NIEŁAD|bezładny zbiór informacji}}. | _1 = {{OpakujKategorieZeSortowaniem|{{Czy to ważne|typ jednostki=artykuł}}}} }} ====== Wyrażenia zwodnicze ====== {{EfektKodów | 1 = {{Tt|{{s|Doprecyzuj|data{{=}}2017-01|wymaga doprecyzowania}}}} * Szablon służy do oznaczania fragmentów stron, które są: niezrozumiałe lub zbyt ogólne i wymagają podania dodatkowych informacji. | _1 = {{OpakujKategorieZeSortowaniem|{{Doprecyzuj|data=2017-01|wymaga doprecyzowania|typ jednostki=artykuł}}|kategorie istnieją=tak}} | 2 = {{Tt|{{s|Czyim}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć czyim, np. imieniem to zostało nazwane. | _2 = {{OpakujKategorieZeSortowaniem|{{Czyim|typ jednostki=artykuł}}}} | 3 = {{Tt|{{s|Kto}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, kto daną rzecz stworzył. | _3 = {{OpakujKategorieZeSortowaniem|{{Kto|typ jednostki=artykuł}}}} | 4 = {{Tt|{{s|Przez kogo}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, przez kogo to zastało stworzone, wypowiedziane itp. | _4 = {{OpakujKategorieZeSortowaniem|{{Przez kogo|typ jednostki=artykuł}}}} | 5 = {{Tt|{{s|Według kogo}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, według kogo ta jest. | _5 = {{OpakujKategorieZeSortowaniem|{{Według kogo|typ jednostki=artykuł}}}} | 6 = {{Tt|{{s|Jaka}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, o jaką daną rzecz chodzi. | _6 = {{OpakujKategorieZeSortowaniem|{{Jaka|typ jednostki=artykuł}}}} | 7 = {{Tt|{{s|Jakich}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, o jakie dane rzeczy chodzi. | _7 = {{OpakujKategorieZeSortowaniem|{{Jakich|typ jednostki=artykuł}}}} | 8 = {{Tt|{{s|Gdzie}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, gdzie dana rzecz występuje. | _8 = {{OpakujKategorieZeSortowaniem|{{Gdzie|typ jednostki=artykuł}}}} | 9 = {{Tt|{{s|Kiedy}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, kiedy dana rzecz występuje. | _9 = {{OpakujKategorieZeSortowaniem|{{Kiedy|typ jednostki=artykuł}}}} | 10 = {{Tt|{{s|Od kiedy}}}} * Służy on do oznaczania miejsc, gdzie zapomniano wspomnieć, od kiedy dana rzecz występuje. | _10= {{OpakujKategorieZeSortowaniem|{{Od kiedy|typ jednostki=artykuł}}}} }} ====== Twórczość własna ====== {{EfektKodów | 1 = {{Tt|{{s|Or}}}} * Używany w sytuacjach, gdzie w projekcie autor ({{Np|User|link=tak}}) przedstawia swoją twórczość własną. | _1 = {{OpakujKategorieZeSortowaniem|{{Or|typ jednostki=artykuł}}}} }} ====== Aktualność ====== {{EfektKodów | 1 = <nowiki>*</nowiki> {{Tt|{{s|Aktualizuj po|tekst{{=}}Sprawa pozostaje wciąż (2013) nierozwiązana|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{#expr:{{CURRENTDAY}}-1}}}}}} * Gdy przedstawione informacje w tekście dezaktualizowały się. | _1 = {{OpakujKategorieZeSortowaniem|kategorie istnieją=tak|* {{Aktualizuj po|tekst=Sprawa pozostaje wciąż (2013) nierozwiązana|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{#expr:{{CURRENTDAY}}-1}}|typ jednostki=artykuł}}}} | 2 = <nowiki>*</nowiki> {{Tt|{{s|Aktualizuj po|tekst{{=}}Sprawa pozostaje wciąż (2013) nierozwiązana|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{#expr:{{CURRENTDAY}}+1}}}}}} * Gdy przedstawione informacje w tekście w przyszłości mogą się zdezaktualizować. | _2 = {{OpakujKategorieZeSortowaniem|kategorie istnieją=tak|* {{Aktualizuj po|tekst=Sprawa pozostaje wciąż (2013) nierozwiązana|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{#expr:{{CURRENTDAY}}+1}}|typ jednostki=artykuł}}}} }} ==== Szablony do zgłaszania błędów ==== {{EfektKodów | 1 = {{Tt|{{s|Zgłoś błąd|powód{{=}}Opis problemu|data{{=}}{{Czas|Y-m-d}}}}}} i jego przekierowanie {{Tt|{{s|ZB|powód{{=}}Opis problemu|data{{=}}{{Czas|Y-m-d}}}}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Zgłoś błąd|powód=Opis problemu|data={{Czas|Y-m-d}}|typ jednostki=artykuł}}}} | 2 = {{Tt|{{s|Status zgłoszenia|nowe}}}} | _2 = {{Status zgłoszenia|nowe}} }} === Szablony integracji i podziału === Zawiera szablony integracji, gdy dotyczy połączenia kilka artykułów w jeden artykuł, a także dzielenia, gdy artykuł dotyczy podzielenia na kilka artykułów. ==== Szablony integracji ==== {{EfektKodów | 1 = {{Tt|{{s|Integruj | Podręcznik 1/Artykuł 1 | Podręcznik 2/Artykuł 2 | uzasadnienie 1 {{=}} Należy sprawdzić, czy propozycja integracji pierwszej jednostki z tą jednostką jest zasadna | uzasadnienie 2 {{=}} Należy sprawdzić, czy propozycja integracji drugiej jednostki z tą jednostką jest zasadna | uzasadnienie {{=}} Należy sprawdzić, czy propozycja integracji jest zasadna }}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Integruj|Podręcznik 1/Artykuł 1|Podręcznik 2/Artykuł 2|uzasadnienie 1=Należy sprawdzić, czy propozycja integracji pierwszej jednostki z tą jednostką jest zasadna|uzasadnienie 2=Należy sprawdzić, czy propozycja integracji drugiej jednostki z tą jednostką jest zasadna|uzasadnienie=Należy sprawdzić, czy propozycja integracji jest zasadna|typ jednostki=artykuł|bez błędu=tak}}}} | 2 = {{Tt|{{s|Integruj z|cel{{=}}strona/podstrona}}}} * wstawiamy na stronę, do której należy dołączyć treść innej | _2 = {{OpakujKategorieZeSortowaniem|{{integruj z|cel=strona/podstrona|typ jednostki=artykuł|bez błędu=tak}}}} | 3 = {{Tt|{{s|integruj do|cel{{=}}strona/podstrona}}}} * wstawiamy na stronę, którą należy zlikwidować a jej treść włączyć do innej | _3 = {{OpakujKategorieZeSortowaniem|{{integruj do|cel=strona/podstrona|typ jednostki=artykuł|bez błędu=tak}}}} | 4 = {{Tt|{{s|Integrowanie|Podręcznik/Artykuł}}}} | _4 = {{OpakujKategorieZeSortowaniem|{{Integrowanie|Podręcznik/Artykuł|typ jednostki=artykuł|bez błędu=tak}}}} }} ===== Szablony integracji informacyjne ===== {{EfektKodów | 1 = {{Tt|{{s|Zintegrowany|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja{{=}}338449}}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Zintegrowany|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja=338449|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona}}}} }} ==== Szablony dzielenia ==== {{EfektKodów | 1 = {{Tt|{{s|Podziel | Podręcznik 1/Artykuł 1 | Podręcznik 2/Artykuł 2 | uzasadnienie 1 {{=}} Należy sprawdzić, czy propozycja podziału na pierwszą jednostkę z tej jednostki jest zasadna | uzasadnienie 2 {{=}} Należy sprawdzić, czy propozycja podziału na drugą jednostkę z tej jednostki jest zasadna | uzasadnienie {{=}} Należy sprawdzić, czy propozycja podziału jest zasadna }}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Podziel|Podręcznik 1/Artykuł 1|Podręcznik 2/Artykuł 2|uzasadnienie 1=Należy sprawdzić, czy propozycja podziału na pierwszą jednostkę z tej jednostki jest zasadna|uzasadnienie 2=Należy sprawdzić, czy propozycja podziału na drugą jednostkę z tej jednostki jest zasadna|uzasadnienie=Należy sprawdzić, czy propozycja podziału jest zasadna|typ jednostki=artykuł|bez błędu=tak}}}} | 2 = {{Tt|{{s|Wydziel | Podręcznik/Artykuł | fragmenty {{=}} zagadnienia XYZ | sekcja {{=}} tak | uzasadnienie {{=}} Należy sprawdzić, czy propozycja podziału jest zasadna }}}} | _2 = {{OpakujKategorieZeSortowaniem|{{Wydziel|Podręcznik/Artykuł|fragmenty=zagadnienia XYZ|sekcja=tak|uzasadnienie=Należy sprawdzić, czy propozycja podziału jest zasadna|typ jednostki=artykuł|bez błędu=tak}}}} | 3 = {{Tt|{{s|Podziel sekcję | Podręcznik/Artykuł | uzasadnienie {{=}} Należy sprawdzić, czy propozycja podziału sekcji jest zasadna}}}} | _3 = {{OpakujKategorieZeSortowaniem|{{Podziel sekcję|Podręcznik/Artykuł|uzasadnienie=Należy sprawdzić, czy propozycja podziału sekcji jest zasadna|typ jednostki=artykuł|bez błędu=tak}}}} }} ===== Szablony dzielenia informacyjne ===== {{EfektKodów | 1 = {{Tt|{{s|Wydzielony | Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu |wersja {{=}} 338449 }}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja=338449|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona|bez błędu=tak}}}} }} ==== Szablony łączenia historii wielu stron w jedną historię danej strony ==== {{EfektKodów | 1 = {{Tt|{{s|Połącz | Podręcznik/Artykuł | Podręcznik/Artykuł2 | uzasadnienie {{=}} Należy sprawdzić, czy propozycja połączenia historii edycji jest zasadna }}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Połącz|Podręcznik/Artykuł|Podręcznik/Artykuł2|uzasadnienie=Należy sprawdzić, czy propozycja połączenia historii edycji jest zasadna|typ jednostki=artykuł|bez błędu=tak}}}} }} === Szablony typowo informacyjne === {{EfektKodów | 1 = {{Tt|{{s|Przetłumaczony|kod języka{{=}}en|kod projektu{{=}}w|Statistical physics}}}} | _1 = {{OpakujKategorieZeSortowaniem|{{Przetłumaczony|kod języka=en|kod projektu=w|Statistical physics|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona}}|kategorie istnieją=tak}} | 2 = {{Tt|{{s|Przetłumaczona metastrona|en|Wikibooks:No original research}}}} | _2 = {{Przetłumaczona metastrona|en|Wikibooks:No original research}} }} === Szablony problemów subtelnych podręcznikowych === {{EfektKodów | 1 = {{tt|{{S|POV}}}} | _1 = {{POV}} }} === Szablony pozwoleń wykorzystane na stronach dyskusji stron podręczników === {{EfektKodów|kod-rozmiar=40% | 1 = {{Tt|{{s|OTRS|2021031710013151|nazwa przestrzeni nazw{{=}}Talk|nazwa jednostki{{=}}Wstępna charakterystyka bakteriofaga Serratia φOS10/Materiały/Bufory i roztwory}}}} * W użyciu nie trzeba używać parametrów pudełkowych, wystarczy sam numer OTRS. * Numer OTRS powinien zgadzać się z podręcznikiem, a tutaj rzeczywiście tak jest według parametrów pudełkowych modułu {{m|Pudełko}}, bo inaczej to wywoła fitr nadużyć. | _1 = {{OpakujKategorieZeSortowaniem|{{OTRS|2021031710013151|nazwa przestrzeni nazw=Talk|nazwa jednostki=Wstępna charakterystyka bakteriofaga Serratia φOS10/Materiały/Bufory i roztwory}}}} }} == Konserwacja == {{EfektKodów | 1 = {{tt|{{s|WEdycji}}}} | _1 = {{OpakujKategorieZeSortowaniem|{{WEdycji|typ jednostki=artykuł}}}} | 2 = {{Tt|{{s|W edycji|30 minut w celu poprawienia informacji w sekcji Historia}}}} | _2 = {{OpakujKategorieZeSortowaniem|{{W edycji|30 minut w celu poprawienia informacji w sekcji Historia|typ jednostki=artykuł}}}} | 3 = {{Tt|{{s|W edycji 2|Michał Sobkowski}}}} | _3 = {{OpakujKategorieZeSortowaniem|{{W edycji 2|Michał Sobkowski|typ jednostki=artykuł}}}} | 4 = {{Tt|{{s|W trakcie tworzenia}}}} | _4 = {{W trakcie tworzenia}} | 5 = {{Tt|{{s|W trakcie tworzenia 1|jakiś użytkownik}}}} | _5 = {{W trakcie tworzenia 1|jakiś użytkownik}} | 6 = {{Tt|{{s|TODO|co zrobić}}}} | _6 = {{TODO|co zrobić}} | 7 = {{Tt|{{s|Potrzebna ilustracja|opis{{=}}obrazek}}}} i jego przekierowanie {{Tt|{{s|PicRequest|opis{{=}}obrazek}}}} * wstawiamy w miejscu, gdzie ma znaleźć się ilustracja | _7 = {{OpakujKategorieZeSortowaniem|{{Potrzebna ilustracja|opis=obrazek}}}} | 8 = {{Tt|{{s|Sek-stub}}}} i jego przekierowanie {{Tt|{{S|RDoZrobienia}}}} * do wstawiania w sekcji * stosować tylko w artykułach, w których większość tekstu jest napisana | _8 = {{Sek-stub}} }} {{BrClear}} <noinclude>{{Kategoria|Wizualne opisy techniczne szablonów}}</noinclude> 4d1piamebk6s9lwoczt8j5xysozyp5w Ogólna teoria względności/Wprowadzenie do ogólnej teorii względności 0 14454 548293 513504 2026-07-25T13:09:32Z Persino 2851 548293 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> '''Ogólna teoria względności''' jest współczesną teorią, która opisuje grawitację w sposób bardziej dokładny niż teoria grawitacji Newtona, która jest on opisana przez: {{CentrujWzór|<MATH>\vec{F}_{AB}=-G{{m_1m_2}\over{r^2}}{{\vec{r}}\over{r}}</MATH>|1.1}} * gdzie {{Formuła|<MATH>\vec F_{AB}</MATH>}} siła grawitacji działa wzdłuż wektora {{Formuła|<MATH>\vec{r}</MATH>}} (jest to różnica położenia ciała B i ciała A), która charakteryzuje oddziaływanie ciała A na ciało B, ale o zwrocie przeciwnym niż wektor położenia ciała B względem ciała A. == Postulaty teorii względności == '''Postulat pierwszy''' - jest uogólnienie zasady Galileusza, ale też i Einsteina ze szczególnej teorii względności, że układy poruszające się z przyspieszeniem zerowym lub mającym pewną wartość, to w tych układach spełnione są prawa fizyki. '''Postulat drugi''' - prędkość światła jest taka sama we wszystkich układach odniesienia, nawet w tych układach poruszających się z pewnym niezerowym przyspieszeniem. == Elementy ogólnej teorii względności == Szczególna teoria względności wyróżnia pewne klasy układów odniesienia zwanych układami inercjalnymi. Szczególna teoria nie ma grawitacji, więc należy sformułować tak nową teorię (OTW), by wszystkie układy odniesienia były równoprawne i zawierały grawitację. === Zasady równoważności === Przedstawimy tutaj słabą i silną zasadę równoważności. ==== Słaba zasada równoważności ==== Obserwator znajduje na Ziemi, i zauważa, że na niego działa jakaś siła grawitacji, która wywołuje siła ciężkości działająca na nasze ciało. Innym razem obserwator znajduje się w kosmosie w rakiecie, która porusza się z przyspieszeniem {{Formuła|<MATH>\vec{a}=\vec{g}</MATH>}} w sposób płynny, on nie zauważa żadnej różnicy, między układem na Ziemi czy w rakiecie, czyli który układ jest inercjalny? A zatem jeśli założymy, że nasz układ jest inercjalny, to pochodne cząstkowe elementów tensora metrycznego są równe zero. Ale w myśl tej zasady również układy nieinercjalne są nierozróżnialne od inercjalnych. A zatem prawa wyprowadzone dla układów inercjalnym powinny być słuszne też w nieinercjalnych układach odniesienia. Tzn.: pochodną cząstkową zwykłą zastępujemy pochodną tensorową, bo symbole Christoffela są równe zero, a następnie w myśl tej zasady można uogólnić otrzymane prawa na układy również nieinercjalne, w których symbole Christoffela nie muszą się zerować. ==== Silna zasada równoważności ==== Każde prawo fizyczne w sformułowane w szczególnej teorii względności w postaci tensorowej w układzie lokalnie płaskim (inercjalnym) ma taką samą postać w ogólnej teorii względności, czyli w czasoprzestrzeni zakrzywionej. === Czasoprzestrzeń w ogólnej teorii względności === Czasoprzestrzeń jest czterowymiarową przestrzenią absolutną z trójwymiarową przestrzenią znanej z mechaniki Newtona i czwartą współrzędną zwanej współrzędną czasową. Metryka w czasoprzestrzeni może przybierać postać lorentzowską, przez obranie układu inercjalnego, który jest układem lokalnie płaskim w danym punkcie przestrzeni. === Kontrawariantny czterowektor położenia === Kontrawariantnym czterowektorem położenia w ogólnej teorii względności nazywamy wektor: {{CentrujWzór|<MATH>x^{\mu}=(ct,x,y,z)\;</MATH>|1.2}} === Sygnatura dodatnia i ujemna === Sygnatura (1,-1,-1,-1) tensora metrycznego Minkowskiego jest w lokalnej płaskości czasoprzestrzeni zakrzywionej, o tej sygnaturze jest tensor metryczny przedstawiony w równaniu {{LinkWzór|1.3}}, tą '''sygnaturę''' nazywamy '''dodatnią''', a sygnaturę (-1,1,1,1), czyli nazywamy ją '''ujemną''', która występuje w równaniu {{LinkWzór|1.3G}}. === Interwał czasoprzestrzenny === Interwał czasoprzestrzenny w ogólnej teorii względności przedstawiamy w analogii do interwału szczególnej teorii względności, w której zastąpujemy tensory metryczne Minkowskiego innymi tensorami metrycznymi, które w ogólności nie są diagonalne, a kwadrat interwału czasoprzestrzennego przy sygnaturze tensora metrycznego Minkowskiego dodatniej i ujemnej przedstawiają się kolejno: {{ElastycznyWiersz|{{CentrujWzór|<MATH>ds^2=\sum^3_{\mu,\nu=0}g_{\mu\nu}dx^{\mu}dx^{\nu}\;</MATH>|1.3}}|{{CentrujWzór|<MATH>ds^2=-\sum^3_{\mu,\nu=0}g_{\mu\nu}dx^{\mu}dx^{\nu}\;</MATH>|1.3G}}}} * gdzie: {{Formuła|<MATH>g_{\mu\nu}\;</MATH>}}, to tensor metryczny. Udowodnimy, że jeśli w jednym układzie współrzędnym metrykę przedstawiamy wedle sposobu {{LinkWzór|1.3}}, to w innym w układzie współrzędnym kwadrat różniczki interwału czasoprzestrzennego pozostaje niezmienny, zatem to udowodnijmy, stosując tym razem konwencję Einsteina: {{CentrujWzór|<MATH>ds^2=\pm g_{\mu\nu}dx^{\mu}dx^{\nu}=\pm g_{\mu\nu}{\Lambda^{\mu}}_{\alpha}d{x^'}^{\alpha}{\Lambda^{\nu}}_{\beta}d{x^'}^{\beta}=\pm\underbrace{g_{\mu\nu}{\Lambda^{\mu}}_{\alpha}{\Lambda^{\nu}}_{\beta}}_{{g^'}_{\alpha\beta}}d{x^'}^{\alpha}d{x^'}^{\beta}=\pm{g^'}_{\alpha\beta}d{x^'}^{\alpha}d{x^'}^{\beta}\;</MATH>|1.4}} *Wzgledem sygnatury (drugiej) przedstawionej w {{LinkWzór|1.3G}} dowód przedbiega podobnie jak dla pierwszej sygnatury według {{LinkWzór|1.4}}. Na podstawie dowodu {{LinkWzór|1.4}} kwadrat różniczki interwału czasoprzestrzennego jest niezmiennikiem, tzn. jego infinitezymalna wartość nie zależy od wyboru układu współrzędnych, tzn. nie zależy względem jakich współrzędnych liczymy naszą metrykę. Kwadrat różniczki interwału czasoprzestrzennego {{LinkWzór|1.3}} jest większy od zera, gdy mamy do czynienia z cząstką o masie spoczynkowej różnej od zera, natomiast dla fotonów lub dla cząstek o masie spoczynkowej równej zero, to kwadrat różniczki interwału czasoprzestrzennego jest równy zero. Przykładem tensora metrycznego jest tensor metryczny w przestrzeni Minkowskiego (czasoprzestrzeni Einsteina w czterowymiarowej czasoprzestrzeni) znany w płaskiej przestrzeni, w której nie ma pola grawitacyjnego, którego postać można napisać dla obu sygnatur (sygnatura dodatnia - {{LinkWzór|1.5}}, sygnatura ujemna - {{LinkWzór|1.5r}}): {{ElastycznyWiersz|{{CentrujWzór|<MATH>\eta_{\mu\nu}=\begin{bmatrix} 1&0&0&0\\ 0&-1&0&0\\ 0&0&-1&0\\ 0&0&0&-1 \end{bmatrix}</MATH>|1.5}}|{{CentrujWzór|<MATH>\eta_{\mu\nu}=\begin{bmatrix} -1&0&0&0\\ 0&1&0&0\\ 0&0&1&0\\ 0&0&0&1 \end{bmatrix}</MATH>|1.5r}}}} Dla tensora metrycznego {{LinkWzór|1.5}} (sygnatura dodatnia) i {{LinkWzór|1.5r}} (sygnatura ujemna) interwał czasoprzestrzenny obliczony według {{LinkWzór|1.3}}, tzn. w szczególnej teorii względności, jest napisany: {{CentrujWzór|<MATH>ds^2=c^2dt^2-dx^2-dy^2-dz^2\;</MATH>|1.6}} Interwał {{LinkWzór|1.6}} jest podstawą szczególnej teorii względności. Widzimy, że w powyższym interwale współrzędne przestrzenne są na równi sobie, niezależne z jakimi mamy do czynienia współrzędnymi przestrzennymi, współrzędna czasowa w tym interwale jest wyróżniona, czas w metrach (ct) jest iloczynem prędkości światła i czasu w sekundach. === Czterowektor prędkości === Czterowektorem prędkości zdefiniowanej jako pochodną kontrawariantnego czterowektora położenia względem interwału czasoprzestrzennego {{LinkWzór|1.3}} nazywamy wielkość zdefiniowaną: {{CentrujWzór|<MATH>u^{\mu}={{dx^{\mu}}\over{ds}}\;</MaTH>|1.7}} Wielkość {{Formuła|<MATH>s\;</MATH>}} jest to jest interwał czasoprzestrzenny dla cząstek o masie spoczynkowej różnej od zera i dla cząstek o masie spoczynkowej równej zero. === Czterowektor pędu === Czterowektorem pędu nazywamy wielkość zdefiniowaną: {{CentrujWzór|<MATH>p^{\mu}=m_0cu^{\mu}\;</MaTH>|1.8}} === Czterowektor pędu a masa spoczynkowa cząstki === Jeśli będziemy korzystali ze wzoru {{LinkWzór|1.3}} (sygnatura dodatnia) i {{LinkWzór|1.3G}} (sygnatura ujemna), to je można równoważnie razem zapisać w sposób najpierw dzieląc obustronnie przez kwadrat różniczki interwału czasoprzestrzennego (cząstki o masie spoczynkowej różnej od zera) dla obu sygnatur, tzn.: dla sygnatury dodatniej (znak u góry) i ujemnej (znak u dołu): {{CentrujWzór|<MATH>1=\pm g_{\mu\nu}u^{\mu}u^{\nu}\Rightarrow \pm 1=u_{\mu}u^{\mu}\Rightarrow \pm 1={{dx_{\mu}}\over{ds}}{{dx^{\mu}}\over{ds}}\;</MATH>|1.9}} Gdy mamy cząstkę o masie spoczynkową równej zero, wtedy musimy podzielić równanie {{LinkWzór|1.3}} obustronnie przez kwadrat różniczki dowolnego parametru &lambda;, wtedy czterowektor prędkości definiujemy podobnie jak dla cząstki masowej, wtedy otrzymujemy równanie inne niż {{LinkWzór|1.9}}: {{CentrujWzór|<MATH>{{ds^2}\over{d\lambda^2}}=\pm g_{\mu\nu}{{dx^{\mu}}\over{d\lambda}}{{dx^{\nu}}\over{d\lambda}}\Rightarrow \pm {{ds^2}\over{d\lambda^2}}={{dx_{\nu}}\over{d\lambda}}{{dx^{\nu}}\over{d\lambda}}\;</Math>|1.10}} Równanie {{LinkWzór|1.9}} wymnażamy obustronnie przez wyrażenie (m{{Sub|0}}c){{Sup|2}}, korzystając z definicji czterowektora pędu {{LinkWzór|1.8}}, dostajemy inne równoważne do {{LinkWzór|1.9}} równanie w postaci dla sygnatury dodatniej (znak u góry) i ujemnej (znak u dołu): {{CentrujWzór|<MATH>p_{\mu}p^{\mu}=\pm m_0^2c^2\;</Math>|1.11}} Jak udowodniliśmy równanie {{LinkWzór|1.11}} jest słuszne tylko dla cząstek o masie spoczynkowej różnej od zera, ale równanie {{LinkWzór|1.11}} możemy uogólnić dla cząstek o wszystkich masach spoczynkowych. Równość {{LinkWzór|1.11}} możemy napisać dla układów rozciągłych w postaci: {{CentrujWzór|<MATH>\mathfrak p_{\mu}\mathfrak p^{\mu}=\mp g\gamma^2\left({{dm_0}\over{dV_0}}\right)^2c^2\Rightarrow \mathfrak p_{\mu}\mathfrak p^{\mu}=\mp g\gamma^2c^2\rho_0^2\;</MATH>|KJH1}} === Infinitezymalny czas własny i infinitezymalna długość własna === Infinitezymalnym czasem własnym mierzoną przez zegary w ogólnej teorii względności nazywamy wielkość, który dany obserwator doświadczający dwóch zdarzeń bliskich w czasie doświadcza w układzie własnym, że dla niego czas w układzie w którym cząstka spoczywa (układ własny) jest mierzony w zależności od czasu w układzie, w którym cząstka porusza się: {{CentrujWzór|<MATH>d\tau={{1}\over{c}}\sqrt{g_{\mu\nu}dx^{\mu}dx^{\nu}}={{1}\over{c}}\sqrt{dx_{\mu}dx^{\mu}}\;</MATH>|1.12}} Infinitezymalną długością własną mierzoną przez pręty między dwoma sąsiednimi punktami nazywamy długość zdefiniowaną: {{CentrujWzór|<MATH>dl=\sqrt{-g_{\mu\nu}dx^{\mu}dx^{\nu}}=\sqrt{-dx_{\mu}dx^{\mu}}\;</MATH>|1.13}} Długość własna w układzie własnym spoczywającym jest równa długości pręta w układzie spoczywającym, tzn. w układzie współrzędnym. gdy długość pręta między oba jego końcami mierzymy w tym samym czasie współrzędnościowym, czyli dla spoczywającego pręta względem układu dla pręta poruszającego się. Odpowiednie infinitezymalne czasy własne między dwoma zdarzeniami i infinitezymalne długości własne dwóch sąsiednich zdarzeń istnieją, jeśli pod pierwiastki są wielkości infinitezymalne, ale dodatnie. Niezmienniczość {{LinkWzór|1.12}} i {{LinkWzór|1.13}}, które można je liczyć w dowolnym układzie współrzędnym, można tak samo udowodnić, jak przy dowodzie na niezmienniczość interwału czasoprzestrzennego (dowód {{LinkWzór|1.4}}). === Nieinercjalne układy odniesienia a czasoprzestrzeń === ==== Przykład - układ rotujący ze stałą prędkością kątową ω ==== Teraz przedstawmy układ rotujący ze stałą prędkością z częstotliwością kołową: {{Formuła|<MATH>\omega\;</MATH>}}, to jego wartość prędkości w zależności od częstotliwości kołowej i promienia od pewnego punktu względem którego następuje obrót ma się jako według wzoru {{Formuła|<MATH>v=\omega r\;</MATH>}}, to jego interwał czasoprzestrzenny w zależności od interwału czasoprzestrzennego w układzie inercjalnym przestawiam się: {{CentrujWzór|<MAth>d\tau^2=\left(1-{{v^2}\over{c^2}}\right)c^2dt=\left(1-{{\omega^2r^2}\over{c^2}}\right)c^2dt^2\;</MATH>|1.14}} W układzie nieinercjalnym ciało rotujące jest w spoczynku, jeśli na układ działa siła odśrodkowa, to: {{Formuła|<MATH>F_0=-m\omega^2 r\;</MATH>}}, to można powiedzieć, że ta siła równoważy siła grawitacji, według teorii równoważności. To energia kinetyczna ciała obracającego ma się jako: {{Formuła|<MATH>E_k={{m\omega^2r^2}\over{2}}\;</MATH>}}, a energia potencjalna w układzie nieinercjalnym ma się jako:{{Formuła|<MATh>E_p=\varphi m\;</MATH>}} Można przyjąć, że w takim układzie całkowita energia mechaniczna, czyli suma energii kinetycznej i potencjalnej równa się zero lub z dokładnością do stałej, ale w naszym przypadku lepiej przyjąć za tą stała jest liczbą zero, zatem: {{Formuła|<MATH>E_k+E_p=0\;</MATH>}}, to {{Formuła|<MATH>0={{m\omega^2 r^2}\over{2}}+\varphi m\Rightarrow {{\omega^2 r^2}\over{c^2}}=-{{2\varphi}\over{c^2}}\;</MATH>}}. A zatem nasz interwał czasoprzestrzenny przedstawia się względem ostatnich rozważań i wzoru na interwał czasoprzestrzenny {{LinkWzór|1.14}} dla obu sygnatur (znak plus u góry to sygnatura dodatnia, w przeciwnym przypadku ujemna): {{CentrujWzór|<MATH>d\tau^2=\pm\left(\pm 1\pm{{2\varphi}\over{c^2}}\right)c^2dt^2\;</MATH>|1.15}} Dochodzimy więc do wniosku, że wedle wzoru {{LinkWzór|1.14}} i {{LinkWzór|1.15}}, że element tensora metrycznego, a mianowicie element o współczynnikach dolnych zerowych przedstawia się: {{CentrujWzór|<MATH>g_{00}=\pm 1\pm{{2\varphi}\over{c^2}}\;</MATH>|1.16}} Widzimy, że ona zależy od potencjału skalarnego pola grawitacyjnego słabego, a więc można powiedzieć, że w układzie nieinercjalnym siły bezwładności zastępują siły grawitacji. Według zasady równoważności nie rozróżnia się sił grawitacji od sił pochodzenia nieinercjalnego (siły bezwładności), a zatem można powiedzieć: {{CentrujWzór|<MATH>g_{00}=\pm 1\mp{{2GM}\over{c^2r^2}}\;</MATH>|1.17}} Jeśli mamy układ zwykły oznaczony współrzędnymi: {{Formuła|<MATH>(x,y,t)</MATH>}}, to w układzie rotującym układ jest względem współrzędnych: {{Formuła|<MATH>(x',y',t')\;</MATH>}}, czyli obracającym się ze stałą prędkością kątową &omega;, to transformacje z układu obracającego się do układu nieobracającego mają się jak: {{CentrujWzór|<MATH>x=x'\cos(\omega t)-y'\sin(\omega t)\;</MATH>|1.18}} {{CentrujWzór|<MATH>y=x^'\sin(\omega t)+y'\cos(\omega t)\;</MATH>|1.19}} Można policzyć różniczki zupełne wyrażeń {{LinkWzór|1.18}} i {{LinkWzór|1.19}}, które są takowymi transformacjami z jednego układu współrzędnych do drugiego: {{CentrujWzór|<MATH>dx=dx'(\cos\omega t)-dy'\sin(\omega t)-x'\sin(\omega t)\omega dt-y^'\cos(\omega t)\omega dt=dx'\cos(\omega t)-dy'\sin(\omega t)-\omega y dt\;</MATH>|1.20}} {{CentrujWzór|<MATH>dy=dx'\sin(\omega t)+dy'\cos(\omega t)+x'\cos(\omega t)\omega dt-y'\sin(\omega t)\omega dt=dx'\sin(\omega t)+dy'\sin(\omega t)+\omega x dt\;</MATH>|1.21}} Obliczenia na liczbach ogólnych {{LinkWzór|1.20}} i {{LinkWzór|1.21}} przedstawiamy w uproszczeniu jako kombinacje różniczek współrzędnych i czasu: {{CentrujWzór|<MATH>dx=dx'\cos(\omega t)-dy'\sin(\omega t)-\omega y dt\;</MATH>|1.22}} {{CentrujWzór|<MATH>dy=dx'\sin(\omega t)+dy'\cos(\omega t)+\omega x dt\;</MATH>|1.23}} Interwał czasoprzestrzenny w układzie inercjalnym przedstawia wedle sposobu {{LinkWzór|1.6}}. Mając transformacje różniczek, tzn. {{LinkWzór|1.22}} i {{LinkWzór|1.23}}, wyznaczmy wedle jakiego sposobu przedstawia się on w układzie nieinercjalnym i w ten sposób możemy wyznaczyć elementy tensora metrycznego w nieinercjalnym układzie odniesienia względem układu czysto inercjalnego, który porusza się względem innych układów inercjalnym ze stałą prędkością kątową: {{CentrujWzór|<MATH>ds^2=c^2dt^2-dx^2-dy^2=c^2dt^2-(dx'\cos(\omega t)-dy'\sin(\omega t)-\omega y dt)^2-(dx'\sin(\omega t)+dy'\cos(\omega t)+\omega x dt)^2=\;</MATH>{{Br}} <MATH>=c^2dt^2-dx^{'2}\cos^2(\omega t)-dy^{'2}\sin^2(\omega t)-\omega^2y^2 dt^2+2dx'dy'\cos(\omega t)\sin(\omega t)+2dx'\cos(\omega t)\omega y dt-2dy'\sin(\omega t)\omega y dt+\;</MATH>{{Br}}<MATH>-dx^{'2}\sin^2(\omega t)-dy^{'2}\sin^2(\omega t)-\omega^2 x^2 dt^2-2dx'dy'\sin(\omega t)\cos(\omega t)-2dx'\sin(\omega t)\omega x dt-2dy'\cos(\omega t)\omega x dt=\;</MATH>{{Br}} <MAtH>=\left(1-{{\omega^2 (x^2+y^2)}\over{c^2}}\right)c^2dt^2-dx^{'^2}-dy^{'2}+2\omega dt\left(dx'\cos(\omega t)y-dy'\sin(\omega t)y-dx'\sin(\omega t)x-dy'\cos(\omega t)x\right)=</MATH>{{Br}} <MATH>=\left(1-{{\omega^2 r^2}\over {c^2}}\right)c^2dt^2-dx^{2'}-dy^{'2}+ 2\omega dt\left(dx'(\cos(\omega t)y-\sin(\omega t)x)-dy'(\sin(\omega t)y+\cos(\omega t)x)\right)</MATH>|1.24}} Wyznaczmy wyrażenia pomocnicze, które są potrzebne do obliczeń interwału w układzie nieinercjalnych w {{LinkWzór|1.24}} wedle współrzędnych w układzie nieinercjalnym: {{CentrujWzór|<MATH>\cos(\omega t)y-\sin(\omega t)x=\cos(\omega t)\left(x' \sin(\omega t)+y'\cos(\omega t)\right)-\sin(\omega t)\left(x'\cos(\omega t)-y'\sin(\omega t)\right)=\;</math>{{Br}} <math>=x^'\sin(\omega t)\cos(\omega t)+y^{'}\cos^2(\omega t)-x^'\cos(\omega t)\sin(\omega t)+y^'\sin^2(\omega t)=y'\;</MATH>|1.25}} a także drugie pomocnicze obliczenia: {{CentrujWzór|<MATH>\sin(\omega t)y+\cos(\omega t)x=\sin(\omega t)(x'\sin(\omega t)+y'\cos(\omega t))+\cos(\omega t)(x'\cos(\omega t)-y'\sin(\omega t))=\;</MATH>{{Br}} <MATH>=x'\sin^2(\omega t)+y'\sin(\omega t)\sin(\omega t)+x'\cos^2(\omega t)-y'\sin(\omega t)\cos\omega t=x'\;</MATH>|1.26}} Dochodzimy, że interwał czasoprzestrzenny na podstawie obliczeń {{LinkWzór|1.24}} i obliczeń pomocniczych {{LinkWzór|1.25}} i {{LinkWzór|1.26}} przedstawia się względem współrzędnych nieinercjalnych: {{CentrujWzór|<MATH>ds^2=\left(1-{{\omega^2 r^2}\over {c^2}}\right)c^2dt^2+2(\omega dx'y'-\omega dy'x')dt-dx^{'2}-dy^{'2}</MATH>|1.27}} W obliczeniach {{LinkWzór|1.27}} grupujemy wyrazy względem tych samych różniczek względem nieinercjalnego układu współrzędnych, wtedy dostajemy wzór na interwał czasoprzestrzenny w naszym rozważanym układzie współrzędnym: {{CentrujWzór|<MATH>ds^2=\underbrace{\left(1-{{\omega^2 r^2}\over {c^2}}\right)}_{\pm g_{00}}c^2dt^2+\underbrace{{{\omega y'}\over{c}}}_{\pm g_{01}}dtdx'+\underbrace{{{\omega y'}\over{c}}}_{\pm g_{10}}dx'dt+ dx\underbrace{\left(-{{\omega x'}\over{c}}\right)}_{\pm g_{20}}dy'dt+\underbrace{\left(-{{\omega x'}\over{c}}\right)}_{\pm g_{02}}dtdy'+\underbrace{(-1)}_{\pm g_{11}}dx^{'2}+\underbrace{(-1)}_{\pm g_{22}}dy^{'2}</MATH>|1.28}} Tensor metryczny w nieinercjalnym układzie współrzędnych możemy napisać na podstawie definicji interwału znanej ze szczególnej teorii względności przy definicji kwadratu infinitezymalnego interwału {{LinkWzór|1.28}} dla sygnatury dodatniej i ujemnej (wiedząc, że elementy w tej sygnaturze względem sygnatury dodatniej mają przeciwne parametry): {{ElastycznyWiersz|{{CentrujWzór|<MATH>g_{\mu\nu}=\begin{bmatrix} 1-{{\omega^2 r^2}\over{c^2}}&{{\omega y'}\over{c}}&-{{\omega x'}\over{c}}\\ {{\omega y'}\over{c}}&-1&0\\ -{{\omega x'}\over{c}}&0&-1 \end{bmatrix}</MATH>|1.29}}|{{CentrujWzór|<MATH>g_{\mu\nu}=\begin{bmatrix} -1+{{\omega^2 r^2}\over{c^2}}&-{{\omega y'}\over{c}}&{{\omega x'}\over{c}}\\ -{{\omega y'}\over{c}}&1&0\\ {{\omega x'}\over{c}}&0&1 \end{bmatrix}</MATH>|1.29r}}}} Warto zauważyć, że elementy pozadiagonalne tensora metrycznego, wskazują na jakiś rodzaj rotacji wedle naszego przedstawienia interwału {{LinkWzór|1.28}} układu nieinercjalnego względem inercjalnego. == Wprowadzenie do tensorów Einsteina w postaci tensorowej == === Tensor Einsteina === Wyprowadzimy tutaj tensor Einsteina i wyznaczmy pochodną tensorową tego tensora i przekonamy się, że ona wynosi zero. Tożsamość Bianchiego, które podamy tutaj bez dowodu, ale jego dowód znajduje się w punkcie {{LinkWzór|2.126|Rachunek_tensorowy|Metody_matematyczne_fizyki|MMF}}: {{CentrujWzór|<MATH>R_{\mu \nu \gamma \alpha ;\sigma}+R_{\mu \nu \sigma\gamma;\alpha}+R_{\mu \nu\alpha \sigma;\gamma}=0\;</MaTH>|1.30}} W obliczeniach na tensorach będziemy korzystać, z własności na tensorze Ricciego: g{{Sup|&mu;&gamma;}}R{{Sub|&mu;&nu;&gamma;&sigma;}}=R{{Sub|&nu;&sigma;}}, oraz z antysymetryczności przedstawiania wskaźników pierwszej pary lub drugiej. Zastosujmy zwężenie tożsamości Bianchiego wymnażając obustronnie przez podwójnie kontrawariantny tensor metryczny g{{Sup|&mu;&gamma;}} tożsamość {{LinkWzór|1.30}}: {{CentrujWzór|<MATH>g^{\mu\gamma}\left[R_{\mu\nu \gamma \alpha;\sigma}+R_{\mu\nu \sigma \gamma;\alpha}+R_{\mu\nu \alpha\sigma;\gamma}\right]=0\Rightarrow R_{\nu\alpha;\sigma}-R_{\nu\sigma;\alpha}+{R^\gamma}_{\nu\alpha\sigma;\gamma}=0\;</MATH>|1.31}} Dokonajmy teraz ponownego zwężania ostatniej równości {{LinkWzór|1.31}}, a także korzystając znów w naszej równości tensorowej z własności na tensorach Ricciego: {{CentrujWzór|<MATH>g^{\nu\alpha}\left[R_{\nu\alpha;\sigma}-R_{\nu\sigma;\alpha}+{R^\gamma}_{\nu\alpha\sigma;\gamma}\right]=0\Rightarrow R_{;\sigma}-{R^\alpha}_{\sigma;\alpha}-{R^{\gamma}}_{\sigma;\gamma}=0\;</MATH>|1.32}} Po ostatnich przekształceniach, i po przemianowaniu wskaźników w równaniu {{LinkWzór|1.32}} wedle schematu &alpha;&rarr;&gamma;, wtedy dojdziemy do następnego równania: {{CentrujWzór|<MATH>R_{;\sigma}-{R^{\gamma}}_{\sigma;\gamma}-{R^{\gamma}}_{\sigma;\gamma}=0\;</MATH>|1.33}} Wykorzystujemy definicję delty Kroneckera oraz wykorzystujemy go do pierwszego wyrazu w równaniu tensorowym {{LinkWzór|1.33}}, a także redukujemy wyrazy podobne w tym samym równaniu: {{CentrujWzór|<MATH>R_{;\alpha}{\delta^{\alpha}}_{\sigma}-2{R^{\gamma}}_{\sigma;\gamma}=0\Rightarrow {R^{\alpha}}_{\sigma;\alpha}-{{1}\over{2}}{\delta^{\alpha}}_{\sigma}R_{;\alpha}=0\;</MATH>|1.34}} Idąc dalej by mieć górne wskaźnik przy tensorach w równaniu tensorowym {{LinkWzór|1.34}} należy to równanie tensorowe wymnożyć przez tensor g{{Sup|&sigma;&beta;}}, wtedy dostaniemy co chcieliśmy. {{CentrujWzór|<MATH>g^{\sigma\beta}\left({R^{\alpha}}_{\sigma;\alpha}-{{1}\over{2}}{\delta^{\alpha}}_{\sigma}R_{;\alpha}\right)=0\Rightarrow {R^{\alpha\beta}}_{;\alpha}-{{1}\over{2}}g^{\alpha\beta}R_{;\alpha}=0\;</MATH>|1.35}} Wyłączając pochodną tensorową przed nawias i wykorzystując przy tym, że pochodna tensorowa elementów tensora metrycznego jest równa zero, wtedy {{LinkWzór|1.35}} przechodzi w równanie: {{CentrujWzór|<MATH>\left(R^{\alpha\beta}-{{1}\over{2}}g^{\alpha\beta}R\right)_{;\alpha}=0\;</MATH>|1.36}} Tensor występujący pod pochodną tensorową {{LinkWzór|1.36}} nazywamy tensorem Einsteina i jest funkcją dwuwskaźnikowego tensora krzywizny R{{Sup|&alpha;&beta;}}, skalaru krzywizny R, a także jest funkcją tensora metrycznego, który panuje w danej geometrii w przestrzeni czterowymiarowej. {{CentrujWzór|<MATH>G^{\alpha\beta}=R^{\alpha\beta}-{{1}\over{2}}g^{\alpha\beta}R\;</MATH>|1.37}} Tensor Einsteina {{LinkWzór|1.37}} na podstawie tożsamości {{LinkWzór|1.36}} ma taką własność, że jego pochodna tensorowa względem wskaźnika &alpha; występujący w jego definicji {{LinkWzór|1.37}} jest równa zero. {{CentrujWzór|<MATH>{G^{\alpha\beta}}_{;\alpha}=0\;</MATH>|1.38}} Tensor Einsteina {{LinkWzór|1.37}} można zapisać w postaci bezwskaźnikowej, tzn. bez powiedzenia z jakiego typu tensorem mamy do czynienia w przypadku tensora Einsteina G{{Sup|&alpha;&beta;}}, który można zdefiniować nie tylko w postaci jakby miał tylko górne wskaźniki, ale wszystkie te zapisy tensorowo są równoważne w zapisie wspomnianego tensora. {{CentrujWzór|<MATH>\mathbf{G}=\mathbf{R}-{{1}\over{2}}\mathbf{g}R\;</MATH>|1.39}} Wyprowadzona własność tensora Einsteina jest bardzo potrzebna w ogólnej teorii względności i jest wykorzystana w równaniach tensorowych Einsteina opisująca grawitację. === Rozszerzony tensor Einsteina === Rozszerzony tensor Einsteina zdefiniujmy w oparciu o tensor Einsteina {{LinkWzór|1.37}} o stałą kosmologiczną &Lambda;: {{CentrujWzór|<maTH>O^{\alpha\beta}=G^{\alpha\beta}+\Lambda g^{\alpha\beta}\;</MaTH>|1.40}} Wyznaczmy pochodną tensorową rozszerzonego tensora Einsteina {{LinkWzór|1.40}} względem współrzędnej kontrawariantnej o numerze &beta;, zatem na podstawie {{LinkWzór|1.38}} i z własności, że pochodna tensorowa tensora metrycznego jest równa zero: {{CentrujWzór|<MATH>{O^{\alpha\beta}}_{;\alpha}=\left(G^{\alpha\beta}+\Lambda g^{\alpha\beta}\right)_{;\alpha}= {G^{\alpha\beta}}_{;\alpha}+\Lambda {g^{\alpha\beta}}_{;\alpha}=0+\Lambda\cdot 0=0\;</maTh>|1.41}} Doszliśmy więc do wniosku, że rozszerzony tensor Einsteina ma te same własności, co zwykły tensor Einsteina. == Czy istnieją układy lokalnie, a nie globalnie płaskie == === Twierdzenie o lokalnej płaskości czasoprzestrzeni (przestrzeni czterowymiarowej) === Przestrzeń jest lokalnie płaska w czasoprzestrzeni Einsteina, że w danym otoczeniu punktu mamy doczynienia z czasoprzestrzenią Minkowskiego, bo przestrzeń, która jest rozwiązaniem ogólnej teorii względności nie może być globalnie płaska, ale może być spełniona tylko w przybliżeniu w otoczeniu pewnego punktu w którym na płaskość obowiązuje, w której mamy tensor metryczny w przybliżeniu Minkowskiego {{LinkWzór|1.5}}, gdy pochodne zupełne tego tensora metrycznego są równe zero, tzn.: {{CentrujWzór|<MATH>{{\partial {g^'}_{\alpha\beta}}\over{\partial x^{\gamma}}}=0\;</MATH>|1.42}} *gdzie:{{Formuła|<MaTH>{g^'}_{\alpha\beta}\;</MATH>}} jest to tensor metryczny Minkowskiego {{Formuła|<MATH>\eta_{\alpha\beta}\;</MATH>}} z małą poprawką do niego by z bardzo dużą dokładnością był spełniony powyższy warunek. Zakładamy, że istnieje przekształcenia między aktualną przestrzenią, a układem lokalnie płaskim, które jest prawdziwy dla punktu, w którym ta lokalna płaskość jest spełniona według: {{CentrujWzór|<MATH>g_{\alpha\beta}={\Lambda^{\mu}}_{\alpha}{\Lambda^{\nu}}_{\beta}{g^'}_{\mu\nu}\;</MATH>|1.43}} *gdzie:{{Formuła|<MATH>{g^'}_{\mu\nu}\simeq\eta_{\mu\nu}\;</MATH>}}- jest to tensor metryczny Minkowskiego. A także również zachodzi dla ściśle określonego punktu w przestrzeni lokalnie płaskiej równanie {{LinkWzór|1.42}}, i ze względu na symetryczność ogólnej definicji tensora metrycznego ma on w rezultacie 1+2+3+4=10 niezależnych składowych, a ilość składowych tensora {{Formuła|<MATH>{\Lambda^{\mu}}_{\alpha}\;</Math>}} jest 4&middot; 4=16 elementów, zatem ilość niezależnych stopni swobody w równaniu {{LinkWzór|1.43}} jest równa 16-10=6. Te sześć stopni swobody odpowiada sześciu stopniom swobody przekształcenia Lorentza, tzn. nasz układ można przesunąć z prędkością <math>\vec{v}\;</MATH> względem trzech jego niezależnych współrzędnych lub obrócić badany układ o trzy niezależne kąty. W sumie mamy sześć stopni swobody {{Formuła|<MATH>{\Lambda^{\mu}}_{\alpha}\;</MAtH>}}, które powodują, że lokalny układ inercjalny pozostanie układem inercjalnym. Według równania {{LinkWzór|1.42}} ilość niezależnych równań jest 10&middot;4=40 (jest 10-to ilość niezależnych składowych tensora metrycznego, który jest jak wiadomo symetryczny i cztery niezależne składowe tensora kontrawariantnego położenia), daje nam też 40 stopni swobody. Ponieważ w tym punkcie lub jego otoczeniu istnieje tensor metryczny Minkowskiego, to małe poprawki do tensora metrycznego Minkowskiego możemy tak wybrać, by były spełnione równania {{LinkWzór|1.42}}, co w połączeniu z {{LinkWzór|1.43}} daje nam pewne {{Formuła|<math>{{\partial{\Lambda^{\mu}}_{\alpha}}\over{\partial x^{\gamma}}}\;</MATH>}}, które możemy tak obrać by były spełnione omawiane warunki lokalnej płaskości. Jeśli mamy dany punkt układu lokalnie płaskiego wedle {{LinkWzór|1.42}} i {{LinkWzór|1.43}}, to tensor Christoffela dla tego punktu jest równy zero i według twierdzenia Taylora istnieje w otoczeniu tego punktu w przybliżeniu canaj wyżej do wyrazów liniowych tensora krzywizny (należy pamiętać, że pochodna cząstkowa tensora krzywizny dla układu lokalnie płaskiego jest równa zero), w którym są spełnione te zależności, też istnieje w przybliżeniu lokalna płaskość dla punktów tego otoczenia. '''Zatem na podstawie powyższych rozważań zawsze istnieje układ lokalnie płaski, w których dla tych punktów spełnione są {{LinkWzór|1.42}} i {{LinkWzór|1.43}}.''' == Tensor gęstości energii-pędu == === Definicja tensora gęstości energii-pędu === W szczególnej teorii względności tensor gęstości energii-pędu przedstawia się według {{LinkWzór|K61a|Lokalna zachowawczość tensora gęstości energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} wzorem: {{CentrujWzór|<MATH>T^{\mu\nu}=(\rho_0 c^2+p)u^{\mu}u^{\nu}-p\eta^{\mu\nu}\;</math>|1.44}} * gdzie {{Formuła|<MATH>\eta^{\mu\nu}\;</math>}} jest to tam tensor przestrzeni metrycznej Minkowskiego o sygnaturze dodatniej, * gdy mamy synaturę przeciwną, tzn.: sygnaturę ujemną, to tensor gęstości energii-pędu ma się jako: {{CentrujWzór|<MATH>T^{\mu\nu}=(\rho c^2+p)u^{\mu}u^{\nu}+p\eta^{\mu\nu}\;</math>|1.45}} My zawsze będziemy przyjmować jak w szczególnej teorii względności tą sygnaturę pierwszą. Wielkość: {{Formuła|<MATH>u^{\mu}={{dx^{\mu}}\over{ds}}\;</math>}} jest to pochodna dla &mu;=0 współrzędnej czasowej zdefiniowanej x{{Sup|0}}=ct względem interwału czasoprzestrzennego zdefiniowanej przez: {{Formuła|<MATH>ds^2=c^2dt^2-dx^2-dy^2-dz^2\;</math>}}, gdy mamy:{{Formuła|<MATH>0\neq \mu=i\;</math>}}, to jest ona pochodna współrzędnej położenia cząstki względem tak samo zdefiniowanego interwału czasoprzestrzennego. Należy pamiętać, że &rho;{{Sub|0}} - to gęstość spoczynkowa, p - to ciśnienie cząstki płynu, w danym punkcie. A także zależy od jej prędkości światła (fal elektromagnetycznych). Miano tensora gęstości energii-pędu ma się jak: {{CentrujWzór|<MATH>[T^{\mu\nu}]={{J}\over{m^3}}={{Nm}\over{m^3}}={{N}\over{m^2}}=Pa\;</math>|1.46}} W ogólnej teorii względności, zastępując wedle schematu {{Formuła|<MATH>\eta^{\mu\nu}\rightarrow g^{\mu\nu}</MATH>}}, oraz metrykę Minkowskiego przez inną metrykę zdefiniowaną zdefiniowaną poprzez tensor {{Formuła|<MATH>g^{\mu\nu}</MATH>}}, czyli wtedy mamy {{LinkWzór|1.3}} dla sygnatury dodatniej, a dla ujemnej {{LinkWzór|1.3G}}, które na ogół nie są tensorami metrycznymi Minkowskiego w OTW, ale może być, przy pierwszej sygnaturze tensora metrycznego Minkowskiego mamy dla tensora energii-pędu w ogólnej teorii względności: {{CentrujWzór|<MATH>T^{\mu\nu}=(\rho c^2+p)u^{\mu}u^{\nu}-pg^{\mu\nu}\Rightarrow {T^{\mu}}_{\nu}=(\rho c^2+p)u^{\mu}u_{\nu}-p{\delta^{\mu}}_{\nu}\;</math>|1.48}} Dla drugiej o sygnaturze otrzymujemy względem przedstawienia tensora gęstości energii-pędu {{LinkWzór|1.48}}, w takim razie: {{CentrujWzór|<MATH>T^{\mu\nu}=(\rho c^2+p)u^{\mu}u^{\nu}+pg^{\mu\nu}\Rightarrow {T^{\mu}}_{\nu}=(\rho c^2+p)u^{\mu}u_{\nu}+p{\delta^{\mu}}_{\nu}\;</math>|1.48a}} Z powyższych definicji wynika, że dla tensora metrycznego jako tensora symetrycznego, wynika symetryczność tensora gęstości energii-pędu przy dowolnym tensorze metrycznym. Na podstawie symetryczności tensora metrycznego wynika, że ten tensor jest macierzą iloczynu skalarnego w czterowymiarowej czasoprzestrzeni. Można też sformułować tensor gęstości energii-pędu {{LinkWzór|1.44}} i {{LinkWzór|1.45}} zastępując {{Formuła|<MATH>u^{\mu}={{dx^{\mu}}\over{ds}}\;</MATH>}} przez {{Formuła|<MATH>U^{\mu}={{dx^{\mu}}\over{d\lambda}}\;</MATH>}}, gdzie {{Formuła|<MATH>\lambda\;</MATH>}} jest dowolną funkcją {{Formuła|<MATH>\lambda=\lambda(x^{\mu},g^{\mu\nu},s)\;</MATH>}}, gdzie {{Formuła|<MATH>x^{\mu}\;</MATH>}} są to współrzędne kontrawariantne w czasoprzestrzeni, a {{Formuła|<MATH>g^{\mu\nu}\;</MATH>}} to tensor metryczny podwójnie kontrawariantny, dalej {{Formuła|<MATH>s\;</MATH>}} to interwał czasoprzestrzenny. Zatem nasze równania dla sygnatury kolejno dodatniej i ujemnej, spełnione ogólnie: {{ElastycznyWiersz|{{CentrujWzór|<MATH>T^{\mu\nu}=(\rho_0 c^2+p)U^{\mu}U^{\nu}-p g^{\mu\nu}\;</math>|sd1}}|{{CentrujWzór|<MATH>T^{\mu\nu}=(\rho_0 c^2+p)U^{\mu}U^{\nu}+pg^{\mu\nu}\;</math>|sd2}}}} Równości {{LinkWzór|sd1}} i {{LinkWzór|sd2}} można też zapisać przy innych układach wskaźników, wtedy zamiast tensora metrycznego jest delta Kroneckera ze wskaźnikiem u góry i u dołu, a jeden tensor prędkości (względem {{Formuła|<MATH>\lambda\;</MATH>}}) jest u dołu, zatem: {{ElastycznyWiersz|{{CentrujWzór|<MATH>{T^{\mu}}_{\nu}=(\rho_0 c^2+p)U^{\mu}U_{\nu}-p {\delta^{\mu}}_{\nu}\;</math>|sd12}}|{{CentrujWzór|<MATH>{T^{\mu}}_{\nu}=(\rho_0 c^2+p)U^{\mu}U_{\nu}+p{\delta^{\mu}}_{\nu}\;</math>|sd22}}}} A dla przestrzeni lokalnie płaskiej nasze równania {{LinkWzór|sd1}} i {{LinkWzór|sd2}} wyglądają, te równania są pisane dla szczególnej teorii względności, w którym one są spełnione, a w ogólnej teorii względności są spełnione tylko szczególnie, dla tych sygnatur kolejno, tak: {{ElastycznyWiersz|{{CentrujWzór|<MATH>T^{\mu\nu}=(\rho_0 c^2+p)U^{\mu}U^{\nu}-p \eta^{\mu\nu}\;</math>|sd11}}|{{CentrujWzór|<MATH>T^{\mu\nu}=(\rho_0 c^2+p)U^{\mu}U^{\nu}+p\eta^{\mu\nu}\;</math>|sd21}}}} === Zasada zachowania energii-pędu a jego lokalność === Z wykładu o szczególnej teorii względności mamy, że zachodzi lokalna zasada zachowania energii-pędu {{LinkWzór|3.20|Lokalna zachowawczość tensora gęstości energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} z gęstością siły zewnętrznej równą zero: {{CentrujWzór|<MATH>{T^{\mu\nu}}_{,\mu}=0\;</MATH>|1.49}} Powyższy wzór jest spełniony dla punktów układu lokalnie płaskiego, w których zachodzą tożsamości {{LinkWzór|1.42}} i {{LinkWzór|1.43}}, czyli tensor metryczny jest w przybliżeniu tensorem Minkowskiego i jego pierwsze pochodne względem współrzędnych kontrawariantnych są równe zero, ale już o wyższych pochodnych tensora gęstości energii, lokalna definicja lokalnej płaskości nić nie mówi o tych pochodnych, zatem również mamy do czynienia z metryką prawie płaską, gdy mamy do czynienia z układami, w których punktach istnieje słabe pole grawitacyjne, jak np. dla metryki obowiązujących dla pól Newtonowskich. Uogólnijmy ten wzór na dowolną metrykę, ogólnie nie tylko na lokalną płaską metrykę Minkowskiego, ale za tą metrykę obowiązującą wedle ogólnej teorii względności, którą poznamy i z którego będziemy wyznaczać elementy tensora metrycznego i przy pomocy, której będziemy tworzyć definicję kwadratu różniczki interwału czasoprzestrzennego wtedy wzór na zachowawczość tensora gęstości energii i pędu jest: {{CentrujWzór|<MATH>{T^{\mu\nu}}_{;\mu}=0\;</MATH>|1.50}} Powyższe równanie określa zasadę zachowania energii-pędu dla dowolnej przestrzeni zakrzywionej. Gdy siły zewnętrze są nierówne zero, to wtedy z definicji {{Formuła|<MATH>\gamma</MATH>}}, tzn.: {{LinkWzór|hd11|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} mamy w szczególnej teorii względności: {{CentrujWzór|<MATH>{{\gamma}\over{c}}{T^{\mu\nu}}_{,\mu}={{dK^{\mu}_z}\over{dV}}\;</MATH>|ccv1}} Widzimy, że wzór {{LinkWzór|ccv1}} przechodzi {{LinkWzór|1.49}}, gdy gęstość tensora siły zewnętrzne jest równa zero. W przestrzeni zakrzywionej równość {{LinkWzór|ccv1}} przechodzi w: {{CentrujWzór|<MATH>{{\gamma}\over{c}}\sqrt{-g}{T^{\mu\nu}}_{;\mu}={{dK^{\mu}_z}\over{dV}}\;</MATH>|ccv}} Widzimy, że wzór {{LinkWzór|ccv}} przechodzi {{LinkWzór|1.50}}, gdy gęstość tensora siły zewnętrzne jest równa zero. == Równania powiązane tensora Einsteina z tensorem gęstości energii-pędu == === Równania pola Einsteina === Tutaj przedstawmy równania Einsteina bez stałej kosmologicznej, które można zapisać dla przyciągania i odpychania grawitacyjnego, słuszne dla obu sygnatur, kolejno w postaci: {{ElastycznyWiersz|{{CentrujWzór|<MATH>G^{\alpha\beta}=\kappa T^{\alpha\beta}\;</MaTh>|1.51|Obramuj}}|{{CentrujWzór|<MATH>G^{\alpha\beta}=-\kappa T^{\alpha\beta}\;</MaTh>|1.51a|Obramuj}}}} Gdy uwzględnimy inne pola, niż grawitacyjne, a także inne siły, to należy zastąpić w {{LinkWzór|1.51}} i {{LinkWzór|1.51a}} według schematu: {{CentrujWzór|<MATH>T^{\mu\nu}\rightarrow T^{\mu\nu}+T^{\mu\nu}_z\;</MATH>|1.51b}} W równaniu {{LinkWzór|1.51b}} mamy tensor {{Formuła|<MATH>T^{\mu\nu}\;</MATH>}}, którym jest {{LinkWzór|1.48}} (sygnatura dodatnia) lub {{LinkWzór|1.48a}} (sygnatura ujemna), albo gdy zamiast {{Formuła|<MATH>s\;</MATH>}} jest {{Formuła|<MATH>\lambda\;</MATH>}}, to wtedy jest on: {{LinkWzór|sd12}} (sygnatura dodatnia) lub {{LinkWzór|sd22}} (sygnatura ujemna). Również mamy tensor {{Formuła|<MATH>T^{\mu\nu}_z\;</MATH>}}, który jest tensorem np. od pola elektromagnetycznego, czy też od innego, a także w nim muszą być uwzględnione wszystkie siły zewnętrzne. Dla równania {{LinkWzór|1.51}} dla przyciągania grawitacyjnego (równania dla odpychania grawitacyjnego w każdym etapie tu przeprowadzonym otrzymujemy z równania dla jej wersji przyciągającej poprzez podstawienie: {{Formuła|<MATH>\kappa\rightarrow -\kappa\;</MATH>}}) zastosujemy definicję tensora Einsteina, to równanie grawitacji na podstawie {{LinkWzór|1.37}} zapisujemy w postaci pełnej: {{CentrujWzór|<MAth>R^{\alpha\beta}-{{1}\over{2}}g^{\alpha\beta}R=\kappa T^{\alpha\beta}\;</math>|1.52}} Widzimy, że tensor Einsteina (lewa strona równania Einsteina {{LinkWzór|1.52}}) jest zależna od dwuwskaźnikowego tensora krzywizny oraz od skalaru krzywizny. W powyższym wzorze tensor Einsteina jest w proporcjonalny do tensora gęstości energii. Przekształcając równanie Einsteina {{LinkWzór|1.52}} tak by otrzymać jego odwrotną postać, gdy tensor czegoś w rodzaju równania Einsteina omawianego wcześniej, czyli: {{CentrujWzór|<MATH>T^{\alpha\beta}-{{1}\over{2}}g^{\alpha\beta}T</MATH>}} Z równań Einsteina można udowodnić, że przechodzi on do postaci, które poniżej podamy ale bardzo podobnych do oryginalnych równań Einsteina {{LinkWzór|1.52}}, gdy wszystkie tensory w równaniu Einsteina przedstawimy jako kowariantno-kontrawariantnego tensora i dokonując sumować po tych samych wskaźnikach górno-dolnych i po tych czynnościach dostajemy skalary odpowiednich wielkości, tzn. skalaru krzywizny i skalaru tensora gęstości napięć-energii, dzięki których możemy dokonać dalszych operacji: {{CentrujWzór|<maTH>R-{{1}\over{2}}4R=\kappa T\Rightarrow -R=\kappa T\;</math>|1.53}} Dokonując pewnych przekształceń pewnych wyrażeń w {{LinkWzór|1.53}}, wtedy wiemy po tych dysputach, że skalar krzywizny ma się jako: {{CentrujWzór|<MATh>R=-\kappa T\;</math>|1.54}} Widzimy względem ostatniego wzoru, że skalar krzywizny jest proporcjonalny do skalaru tensora gęstości napięć-energii. Wzór {{LinkWzór|1.54}} na skalar krzywizny podstawiamy do równania Einsteina {{LinkWzór|1.51}} za skalar krzywizny (za R), wtedy mamy: {{CentrujWzór|<MATH>{R^{\mu}}_{\nu}+{{1}\over{2}}{\delta^{\mu}}_{\nu}\kappa T=\kappa {T^{\mu}}_{\nu}\;</math>|1.55}} Następnie możemy przenieść pewne wyrazy nie będące tensorem krzywizny na prawą stronę, a więc równanie tensorowe Einsteina przestawia się: {{CentrujWzór|<math>{R^{\mu}}_{\nu}=\kappa({T^{\mu}}_{\nu}-{{1}\over{2}}{\delta^{\mu}}_{\nu}T)\;</math>|1.56}} Równanie pola {{LinkWzór|1.57}} względem wcześniejszych obliczeń jest równoważne równaniu {{LinkWzór|1.51}}, a równanie tensorowe dla odpychania grawitacyjnego {{LinkWzór|1.57r}} otrzymujemy z jej wersji, ale przyciągającej, zastępując w {{LinkWzór|1.57}} przez proste wspomniane zastąpienie, wtedy otrzymujemy drugi wzór niżej, a ten wzór jest równoważny równaniu {{LinkWzór|1.51a}}, w takim razie: {{ElastycznyWiersz|{{CentrujWzór|<MATH>R_{\mu\nu}=\kappa(T_{\mu\nu}-{{1}\over{2}}g_{\mu\nu}T)\;</math>|1.57}}|{{CentrujWzór|<MATH>R_{\mu\nu}=-\kappa(T_{\mu\nu}-{{1}\over{2}}g_{\mu\nu}T)\;</math>|1.57r}}}} Równanie Einsteina wyjściowe, tzn.: {{LinkWzór|1.57}}, jest słuszne dla obu sygnatur, podobnie jest z równaniem {{LinkWzór|1.57r}}, które wyprowadziliśmy z ich wersji, ale wejściowych. === Równania pola Einsteina z uwzględnieniem stałej kosmologicznej === Przedstawmy równania pola Einsteina z uwzględnieniem stałej kosmologicznej, czyli musimy uwzględnić rozszerzony tensor Einsteina w postaci {{LinkWzór|1.40}}, a więc równanie Einsteina {{LinkWzór|1.51}} {{LinkWzór|1.51a}} z jego uwzględnieniem o dodatkowy wyraz są dla przyciągania i odpychania grawitacyjnego przedstawione kolejno: {{ElastycznyWiersz|{{CentrujWzór|<math>O^{\alpha\beta}=\kappa T^{\mu\nu}\;\;</MATH>|1.58}}|{{CentrujWzór|<math>O^{\alpha\beta}=-\kappa T^{\mu\nu}\;\;</MATH>|1.58GG}}}} Podstawiając za O{{Sup|&alpha;&beta;}} definicję tego tensora wedle {{LinkWzór|1.40}}, czyli z uwzględnieniem stałej kosmologicznej &Lambda;, wtedy dostajemy równanie grawitacji Einsteina dla obu rodzajów oddziaływania grawitacyjnego kolejno: {{ElastycznyWiersz|{{CentrujWzór|<MATH>G^{\alpha\beta}+\Lambda g^{\alpha\beta}=\kappa T^{\alpha\beta}\;</MATH>|1.59}}|{{CentrujWzór|<MATH>G^{\alpha\beta}+\Lambda g^{\alpha\beta}=-\kappa T^{\alpha\beta}\;</MATH>|1.59ww}}}} Równanie {{LinkWzór|1.59}} dla oddziaływania grawitacyjnego przyciągającego (dla odpychania grawitacyjnego w każdym etapie tu przeprowadzonym otrzymujemy z równania z jej wersji, ale dla oddziaływania przyciągającego, poprzez podstawienie: {{Formuła|<MATH>\kappa\rightarrow -\kappa\;</MATH>}}) można zapisać w postaci bezwskaźnikowej bez uwzględnienia z jakimi tensorami mamy do czynienia: {{CentrujWzór|<maTh>\mathbf{G}+\mathbf{g}\Lambda=\kappa\mathbf{T}\;\;</MATH>|1.60}} * gdzie {{Formuła|<MaTH>\mathbf{G}\;</MATH>}} jest tensorem Einsteina i ona jest zdefiniowane wedle {{LinkWzór|1.37}}. Policzmy ślady w równaniu tensora Einsteina {{LinkWzór|1.60}} względem niemych tych samych wskaźników górno-dolnych do wyznaczenia ich jako skalarów tychże wielkości, czyli tensor Einsteina przedstawimy w postaci kowariantno-kontrawariantnego tensora {{LinkWzór|1.59}}: {{CentrujWzór|<MATH>G=R-{{1}\over{2}}4 R\Rightarrow G=-R\;</MATH>|1.61}} Widzimy, że skalar tensora Einsteina jest równa skalarowi krzywizny z dokładnością do minusa. Uwzględniając definicję rozszerzonego tensora Einsteina w równaniu Einsteina {{LinkWzór|1.59}}, gdy w ogólności stała kosmologiczna jest nie równa zero, zatem licząc ich ślady, wtedy mamy: {{CentrujWzór|<MATH>G+4\Lambda=\kappa T\;</MATH>|1.62}} Biorąc policzoną wartość skalaru G {{LinkWzór|1.61}} podstawiamy do równania skalarnego {{LinkWzór|1.62}}, wtedy dostajemy równość: {{CentrujWzór|<MATH>-R+4\Lambda=\kappa T\Rightarrow R=4\Lambda-\kappa T\;</MATH>|1.63}} Widzimy, że skalar krzywizny zależy od stałej kosmologicznej i skalaru tensora gęstości energii, stąd mamy czemu jest równy skalar Ricciego, poniżej mamy równania Einsteina w jego pełnej postaci z uwzględnieniem stałej kosmologicznej zapisując je w postaci bezwskaźnikowej: {{CentrujWzór|<MATH>\mathbf{R}-{{1}\over{2}}\mathbf{g}R+\Lambda\mathbf{g}=\kappa\mathbf{T}\;</MATH>|1.64}} Wszystkie wyrazy po lewej stronie przenosimy na prawą stronę równania {{LinkWzór|1.64}} oprócz tensora krzywizny, wtedy dostajemy po przekształceniu: {{CentrujWzór|<MATH>\mathbf{R}=\kappa\mathbf{T}+{{1}\over{2}}\mathbf{g}R-\Lambda\mathbf{g}\;</MATH>|1.65}} Następnym naszym krokiem jest podstawienie za skalar krzywizny Ricciego, w równaniu tensorowym {{LinkWzór|1.65}} wyrażenia policzonego w punkcie {{LinkWzór|1.63}}, wtedy po dokonanych operacjach tuż po, dostajemy: {{CentrujWzór|<MATH>\mathbf{R}=\kappa\mathbf{T}+{{1}\over{2}}\mathbf{g}(4\Lambda-\kappa T)-\Lambda\mathbf{g}\;</MATH>|1.66}} Po krótkich przekształceniach i redukcji pewnych wyrazów w {{LinkWzór|1.66}}, otrzymujemy że tensor dwuwskaźnikowy krzywizny jest równy pewnemu wyrażeniu, bardzo podobnego do pierwotnego równania Einsteina {{LinkWzór|1.64}} z uwzględnieniem stałej kosmologicznej. {{CentrujWzór|<MaTH>\mathbf{R}=\kappa(\mathbf{T}-{{1}\over{2}}\mathbf{g}T)+\Lambda\mathbf{g}\;</MATH>|1.67}} Równanie pola {{LinkWzór|1.68}} względem wcześniejszych obliczeń jest równoważne równaniu {{LinkWzór|1.59}}, a równanie tensorowe dla odpychania grawitacyjnego {{LinkWzór|1.68r}} otrzymujemy z jej wersji, ale dla oddziaływania przyciągającego, zastępując w {{LinkWzór|1.68}} przez proste wspomniane zastąpienie, wtedy otrzymujemy drugi wzór niżej, a ten wzór jest równoważny równaniu {{LinkWzór|1.59ww}}, w takim razie: {{ElastycznyWiersz|{{CentrujWzór|<MATH>R_{\alpha\beta}=\kappa(T_{\alpha\beta}-{{1}\over{2}}g_{\alpha\beta}T)+g_{\alpha\beta}\Lambda\;</MATH>|1.68}}|{{CentrujWzór|<MATH>R_{\alpha\beta}=-\kappa(T_{\alpha\beta}-{{1}\over{2}}g_{\alpha\beta}T)+g_{\alpha\beta}\Lambda\;</MATH>|1.68r}}}} Równanie Einsteina wyjściowe, tzn.: {{LinkWzór|1.68}}, jest słuszne dla obu sygnatur, podobnie jest z równaniem {{LinkWzór|1.68r}}, które wyprowadziliśmy z ich wersji, ale wejściowych. == Zachowawczość energii, a równania grawitacji Einsteina == Korzystając z równań grawitacji Einsteina {{LinkWzór|1.58}}, to równania są tak sformułowane, by była spełniona zasada energii, tzn. jeśli lewa strona tegoż równania, którego pochodna tensorowa jest równe zero według {{LinkWzór|1.41}}, to musi być spełniona zasada zachowania energii i pędu, tzn. dokonując różniczkowania tensorowego obu stron naszego równania, otrzymujemy: {{CentrujWzór|<MATH>{O^{\alpha\beta}}_{;\beta}=\kappa {T^{\alpha\beta}}_{;\beta}\Rightarrow {T^{\alpha\beta}}_{;\beta}=0\;</MATH>|1.69}} Z obliczeń {{LinkWzór|1.69}} wynika równanie {{LinkWzór|1.50}}, czyli z ogólnej teorii względności wynika zasada zachowania energii i pędu. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> t1wnt0tf6zxmbl5yiw9wxby0mjiqckf Ogólna teoria względności/Zasada wariacyjna w ogólnej teorii względności 0 16167 548288 513507 2026-07-25T12:58:36Z Persino 2851 548288 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> '''Ogólna teoria względności według Hilberta''' polega na całce działania Eulera-Lagrange, która przyjmuje najmniejszą wartość i w oparciu o rachunek wariacyjny wyprowadzimy równania grawitacji Einsteina-Hilberta. Również wyprowadzimy wedle tej samej zasady lokalną zasadę zachowania energii, a także wyprowadzimy równanie linii geodezyjnej z odpowiedniej definicji funkcji Langrange'a. == Równania grawitacji Einsteina-Hilberta == Całka działania w przestrzeni Minkowskiego jest to całka, w której funkcją podcałkową jest gęstość Lagrangianu {{Formuła|<MATH>\mathfrak{L}\;</MATH>}} liczoną względem infinitezymalnej objętości w przestrzeni czterowymiarowej. {{CentrujWzór|<MATH>S=\int \mathfrak{L}d{x^'}^4\;</MATH>|4.1}} Możemy uwzględnić policzoną na liczbach ogólnych objętość elementarną w lokalnie płaskim układzie współrzędnym względem tej samej objętości w krzywoliniowym układzie współrzędnej wedle sposobu {{LinkWzór|3.9|Właściwości_skalaru_tensora_metrycznego}} podstawiając go do całki Lagrange'a {{LinkWzór|4.1}}: {{CentrujWzór|<MATH>S=\int\underbrace{\sqrt{-g}\mathfrak{L}}_{\mathfrak{L}^'}dx^4\;</MATH>|4.2}} Aby powyższa całka przyjmowała najmniejszą wartość, to należy napisać równanie Eulera-Lagranga, którego postać względem parametru &phi; i &part;{{Sub|&mu;}}&phi; jest. {{CentrujWzór|<MATH>\partial_{\mu}{{\partial \mathfrak{L}^'}\over{\partial(\partial_{\mu}\varphi)}}-{{\partial\mathfrak{L}^'}\over{\partial\varphi}}=0\;</MATH>|4.3}} Gęstość lagrangianu można rozpisać jako sumę na dwie jego części, tzn.: na część przestrzenną i masową jako sumę tychże wielkości: {{CentrujWzór|<MATH>\mathfrak{L}=\mathfrak{L}_g+\mathfrak{L}_m\;</MATH>|4.4}} Rozważmy teraz część przestrzenną Lagrangianu {{LinkWzór|4.4}} rozwijając go w szereg Taylora względem skalaru krzywizny, co można go przestawić: {{CentrujWzór|<MATH>\mathfrak{L}_g=a+bR+cR^2+...\;</MATH>|4.5}} Wprowadźmy wstępne oznaczenia na stałe "a" i "b" poprzez stałą kosmologiczną &Lambda; i przez stałą &kappa; występującego w prawie grawitacji Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}}. {{ElastycznyWiersz|1={{CentrujWzór|<MATH>a=-{{\Lambda}\over{\pm \kappa}}\;</MATH>|4.6}}|2={{CentrujWzór|<MATH>b={{1}\over{\pm 2\kappa}}\;</MATH>|4.7}}}} * Znak w {{LinkWzór|4.6}} i {{LinkWzór|4.7}} jest dla znaku na górze dla przyciągania grawitacyjnego, a ujemna na dole dla odpychania grawitacyjnego. Tzn. gdy chcermy opisywać przyciąganie grawitacyjne, to stała {{Formuła|<MATH>\kappa\;</MATH>}} jest dodatnia, a jeśli odpychanie, to zamiast {{Formuła|<MATH>\kappa\;</MATH>}} wstawiamy {{Formuła|<MATH>-\kappa\;</MATH>}}, a ta stała {{Formuła|<MATH>\kappa\;</MATH>}} w nim jest dodatnia, a więc tak mozna przejść od przyciągania do odpychania we stałych {{LinkWzór|4.6}} i {{LinkWzór|4.7}}, tzn. zamieniając w nich {{Formuła|<MATH>+\;</MATH>}} na {{Formuła|<MATH>-\;</MATH>}}, i dlatego tam piszemy dla obu rodzajów oddziaływań grawitacyjnych {{Formuła|<MATH>\pm\;</MATH>}}. Część przestrzenna Lagrangianu {{LinkWzór|4.5}} wedle oznaczeń {{LinkWzór|4.6}} i {{LinkWzór|4.7}} po dokonanych podstawieniach za "a" i "b", przy którym dalsze współczynniki przyjmujemy za równe zero, przyjmuje postać. {{CentrujWzór|<MATH>\mathfrak{L}_g={{1}\over{\pm 2\kappa}}(R-2\Lambda)\;</MATH>|4.8}} Można udowodnić, że dla czasoprzestrzeni zakrzywionej mamy g<0, a zatem całkę działania {{LinkWzór|4.2}}, wykorzystując przy tym wzór na całkowity Lagrangian {{LinkWzór|4.4}}, która jest sumą Lagrangianu przestrzennego {{LinkWzór|4.8}} i masowego, jest napisana wzorem: {{CentrujWzór|<MATH>S=\int d^4x\sqrt{-g}\left\{{{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right\}\;</MATH>|4.9}} * gdzie:{{Formuła|<MATH>g=-\operatorname{\det}(g_{\alpha\beta})\;</MATH>}} Ale {{Formuła|<MATH>\sqrt{-g}\;</MATH>}} jest to Jakobian, który pozwala przejść do układu krzywoliniowej w ogólnej teorii względności z układu lokalnie płaskiego Minkowskiego. Nowa gęstość lagrangianu zdefiniowana na podstawie punktu {{LinkWzór|4.9}} w stosunku do {{LinkWzór|4.4}} jest zdefiniowana: {{CentrujWzór|<MATH>\mathfrak{L}^'=\sqrt{-g}\mathfrak{L}=\sqrt{-g}\left\{{{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right\}\;</MATH>|4.10}} Równanie Eulera Einsteina {{LinkWzór|4.3}} względem nowego Lagrangianu {{Formuła|<MATH>\mathfrak{L}^'\;</MATH>}}, jest iloczynem gęstości Lagrangianu tego starego {{Formuła|<MATH>\mathfrak{L}\;</MATH>}} przez pierwiastek z wyznacznika macierzy metrycznej wziętej z minusem, zatem jeśli przyjmować będziemy {{Formuła|<MATH>\varphi=g^{\alpha\beta}\;</MATH>}} przy {{LinkWzór|4.3}}, to równanie Eulera-Lagrange przyjmuje wtedy postać: {{CentrujWzór|<MATH>\partial_{\mu}{{\partial \mathfrak{L}\sqrt{-g}}\over{\partial(\partial_{\mu}g^{\alpha\beta})}}-{{\partial \mathfrak{L}\sqrt{-g}}\over{\partial g^{\alpha\beta}}}=0\;</MATH>|4.11}} Jeśli Lagrangian nie zależy od pochodnych elementów tensora metrycznych względem współrzędnych x{{Sup|&mu;}} w przestrzeni nieuklidesowej, to pierwszy wyraz w {{LinkWzór|4.11}} zapisujemy: {{CentrujWzór|<MATH>\partial_{\mu}{{\partial \mathfrak{L}\sqrt{-g}}\over{\partial(\partial_{\mu}g^{\alpha\beta})}}=0\;</MATH>|4.12}} A zatem równanie Eulera Einsteina po uwzględnieniu powyższej tożsamości {{LinkWzór|4.12}}, czyli pierwszy wyraz w {{LinkWzór|4.11}} znika, zatem dostajemy z omawianego równania: {{CentrujWzór|<MATH>{{\partial}\over{\partial g^{\alpha\beta}}}\left(\sqrt{-g}\mathfrak{L}\right)=0\;</MATH>|4.13}} Jeśli skorzystamy z twierdzenia o pochodnej iloczynu względem jakieś zmiennej ściśle określonej oraz wykorzystujemy wzór {{LinkWzór|3.18|Właściwości_skalaru_tensora_metrycznego}}, wtedy mamy: {{CentrujWzór|<MATH>\sqrt{-g}{{\partial\mathfrak{L}}\over{\partial g^{\alpha\beta}}}+\mathfrak{L}{{\partial\sqrt{-g}}\over{\partial g^{\alpha\beta}}}=0\Rightarrow \sqrt{-g}{{\partial\mathfrak{L}}\over{\partial g^{\alpha\beta}}}+\mathfrak{L}{{gg_{\alpha\beta}}\over{2\sqrt{-g} }}=0\;</MATH>|4.14}} Całkowity Lagrangian po podstawieniu {{LinkWzór|4.8}} do {{LinkWzór|4.4}} przyjmuje postać: {{CentrujWzór|<MATH>\mathfrak{L}={{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\;</MATH>|4.15}} Ostatnie równanie, które wynika z równania Eulera-Lagrangian {{LinkWzór|4.14}} ma się po podstawieniu do niej za całkowitą gęstość lagrangianu {{LinkWzór|4.15}}: {{CentrujWzór|<MATH>\sqrt{-g}{{\partial}\over{\partial g^{\alpha\beta}}}\left({{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right)+ \left({{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right){{1}\over{2\sqrt{-g}}}gg_{\alpha\beta}=0\;</MATH>|4.16}} Po podzieleniu obustronnie równości {{LinkWzór|4.16}} przez pierwiastek wyznacznika macierzy tensora metrycznego wziętej z minusem, czyli&nbsp;{{Formuła|<MATH>\sqrt{-g}\;</MATH>}}: {{CentrujWzór|<MATH>-{{1}\over{\pm 4\kappa}}g_{\alpha\beta}(R-2\Lambda)-{{1}\over{2}}g_{\alpha\beta}\mathfrak{L}_m+ {{\partial}\over{\partial g^{\alpha\beta}}}\left({{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right)=0\;</MATH>|4.17}} Jeśli wiadomo,że zachodzi wzór na skalar Ricciego {{Formuła|<MATH>R=g^{\alpha\beta}R_{\alpha\beta}\;</MATH>}}, i tensor Ricciego {{Formuła|<MATH>{{\partial R}\over{\partial g^{\alpha\beta}}}=R_{\alpha\beta}\;</MATH>}}, a także na podstawie powyższej równości {{LinkWzór|4.17}} mamy: {{CentrujWzór|<MATH>-{{1}\over{\pm 4\kappa}}g_{\alpha\beta}(R-2\Lambda)-{{1}\over{2}}g_{\alpha\beta}\mathfrak{L}_m+{{1}\over{\pm 2\kappa}}R_{\alpha\beta}+{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}=0\Rightarrow{{1}\over{\pm 2\kappa}}\left[\left(R_{\alpha\beta}-{{1}\over{2}}g_{\alpha\beta}R\right)+g_{\alpha\beta}\Lambda\right]= -{{1}\over{2}}\left(2{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}-g_{\alpha\beta}\mathfrak{L}_m\right)\;</MATH>|4.18}} Następnie podzielmy ostatnią równość, czyli zapisaną w punkcie {{LinkWzór|4.18}}, przez {{Formuła|<MATH>-{{1}\over{2\kappa}}\;</MATH>}}, otrzymujemy dla sygnatury dodatniej: {{CentrujWzór|<MATH>R_{\alpha\beta}-{{1}\over{2}}g_{\alpha\beta}R+g_{\alpha\beta}\Lambda=\pm \kappa\left(-2{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}+g_{\alpha\beta}\mathfrak{L}_m\right)\;</MATH>|4.19}} * Powyższe równanie jest dla sygnatury dodatniej. Ponieważ przyjęliśmy że definicja tensora Einsteina jest wedle {{LinkWzór|1.37|Wprowadzenie do ogólnej teorii względności}}, a rozszerzony tensor Einsteina jest w postaci {{LinkWzór|1.40|Wprowadzenie do ogólnej teorii względności}}, a tensor gęstości energii-pędu przyjmuje postać według naszych rozważań według {{LinkWzór|4.19}} dla sygnatury dodatniej (dla sygnatury ujemnej tensor gęstości energii-pędu różni się od tego samego dla sygnatury dodatniej minusem, bo zamieniamy w tym tensorze {{Formuła|<MATH>g^{\mu\nu}\;</MATH>}} na {{Formuła|<MATH>-g^{\mu\nu}\;</MATH>}}, tzn. formalnie, by dla obu sygnator względem siebie ten tensor miał przeciwną, tylko formalnie, postać), pierwsza dla sygnatury dodatniej, a druga dla ujemnej, przechodząc z sygnatury dodatniej do ujemnej, a te tensory kolejno mamy: {{ElastycznyWiersz|{{CentrujWzór|<MATH>T_{\alpha\beta}=-2{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}+g_{\alpha\beta}\mathfrak{L}_m\;</MATH>|4.20}}|{{CentrujWzór|<MATH>T_{\alpha\beta}=2{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}-g_{\alpha\beta}\mathfrak{L}_m\;</MATH>|4.20S}}}} Wiąząc sygnaturę tensora Minkowskiego z przyciąganiem lub odpychaniem, to ostatecznie równanie grawitacji wyprowadzonej przez Hilberta z zasady wariacyjnej, ze stałą kosmologiczną dla sygnatury dodatniej i ujemnej są kolejno przedstawione: {{ElastycznyWiersz|{{CentrujWzór|<MATH>G_{\alpha\beta}+g_{\alpha\beta}\Lambda=\kappa T_{\alpha\beta}\;</MATH>|4.21}}|{{CentrujWzór|<MATH>G_{\alpha\beta}+g_{\alpha\beta}\Lambda=-\kappa T_{\alpha\beta}\;</MATH>|4.2122}}}} Wyprowadzając równanie {{LinkWzór|4.19}} (przy stałej proporcjalności przy {{Formuła|<MATH>\kappa\;</MATH>}} z plusem) mając gęstość lagrangianu przestrzennego {{LinkWzór|4.8}}, biorąc przy nim {{Formuła|<MATH>\kappa\;</MATH>}} z tylko z jednym znakiem, tzn. z plusem, - a więc trochę inaczej - to wtedy wychodzą wzory {{LinkWzór|4.20}} (który jest dla przyciągania grawitacyjnego - sygnatura dodatnia) i {{LinkWzór|4.20S}} (który jest dla odpychania grawitacyjnego - sygnatura ujemna), a ten pierwszy wzór jest dla sygnatury dodatniej, a drugi dla ujemnej, co na tej podstawie wychodząc wzory: {{LinkWzór|4.21}} i {{LinkWzór|4.2122}}, a teraz weźmy znak przy tej stałej z minusem w {{LinkWzór|4.19}}, wtedy otrzymujemy równanie o takiej samej postaci co {{LinkWzór|4.21}}, a tam tensor gęstości energii-pędu jest wtedy o sygnaturze ujemnej, a dla drugiej sygnatury otrzymujemy równanie {{LinkWzór|4.2122}}, a tam tensor gęstości energii-pędu jest dla sygnatury dodatniej, a teraz znak przy {{Formuła|<MATH>\kappa\;</MATH>}} przyjmijmy taki: {{Formuła|<MATH>\mp\;</MATH>}}, to wtedy dla jej znaku minus w równaniu {{LinkWzór|4.19}}, to wtedy tensor gęstości energii-pędu jest dla sygnatury ujemnej w równaniu o postaci {{LinkWzór|4.21}}, a dla jej znaku dodatniego też dla sygnatury ujemnej w równaniu {{LinkWzór|4.20S}}. Sygnaturę tensora gęstości energii-pędu: {{LinkWzór|4.20}} i {{LinkWzór|4.20S}} można zmienić na przeciwną, jeżeli dokonamy podstawienia w tym tensorze według: {{Formuła|<MATH>g^{\mu\nu}\rightarrow-g^{\mu\nu}\;</MATH>}}. Do powyższych tych wniosków dośliśmy z dokładnością, co do znaku przy stałej kosmologicznej {{Formuła|<MATH>\Lambda\;</MATH>}}. Ten same tensory gęstości energii-pędu, co przedstawiony w punktach: {{LinkWzór|4.20}} i {{LinkWzór|4.20S}}, ale później udowodnimy go z zasady wariacyjnej, ale jeszcze dodatkowo wspomniemy o własności lokalnej zasady zachowania tensora gęstości energii-pędu dla układu lokalnie płaskiego, tzn.: T{{Sup|&mu;&nu;}}{{Sub|,&nu;}}=0, mając {{LinkWzór|1.49|Wprowadzenie_do_ogólnej_teorii_względności}}, co później można udowodnić lokalną zasadę zachowania tensora gęstości energii-pędu ogólnie dla układu zakrzywionego {{LinkWzór|1.50|Wprowadzenie_do_ogólnej_teorii_względności}} na podstawie {{LinkWzór|2.27|Tensor gęstości energii-pędu}} z rachunku tensorowego, nie wariacyjnego (według zasady wariacyjnej to samo wychodzi, co z rachunku tensorowego, tzn. lokalną zachowawczość gęstości tensora energii-pędu). == Lokalna zachowawczość tensora gęstości energii-pędu == Będziemy tutaj wyprowadzać lokalną zachowawczość dla wszystkich rodzajów układów i pokażemy, że ogólna teoria względności jest spełniona dla układów lokalnie płaskich i zakrzywionych. ==== Lokalna zachowawczość (przypadek ogólny) ==== Określmy gęstość lagranianu w czasoprzestrzeni lokalnie płaskiej, który jest funkcją współrzędnych uogólnionych i ich pierwszych pochodnych względem współrzędnych czasoprzestrzennych x{{Sup|&alpha;}}, i jego miano jest takie J/m{{Sup|3}}, ale aby policzyć właściwy Lagrangian należy gęstość Lagrangianu przecałkować po całej przestrzeni trójwymiarowej, wtedy możemy określić jego całkę działania, wiedząc, że dla układów lokalnie płaskich i zakrzywionych {{Formuła|<MATH>g_{\mu\nu}\;</MATH>}} ({{Formuła|<MATH>g\;</MATH>}} tylko zależy od zmiennych {{Formuła|<MATH>g_{\mu\nu}\;</MATH>}}), {{Formuła|<MATH>{x^{\mu}}\;</MATH>}}, {{Formuła|<MATH>{x^{\mu}}_{,\alpha}\;</MATH>}} i {{Formuła|<MATH>q^{\alpha}\;</MATH>}} są zmiennymi niezależnymi względem siebie, zapisaną wedle sposobu w układzie lokalnie płaskim: {{CentrujWzór|<MATH>S=c\int^{t_2}_{t_1}dt\int \mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha},q^{\alpha}) dV=\int \mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha},q^{\alpha})dVd(ct)</MATH>|4.22}} *Oznaczając przy tym d&tau;=dVd(ct)=dx{{Sup|0}}dx{{Sup|1}}dx{{Sup|2}}dx{{Sup|3}} jako elementarna gęstość w przestrzeni czterowymiarowej (czasoprzestrzeni) * gdzie dx{{Sup|0}}=cdt jest to różniczka współrzędnej czasowej liczonych w metrach, który jest jako iloczyn prędkości światła i różniczki czasu znanej z codziennego życia, który jest mierzony w sekundach, * x{{Sup|i}} to są współrzędne przestrzenne liczone są w tylko metrach. Po powyższych przekształceniach wiedząc na oznaczenie w elementarnej infinitezymalnej objętości, wtedy całkę działania {{LinkWzór|4.22}} można przedstawić wedle sposobu: {{CentrujWzór|<MATH>S=c\int\mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha}, q^{\alpha})dVdt=\int\mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha}, q^{\alpha})d\tau=\int\sqrt{-g}\mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha}, q^{\alpha})d^4q^{\alpha}</MATH>|4.23}} W powyższym wzorze oznaczeniem q{{Sup|&mu;}} oznaczyliśmy współrzędne uogólnione, które opisują układ zanurzony w kartezjańskim układzie współrzędnych. Znając całkę działania {{LinkWzór|4.23}} możemy napisać równanie Eulera-Lagrange'a, pamiętając o niezależności pewnych zmiennych względem siebie, wedle sposobu: {{CentrujWzór|<MATH>{{\partial}\over{\partial q^{\alpha}}}{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}-{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial {x^{\mu}}}}=0\Rightarrow {{\partial}\over{\partial q^{\alpha}}}{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}-{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}}}=0</MATH>|4.24}} Rozpiszmy teraz z definicji różniczki zupełnej pochodną cząstkową Lagrangianu względem współrzędnej kontrawariantnej q{{Sup|&beta;}} w przestrzeni Minkowskiego na wyrażenie zapisaną za pomocą pochodnej tego samego lagrangianu względem współrzędnej uogólnionej x{{Sup|&mu;}} i względem pochodnej wspomnianej współrzędnej względem współrzędnej uogólnionej q{{Sup|&alpha;}}, czyli x{{Sup|&mu;}}{{Sub|,&alpha;}}: {{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial q^{\beta}}}={{\partial \mathfrak{L}}\over{\partial {x^{\mu}}}}{x^{\mu}}_{,\beta}+{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\alpha,\beta}</MATH>|4.25}} Z zasady wariacyjnej {{LinkWzór|4.24}} można napisać tak by po przenoszeniu drugiego wyrazu na prawą stronę i odwracając stronami, po tej operacji dostajemy: {{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}}}={{\partial}\over{\partial q^{\alpha}}}{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}</MATH>|4.26}} Podstawiamy równanie {{LinkWzór|4.26}} do pierwszego wyrazu z prawej strony równania {{LinkWzór|4.25}} i dokonując zwinięcia pewnych wyrazów, w której wystepują pod pochodną względem jakieś współrzędnej: {{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial q^{\beta}}}={{\partial}\over{\partial q^{\alpha}}}{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}+{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\alpha,\beta}\Rightarrow{{\partial \mathfrak{L}}\over{\partial q^{\beta}}}={{\partial}\over{\partial q^{\alpha}}}\left({{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}\right)</MATH>|4.27}} Wiemy jednak, z definicji delty Kroneckera możemy zapisać pochodną lagrangianu względem zmiennej q{{Sup|&beta;}} troszkę w innej postaci przy pomocy ostatnio wspomnianego obiektu. {{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial q^{\beta}}}={\delta^{\alpha}}_{\beta}{{\partial \mathfrak{L}}\over{\partial q^{\alpha}}}</MATH>|4.28}} Równanie {{LinkWzór|4.27}} możemy napisać po podstawieniu do niego udowodnionej tożsamości {{LinkWzór|4.28}}, wtedy otrzymujemy równanie wyłączając operator pochodnej cząstkowej względem x{{Sup|&alpha;}}, zatem: {{CentrujWzór|<MATH>0={{\partial}\over{\partial q^{\alpha}}}\left({{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}-{\delta^{\alpha}}_{\beta}\mathfrak{L}\right)</MATH>|4.29}} Równanie {{LinkWzór|4.29}} mnożymy przez g;{{Sup|&beta;&gamma;}}, otrzymujemy: {{CentrujWzór|<MATH>0={{\partial}\over{\partial q^{\alpha}}}\left({{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}g^{\gamma\beta}-g^{\gamma\alpha}\mathfrak{L}\right)\;</MATH>|4.30}} Udowodnijmy tensor gęstości energii-pędu {{LinkWzór|4.20}} wychodząc z przedstawienia {{LinkWzór|4.30}} pod nawiasem, zatem przekształcajmy pierwszy wyraz pod pochodną w {{LinkWzór|4.30}} wiedząc, że tensor metryczny podwójnie kontrawariantny jest zapisany jako g{{Sup|&epsilon;&xi;}}=q{{Sup|&epsilon;,&nu;}}q{{Sup|&xi;}}{{Sub|,&nu;}}, otrzymujemy: {{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}g^{\gamma\beta}={{\partial\mathfrak{L}}\over{\partial g_{\epsilon\xi}}}{{\partial g_{\epsilon\xi}}\over{\partial {x^{\mu}}_{,\alpha}}} {x^{\mu}}_{,\beta} g^{\gamma\beta} = {{\partial\mathfrak{L}}\over{\partial g_{\epsilon\xi}}}{{\partial \left(x^{\nu}_{,\epsilon}x_{\nu,\xi}\right)}\over{{\partial x^{\mu}}_{,\alpha} }} {x^{\mu}}_{,\beta} g^{\gamma\beta}=2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\xi}}}{x_{\mu,\xi}}{x^{\mu}}_{,\beta} g^{\gamma\beta}=2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\xi}}}g_{\xi\beta} g^{\gamma\beta}=2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\xi}}}{\delta^{\gamma}}_{\xi}=2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\gamma}}}\;</MATH>|4.35}} A więc na podstawie obliczeń na liczbach ogólnych tożsamość {{LinkWzór|4.35}} podstawiamy to wzoru {{LinkWzór|4.30}}, wtedy: {{CentrujWzór|<MATH>0={{\partial}\over{\partial q^{\alpha}}}\left(2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\gamma}}}-g^{\alpha\gamma}\mathfrak{L}\right)\;</MATH>|4.35a}} Równanie {{LinkWzór|4.35a}} jest słuszne dla układów lokalnie płaskich i układów zakrzywionych. ==== Przypadek układów lokalnie płaskich z gęstością lagrangianu masowego oraz przypadek układów zakrzywionych z gęstością całkowitego lagrangianu ==== Dla tych układów na podstawie {{LinkWzór|4.35a}} tensor gęstości energii podwójnie kowariantny możemy przedstawić względem lagrangianu oraz tensora metrycznego prostego i odwrotnego dla sygnatury tensora metrycznego Minkowskiego dodatniej i ujemnej, mamy koleno: {{ElastycznyWiersz|{{CentrujWzór|<MATH>T^{\gamma\omega}=-2{{\partial\mathfrak{L}}\over{\partial g_{\gamma\omega}}}+g^{\gamma\omega}\mathfrak{L}\;</MATH>|4.36|Obramuj}}|{{CentrujWzór|<MATH>T^{\gamma\omega}=2{{\partial\mathfrak{L}}\over{\partial g_{\gamma\omega}}}-g^{\gamma\omega}\mathfrak{L}\;</MATH>|4.3611|Obramuj}}}} Wtedy zachowawczość w układach lokalnie płaskich jest w postaci: {{CentrujWzór|<MATH>{{\partial}\over{\partial q^{\gamma}}}T^{\gamma\omega}=0\Rightarrow{T^{\gamma\omega}}_{,\gamma}=0\;</MATH>|4.35ba}} ==== Zachowawczość tensora gęstości energii-pędu w układach zakrzywionych ==== Dla układów zakrzywionych równość {{LinkWzór|4.35a}} przedstawimy wiedząc, że zachodzi {{LinkWzór|4.4}} i wzór na gęstość lagrangianu przestrzennego {{LinkWzór|4.8}}, i znając wzór na tensor gęstości energii-pędu dla układów zakrzywionych {{LinkWzór|4.20}} (sygnatura dodatnia) i {{LinkWzór|4.20S}} (sygnatura ujemna), a więc dla postaci równania dla przyciągania i odpychania grawitacyjnego oraz uwzględniając znaki przy stałej {{Formuła|<MATH>\kappa\;</MATH>}} (ono jest dodatnie), są cztery ogólne możliwości, weźmy sygnaturę dodatnią tego tensora, wtedy znak przy {{Formuła|<MATH>\kappa\;</MATH>}} w równaniu Hilberta-Einsteina przjmujemy wtedy z plusem, a dla sygnatury ujemnej jest wtedy znak przy tej stałej z minusem w tym samym równaniu, czyli dla sygnatury dodatniej jest wtedy przyciąganie grawitacyjne opisane tensorowym równaniem {{LinkWzór|4.21}} przy definicji tensora gęstości energii-pędu {{LinkWzór|4.20}}, a dla jej, ale ujemnej, równaniem {{LinkWzór|4.2122}} przy tym tensorze, ale według {{LinkWzór|4.20S}}, jest wtedy odpychanie grawitacyjne. A to wszystko można udowodnić w obliczeniach: {{CentrujWzór|<MATH>0={T^{\gamma\omega}}_{,\gamma}+{{\partial}\over{\partial q^{\gamma}}}\left(\mp 2{{\partial\mathfrak{L}_g}\over{\partial g_{\gamma\omega}}}\pm g^{\gamma\omega}\mathfrak{L}_g\right)={T^{\gamma\omega}}_{,\gamma}+{{\partial}\over{\partial q^{\gamma}}}\left(\mp 2{{1}\over{2\kappa}}R^{\gamma\omega}\pm g^{\gamma\omega}{{R}\over{2\kappa}}\mp g^{\gamma\omega}{{2\Lambda}\over{2\kappa}}\right)={T^{\gamma\omega}}_{,\gamma}\mp{{1}\over{\kappa}}{{\partial}\over{\partial q^{\gamma}}}\Big(R^{\gamma\omega}-{{1}\over{2}}g^{\gamma\omega}R+\;</MATH>{{Br}}<MATH>+ g^{\gamma\omega}\Lambda\Big)={T^{\gamma\omega}}_{,\gamma}\mp{{1}\over{\kappa}}{{\partial}\over{\partial q^{\gamma}}}O^{\gamma\omega}={T^{\gamma\omega}}_{,\gamma}\mp{{1}\over{\kappa}}\left({O^{\gamma\omega}}_{;\gamma}- O^{\gamma\mu}{\Gamma^{\omega}}_{\mu\gamma}- O^{\mu\omega}{\Gamma^{\gamma}}_{\mu\gamma}\right)={T^{\gamma\omega}}_{,\gamma}+T^{\gamma\mu}{\Gamma^{\omega}}_{\mu\gamma}+T^{\mu\omega}{\Gamma^{\gamma}}_{\mu\gamma}={T^{\gamma\omega}}_{;\gamma} \;</MATH>|4.36a}} Powyżej udowodniliśmy, że dla sygnatury dodatniej i ujemnej są kolejno: przyciąganie i odpychanie grawitacyjne, weźmy w obliczeniach {{LinkWzór|4.36a}} zamiast {{Formuła|<MATH>\kappa\;</MATH>}} (ta stała jest dodatnia) inną stałą proporcjalności, tzn.: {{Formuła|<MATH>-\kappa\;</MATH>}} (stała {{Formuła|<MATH>\kappa\;</MATH>}} w nim jest dodatnia, a z minusem ujemna), co wtedy udowodnimy, że dla sygnatury dodatniej i ujemnej są kolejno: odpychanie i przyciąganie grawitacyjne. Czyli dwoma sygnaturami są opisane dwa rodzaje oddziaływań grawitacyjnych. Zachowawczość tensora gęstości energii T{{Sup|&gamma;&omega;}} przy jego definicji: {{LinkWzór|4.20}} i {{LinkWzór|4.20S}}, na podstawie tożsamości różniczkowej {{LinkWzór|4.36a}}, przedstawia się dla obu sygnatur: {{CentrujWzór|<MATH>{T^{\gamma\omega}}_{;\gamma}=0\;</MATH>|4.6b}} Równanie {{LinkWzór|4.6b}} dla sygnatury ujemnej jest takie samo jak on dla sygnatury dodatniej, co do postaci, tylko jest troszkę inna definicja tensora gęstości energii-pędu, tzn.: {{LinkWzór|4.20}} - sygnatura dodatnia, i {{LinkWzór|4.20S}} - sygnatura ujemna. Równanie {{LinkWzór|4.6b}} wyprowadziliśmy z równości {{LinkWzór|4.35ba}} korzystając z definicji gęstości całkowitego lagrangianu {{LinkWzór|4.15}} będącej sumą gęstości lagrangianu masowego i przestrzennego {{LinkWzór|4.8}}, czyli otrzymaliśmy lokalną zachowawczość tensora gęstości energii-pędu, gdzie definicja tego tensora jest napisana w punkcie {{LinkWzór|1.48|Wprowadzenie do ogólnej teorii względności}} dla sygnatury dodatniej i {{LinkWzór|1.48|Wprowadzenie do ogólnej teorii względności}} dla sygnatury ujemnej. Lokalną zachowawczość tensora gęstości energii-pędu z przecinkiem otrzymaliśmy ze szczególnej teorii względności napisaną w punkcie {{LinkWzór|3.19aa11|Lokalna zachowawczość tensora gęstości energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} i {{LinkWzór|4.35ba11|Lokalna zachowawczość tensora gęstości energii(masy)-pędu z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, pisząc je dla obu sygnatur, z gęstością tensora siły zewnętrznej dla tego pierwszego równej zero, by te oba równania były równoważne, co dla układów zakrzywionych po transformacji do nich przecinek zastępujemy średnikiem i otrzymujemy równość {{LinkWzór|4.6b}}. == Lokalna zasada zachowania energii-pędu == Lokalną zasadę zachowania możemy napisać wychodząc ze szczególnej teorii względności z uwzględnieniem gęstości lagrangianu masowego z równania {{LinkWzór|g43|Lokalna zasada zachowania tensora pędu, z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} patrząc na równość {{LinkWzór|JH3|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}}, tylko zamiast tensora gęstości energii-pędu kinematycznego jest tensor gęstości energii-pędu masowy: {{CentrujWzór|<MATH>\gamma\sqrt{-g}\left(\rho v^{\mu}\right)_{;0}=-{{\gamma}\over{c}}\sqrt{-g}{T^{\mu j}}_{;j}+{{dK^{\mu}_z}\over{dV}}\;</MATH>|JHG12}} Gdzie w {{LinkWzór|JHG12}} jest w nim tensor gęstości energii-pędu zdefiniowany wzorem {{LinkWzór|4.36}} dla sygnatury dodatniej lub {{LinkWzór|4.3611}} dla sygnatury ujemnej. == Dowód równania Hilberta-Einsteina grawitacji nie z teorii lagrangianowej == Równania Hilberta-Einsteina grawitacji {{LinkWzór|4.21}} - przyciąganie grawitacyjne, {{LinkWzór|4.2122}} - odpychanie grawitacyjne, wykorzystując wzór na lokalną zachowawczość gęstości tensora energii-pędu {{LinkWzór|4.6b}} wymnażając obie strony przez stałą {{Formuła|<MATH>\pm\kappa\;</MATH>}}, {{Formuła|<MATH>\sqrt{-g}\;</MATH>}} i {{Formuła|<MATH>\overline e_{\omega}\;</MATH>}}, która w układach lokalnie płaskich jest wersorem lokalnie stałym, oraz całkując obustronnie względem całki objętościowej w czasoprzestrzeni zakrzywionej wykorzystując, że zachodzi własność dla rozszerzonego tensora Einsteina {{Formuła|<MATH>O^{\mu\nu}\;</MATH>}}, tzn.: {{LinkWzór|1.41|Wprowadzenie do ogólnej teorii względności}}, i doprowadzając obustronnie całkę z układów zakrzywionych do lokalnie płaskich, co później wykorzystując [[w:Twierdzenie Ostrogradskiego-Gaussa|twierdzenie Ostrogradskiego-Gaussa]] otrzymując w tym układzie całkę powierzchniową w układzie lokalnie płaskim, dalej z twierdzenia transformacji doprowadzamy całkę powierzchniową do układów zakrzywionych, otrzymujemy: {{CentrujWzór|<MATH>{\overline T^{\omega\gamma}}_{;\gamma}=0\Rightarrow \pm\kappa {\overline T^{\omega\gamma}}_{;\gamma}=0\Rightarrow \pm\kappa\int_{\tau}\sqrt{-g}\overline e_{\omega}{\overline T^{\omega\gamma}}_{;\gamma}d\tau=\int_{\tau}\sqrt{-g}\overline e_{\omega}\cdot 0\cdot d\tau\Rightarrow \pm\kappa\int_{\tau}\sqrt{-g}\overline e_{\omega}{\overline T^{\omega\gamma}}_{;\gamma}d\tau=\int_{\tau}\sqrt{-g}\overline e_{\omega}{\overline O^{\omega\gamma}}_{;\gamma}d\tau\Rightarrow \;</MATH>{{Br}}<MATH>\Rightarrow \pm\kappa\int_{\tau^'}e_{\omega^'}{T^{\omega^'\gamma^'}}_{,\gamma^'}d\tau^'=\int_{\tau^'}e_{\omega^'}{O^{\omega^'\gamma^'}}_{,\gamma^'}d\tau^' \Rightarrow\pm\kappa\oint_{\Sigma}e_{\omega^'}T^{\omega^'\gamma^'}d\Sigma_{\gamma^'}=\oint_{\Sigma}e_{\omega^'}O^{\omega^'\gamma^'}d\Sigma_{\gamma^'}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\pm\kappa\oint_{\overline \Sigma}\overline e_{\omega}\overline T^{\omega\gamma}d\overline \Sigma_{\gamma}=\oint_{\overline \Sigma}\overline e_{\omega}\overline O^{\omega\gamma}d\overline \Sigma_{\gamma}\Rightarrow\oint_{\overline \Sigma}\overline e_{\omega}\left(\pm\kappa \overline T^{\omega\gamma}-\overline O^{\omega\gamma}\right)d\overline \Sigma_{\gamma}=0\;</MATH>|HH}} Równanie ostatnie w {{LinkWzór|HH}} jest spełnione dla dowolnych powierzchni zamkniętych {{Formuła|<MATH>\overline \Sigma\;</MATH>}} i wersorów {{Formuła|<MATH>\overline e_{\omega}\;</MATH>}} w bazie, wtedy z tego równania dochodzimy do równości tensorowej, którym jest równaniem, które chcemy otrzymać, pisząc bez nadkreśleń: {{CentrujWzór|<MATH>\pm\kappa T^{\omega\gamma}-O^{\omega\gamma}=0\Rightarrow O^{\omega\gamma}=\pm\kappa T^{\omega\gamma}\Rightarrow G^{\omega\gamma}+\Lambda g^{\omega\gamma}=\pm\kappa T^{\omega\gamma}</MATH>|HH1}} Końcowe równanie w {{LinkWzór|HH1}} wyprowadzone jest z zachowawczości tensora gęstości energii-pędu {{LinkWzór|4.6b}}, jeżeli od zewnątrz nie działają na układ żadne siły zewnętrzne. == Szczególne postacie gęstości Lagrangianu == Wiedząc jaka jest gęstość lagrangianu przedstawionego w punkcie {{LinkWzór|1.122a1|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} w zerowym polu elektromagnetycznym, wtedy przepisując to dla tego przypadku i dokonując przekształceń, wtedy otrzymamy wzór taki sam jak w punkcie {{LinkWzór|4.360b|Lagrangian masowy kinematyczny w mechanice Einsteina i Newtona|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} dla sygnatury dodatniej i ujemnej (pojawia się tutaj dodatkowy minus) tensora metrycznego Minkowskiego przedstawiamy kolejno dla pierwszej sygnatury: {{CentrujWzór|<MATH>\mathfrak{L}=-\rho_0c^2=-\rho_0c^2u^{\dot \mu}u_{\dot\mu}=-\left[{{1}\over{2}}\left(\rho_0 c^2+p\right)u^{\dot\mu}\eta_{\dot\mu\dot\nu}u^{\dot\nu}+{{1}\over{2}}(\rho_0c^2-p)\eta^{\alpha\dot\mu}\eta_{\dot\mu\alpha}\right]\;</MATH>|4.360b}} Dla drugiej (zamiast {{Formuła|<MATH>\eta^{\mu\nu}\;</MATH>}} wstawiamy tensor {{Formuła|<MATH>-\eta^{\mu\nu}\;</MATH>}} do gęstości lagrangianu kinematycznego {{LinkWzór|4.360b}}): {{CentrujWzór|<MATH>\mathfrak{L}=-\rho_0c^2=\rho_0c^2u^{\dot \mu}u_{\dot\mu}=-\left[-{{1}\over{2}}\left(\rho_0 c^2+p\right)u^{\dot\mu}\eta_{\dot\mu\dot\nu}u^{\dot\nu}+{{1}\over{2}}(\rho_0c^2-p)\eta^{\alpha\dot\mu}\eta_{\dot\mu\alpha}\right]\;</MATH>|4.360b111}} We wzorze {{LinkWzór|4.360b}} sumowanie jest tylko po {{Formuła|<MATH>\mu\;</MATH>}} i {{Formuła|<MATH>\nu\;</MATH>}}, a względem {{Formuła|<MATH>\alpha\;</MATH>}} już nie. W przypadku wzoru na gęstości lagrangianu: {{LinkWzór|4.360b}} i {{LinkWzór|4.360b111}} zakładamy, że jest on również słuszny dla układów zakrzywionych, wtedy możemy napisać lagrangian masowy na podstawie {{LinkWzór|3.9|Właściwości skalaru tensora metrycznego}} w układach ogólnie zakrzywionych, biorąc gęstość lagrangianu z punktu {{LinkWzór|4.360b}}, nazywając ją według procedury {{Formuła|<MATH>\mathfrak{L}\rightarrow \mathfrak{L}_m\;</MATH>}}, a także pisząc {{Formuła|<MATH>L\rightarrow L_m\;</MATH>}}, wtedy też piszemy inne zastąpienie {{Formuła|<MATH>\eta^{\mu\nu}\rightarrow g^{\mu\nu}\;</MATH>}}, zatem: {{CentrujWzór|<MATH>L_m=\int\mathfrak{L}_mdV^'=\int\sqrt{-g}\mathfrak{L}_mdV\;</MATH>|4.360b1}} Widzimy, że we wzorze {{LinkWzór|4.360b1}} gęstość lagrangianu masowego przechodzi w formułę {{LinkWzór|4.360b}} i {{LinkWzór|4.360b111}}, (w gęstość lagrangianu), dla {{Formuła|<MATH>g_{\mu\nu}=\eta_{\mu\nu}\;</MATH>}}. == Najważniejsze wnioski w odpowiednich klasach układów z lokalnie stałymi jakimiś wielkościami == Jest spełniona równość w odpowiednich klasach układów lokalnie spoczynkowych: {{CentrujWzór|<MATH>{{\partial u^{\mu}}\over{\partial x^{\nu}}}=0\wedge u^{i}\rightarrow 0\wedge u^0=1\;</MATH>|qw20}} Jest spełniona równość w odpowiednich klasach układów lokalnie stałym tensorze prędkości: {{CentrujWzór|<MATH>{{\partial u^{\mu}}\over{\partial x^{\nu}}}=0\;</MATH>|qw201}} Jest spełniona równość dla odpowiednich klasach układów z lokalnie stałą gęstością spoczynkową: {{CentrujWzór|<MATH>{{\partial\rho_0}\over{\partial x^{\mu}}}=0\;</MATH>|qw2}} Jest również spełniona równość dla ciśnienia w odpowiednich klasach układów z lokalnie stałym ciśnieniem: {{CentrujWzór|<MATH>{{\partial p}\over{\partial x^{\mu}}}=0\;</MATH>|qw3}} Wniosek {{LinkWzór|1.42|Wprowadzenie do ogólnej teorii względności}}, {{LinkWzór|qw20}}, {{LinkWzór|qw2}} i {{LinkWzór|qw3}} są spełnione ogólnie dla układów lokalnie płaskich lokalnie spoczynkowych z lokalną stałością tensorów prędkości, gęstości masy spoczynkowej i ciśnienia, co taką klasę układów można użyć też do częściowego udowodnienia ogólnej teorii względności, np. do dowodu lokalnej zachowawczości tensora gęstości energii-pędu, jak w szczególnej teorii względności w {{LinkWzór|3.20|Lokalna zachowawczość tensora gęstości energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, lub mając ten sam układ biorąc zamiast {{LinkWzór|qw20}} warunek lokalności {{LinkWzór|qw201}}, wtedy mamy taką samą klasę układów współrzędnych z różnicą, że te układy nie są lokalnie spoczynkowymi, tylko lokalnie ze stałym tensorem prędkości, które można wykorzystać też do takiej samej teorii, ale dla układów lokalnie płaskich. == Tensor gęstości energii-pędu dla układów ogólnie zakrzywionych == Wykorzystajmy gęstość langrangianu masowego {{LinkWzór|4.360b}} (ostatnia równość) dla układów lokalnie płaskich zamieniając w nim według formuły: {{Formuła|<MATH>\eta^{\mu\nu}\rightarrow g^{\mu\nu}\;</MATH>}}, co wynika z definicji transformacji tensorów, wtedy otrzymamy gęstość lagrangianu masowego dla układów zakrzywionych dla sygnatury dodatniej tensora metrycznego Minkowskiego w postaci: {{CentrujWzór|<MATH>\mathfrak{L}_m=-\rho_0c^2=-\rho_0c^2u^{\dot \mu}u_{\dot\mu}=-\rho_0c^2u^{\dot \mu}g_{\dot\mu\dot\nu}u^{\dot\nu}=-\left[{{1}\over{2}}\left(\rho_0 c^2+p\right)u^{\dot\mu}g_{\dot\mu\dot\nu}u^{\dot\nu}+{{1}\over{2}}(\rho_0c^2-p)g^{\alpha\dot\mu}g_{\dot\mu\alpha}\right]\;</MATH>|4.360b11}} Dla drugiej (tutaj widzimy, że się pojawia dodatkowy minus przy gęstości lagrangianu masowego i minus przy tensorze metrycznym - drugie przedstawienie jego, przedstawienie względem {{LinkWzór|4.360b11}}): {{CentrujWzór|<MATH>\mathfrak{L}_m=-\rho_0c^2=\rho_0c^2u^{\dot \mu}u_{\dot\mu}=-\left[-{{1}\over{2}}\left(\rho_0 c^2+p\right)u^{\dot\mu}g_{\dot\mu\dot\nu}u^{\dot\nu}+{{1}\over{2}}(\rho_0c^2-p)g^{\alpha\dot\mu}g_{\dot\mu\alpha}\right]\;</MATH>|4.360b112}} W takiem razie tensor gęstości energii-pędu z jego definicji {{LinkWzór|4.20}} za pomocą lagrangianu masowego {{LinkWzór|4.360b11}} jest ona napisana dokładnie dla pierwszej sygnatury: {{CentrujWzór|<MATH>T^{\alpha\beta}=\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}+(\rho_0c^2-p)g^{\alpha\beta}-{{1}\over{2}}\left(\rho_0 c^2+p\right)g^{\alpha\beta}-{{1}\over{2}}(\rho_0c^2-p)g^{\alpha\beta}\Rightarrow T^{\alpha\beta}=\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}-pg^{\alpha\beta}</MATH>|4.36b}} Dla drugiej (tutaj widzimy, że pojawia się minus przy tensorze metrycznym układu zakrzywionego) względem {{LinkWzór|4.36b}}: {{CentrujWzór|<MATH>T^{\alpha\beta}=\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}-(\rho_0c^2-p)g^{\alpha\beta}+{{1}\over{2}}\left(\rho_0 c^2+p\right)g^{\alpha\beta}+{{1}\over{2}}(\rho_0c^2-p)g^{\alpha\beta}\Rightarrow T^{\alpha\beta}=\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}+pg^{\alpha\beta}</MATH>|4.36b2}} Co otrzymaliśmy taki sam tensor gęstości energii-pędu w {{LinkWzór|4.36b}} - sygnatura dodatnia, i {{LinkWzór|4.36b2}} - sygnatura ujemna, co kolejno w punktach {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}} i {{LinkWzór|1.45|Wprowadzenie do ogólnej teorii względności}}. Są to tensory gęstości energii-pędu, które możemy wykorzystać w lokalnej zachowawczości tensora gęstości energii-pędu {{LinkWzór|4.6b}} i w równaniu Hilberta-Einsteina w {{LinkWzór|4.21}} dla sygnatury dodatniej i {{LinkWzór|4.2122}} dla sygnatury ujemnej. A jeżeli zastosujemy silną zasadę równoważności, to równości: {{LinkWzór|4.36b}} i {{LinkWzór|4.36b2}}, powinny być równoważne z tym tensorem, w szczególnej teorii względności, jako: {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}} i {{LinkWzór|1.45|Wprowadzenie do ogólnej teorii względności}}, które otrzymujemy z analogicznych sposobów jak kolejno z {{LinkWzór|4.360b11}} i {{LinkWzór|4.360b112}} do {{LinkWzór|4.36b}} i {{LinkWzór|4.36b2}}, a dla szczególnej teorii względności mamy kolejno z {{LinkWzór|4.360b}} i {{LinkWzór|4.360b111}} do {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}} i {{LinkWzór|1.45|Wprowadzenie do ogólnej teorii względności}}, tylko zamiast tensora metrycznego Minkowskiego jest tensor metryczny układu ogólnie zakrzywionego, dla obu kolejno sygnatur. == Linie geodezyjne, a zasady równoważności == Wyprowadzimy tutaj równania geodezyjne dla układów punktowych i rozciągłych, a także z równań dla układów rozciągłych udowodnimy równanie dla układów punktowych, że sa one co do siebie równoważne, a także udowodnimy słabą i silną zasadę równoważności. === Przypadek linii geodezyjnych, tzn.: w pierwszym sposobie wyprowadzania, a silna zasada równoważności (dowód) === Wyprowdzimy tutaj z drugiej zasady Lagrange'a prawa ruchu ogólnej teorii względności dla układów punktowych i rozciągłych. ==== Układy punktowe ==== Weźmy lagrangian układu zakrzywionego, pisząc go dla obu sugnatur korzystając z definicji jedynki z {{LinkWzór|1.9|Wprowadzenie do ogólnej teorii względności}}, co na tej podstawie możemy lagrangian kinematyczny tensorowy przekształcić do postaci: {{CentrujWzór|<MATH>L_k=-{{1}\over{2}}m_0c^2=\mp{{1}\over{2}}m_0c^2\dot q^{\mu}g_{\mu\nu}\dot q^{\nu}\;</MATH>|JJ1}} Całkę działania dla lagrangianu kinematycznego dla układu zakrzywionego piszemy jako całkę po interwale czasoprzestrzennym z lagrangianu kinematycznego: {{CentrujWzór|<MATH>S=\int_s L_kds\;</MATH>|JJ2}} Napiszmy równanie na drugą zasad Lagrange'a mając lagrangian i ogólniony tensor siły, wiedząc, że całka działania {{LinkWzór|JJ2}} wtedy przyjmuje wartość najmniejszą: {{CentrujWzór|<MATH>{{d}\over{ds}}{{\partial L_k}\over{\partial \dot{q}^{\alpha}}}-{{\partial L_k}\over{\partial q^{\alpha}}}=Q_k</MATH>|JJ3}} Teraz policzmy kolejne wyrazy występujące w wyrażeniu Lagrange'a {{LinkWzór|JJ3}}, ale najpierw przejdźmy do drugiego składnika występujący w naszym wspomnianym wyrażeniu, czyli policzmy wyrażenie z dokładnością z dokładnością do czynników stałych jako pochodną cząstkową lagrangianu kinematycznego względem uogólnionego położenia: {{CentrujWzór|<MATH>\mp{{1}\over{m_0c^2}}{{\partial L_k}\over{\partial q^{\alpha}}}={{\partial}\over{\partial q^{\alpha}}}\left({{1}\over{2}}g_{\mu\nu}\dot{q}^{\mu}\dot{q}^{\nu}\right)={{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}</MATH>|JJ4}} Wyraz występujący pod pochodną zupełną po interwale czasoprzetrzennym pochodnej różniczkowej względem prędkości uogólnionej, który występuje w równaniu Eulera-Lagrange'a {{LinkWzór|JJ3}}, możemy przekształcić z dokładnością do czynników stałych do: {{CentrujWzór|<MATH>\mp{{1}\over{m_0c^2}}{{\partial \mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}={{1}\over{2}}\left(g_{\mu\nu}{\delta^{\nu}}_{\alpha}\dot{q}^{\mu}+\rho_0g_{\mu\nu}{\delta^{\mu}}_{\alpha}\dot{q}^{\nu}\right)={{1}\over{2}}\left(g_{\alpha\mu}\dot{q}^{\mu}+g_{\alpha\nu}\dot{q}^{\nu} \right)={{1}\over{2}}\left(g_{\alpha\mu}\dot{q}^{\mu}+g_{\mu\alpha}\dot{q}^{\mu} \right)={{1}\over{2}}\left(2g_{\alpha\mu}\dot{q}^{\mu}\right)=g_{\alpha\mu}\dot{q}^{\mu}</MATH>|JJ5}} Wyznaczmy pochodną zupełną względem interwału czasoprzestrzennego wuyrażenia obliczonego {{LinkWzór|JJ5}}, dzięki któremu napiszmy: {{CentrujWzór|<MATH>\mp{{1}\over{m_0c^2}}{{d}\over{ds}}{{\partial \mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}={{d}\over{ds}}\left(g_{\alpha\mu}\dot{q}^{\mu} \right)=g_{\alpha\mu}\ddot{q}^{\mu}+{{dg_{\alpha\mu}}\over{ds}}\dot{q}^{\mu}=g_{\alpha\mu}\ddot{q}^{\mu}+ {{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}</MATH>|JJ6}} Połączmy wyrażenia {{LinkWzór|JJ5}} i {{LinkWzór|JJ6}}, oraz podstawmy je odpowiednio do wzoru {{LinkWzór|JJ3}}, w takim przypadku napiszmy równość do przekształcenia matematycznego: {{CentrujWzór|<MATH>g_{\alpha\mu}\ddot{q}^{\mu}+ {{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}-{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}=\mp{{1}\over{m_0c^2}}Q^{\mu}\;</MATH>|JJ7}} Ale mamy z definicji tensora metrycznego prostego i odwrotnego mamy dwie tożsamości, które przestawimy poniżej w postaci dwóch tożsamości, które wynikają z własności ogólnie tensora metrycznego. {{ElastycznyWiersz|1={{CentrujWzór|<MATH>g^{\beta\alpha}g_{\alpha\mu}={\delta^{\beta}}_{\mu}</MATH>|4.46}}|2={{CentrujWzór|<MATH>g^{\beta\alpha}g_{\alpha\mu}\ddot{q}^{\mu}=\delta^{\beta}_k\ddot{q}^{\mu}=\ddot{q}^{\beta}</MATH>|4.47}}}} Z przemienności wskaźników tensora metrycznego wynikającego z jego definicji, tzn. drugi wyraz w tożsamości {{LinkWzór|4.45}}, możemy napisać: {{CentrujWzór|<MATH>g^{\beta\alpha}{{\partial g_{\alpha\mu}}\over{\partial \dot{q}^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}={{1}\over{2}}g^{\beta\alpha}\left({{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}+{{\partial g_{\alpha\nu}}\over{\partial q^{\mu}}}\right)\dot{q}^{\mu}\dot{q}^{\nu}</MATH>|4.48}} Symbole Christoffela możemy przedstawić wedle jej definicji występującego w równaniu tensorowym {{LinkWzór|4.49}}: {{CentrujWzór|<MATH>{\Gamma^{\beta}}_{\mu\nu}={{1}\over{2}}g^{\beta\alpha}\left( {{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}+{{\partial g_{\alpha\nu}}\over{\partial q^{\mu}}}-{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\right)</MATH>|4.50}} Pomnóżmy równość {{LinkWzór|JJ7}} przez element {{Formuła|<MATH>g^{\beta\alpha}\;</MATH>}}, dalej wykorzystajmy obliczenia na liczbach ogólnych {{LinkWzór|4.47}} i {{LinkWzór|4.48}} i wykorzystując definicję symboli Christoffela {{LinkWzór|4.50}} z rachunku tensorowego, wtedy: {{CentrujWzór|<MATH>\ddot{q}^{\beta}+{\Gamma^{\beta}}_{\mu\nu}\dot{q}^{\nu}\dot{q}^{\mu}=\mp{{1}\over{m_0c^2}}Q^{\beta}\Rightarrow{\dot q^{\beta}}_{;\alpha}\dot q^{\alpha}=\mp{{1}\over{m_0c^2}}Q^{\beta}\;</MATH>|JJ8}} Ale definicja uogólnionego tensora siły jest w drugiej zasadzie Lagrange'a dla układów punktowych dla obu sygnatur taka: {{CentrujWzór|<MATH>Q^{\beta}=\mp c K^{\beta}\;</MATH>|JJ9}} Wykorzystajmy definicję {{LinkWzór|JJ9}} na definicję uogólnionego tensora siły do równości {{LinkWzór|JJ8}}: {{CentrujWzór|<MATH>m_0c{\dot q^{\beta}}_{;\alpha}\dot q^{\alpha}=K^{\beta}\;</MATH>|JJ10}} Równość {{LinkWzór|JJ10}} dla układów lokalnie płaskich możemy przepisać z rachunku tensorowego z praw transformacji tensorowej: {{CentrujWzór|<MATH>m_0c{\dot q^{\beta}}_{,\alpha}\dot q^{\alpha}=K^{\beta}\Rightarrow m_0c{{du^{\beta}}\over{ds}}=K^{\beta}\;</MATH>|JJ11}} Końcowe równanie jest takie same jak równość na '''drugą zasadę dynamiki Einsteina''', czyli '''silna zasada równoważności''' dla układów punktowych jest spełniona. ==== Układy rozciągłe ==== Będziemy tutaj wyprowadzać linie geodezyjne dla wszystkich rodzajów układów rozciągłych i pokażemy, że ogólna teoria względności jest spełniona dla układów lokalnie płaskich i zakrzywionych. Napiszmy lagrangian w układach rozciągłych płaskich i zakrzywionych, wiedząc, że {{Formuła|<MATH>q^{\alpha}\;</MATH>}} i {{Formuła|<MATH>\dot{q}^{\alpha}\;</MATH>}} są zmiennymi niezależnymi względem siebie, wtedy w układzie zakrzywionym napiszmy całkowity lagrangian, z którego wyznaczymy gęstość lagrangianu kinematycznego tensorowego dla obu sygnatur tensora metrycznego, wychodząc od układu lokalnie płaskiego (opisywana przez szczególną teorię względności) do układu współrzędnych opisującego przestrzeń zakrzywioną (opisywaną przez ogólną teorię względności): {{CentrujWzór|<MATH>L_k=-{{1}\over{2}}m_0c^2=\mp{{1}\over{2}}c^2\int_V\rho_0dV_0=-{{1}\over{2}}c^2\int_V\rho_0\gamma\sqrt{1-{{v^2}\over{c^2}}}dV_0=-{{1}\over{2}}c^2\int_V\rho_0\gamma dV\Rightarrow\mathfrak{L}=-{{1}\over{2}}\rho_0\gamma c^2=\mp{{1}\over{2}}\rho_0\gamma c^2\dot q^{\mu}g_{\mu\nu}\dot q^{\nu}</MATH>|4.37}} *We wzorze {{LinkWzór|4.37}} znak u góry to sygnatura dodatnia, a u dołu ujemna, tensora metrycznego. Zakładamy, że mamy pewną metrykę z definiowaną przez tensory metryczne g{{Sub|&alpha;&nu;}} i obliczamy jaka jest najmniejsza linia między punktami A i B w czasoprzestrzeni Einsteina (ogólnie w n-wymiarowej czasoprzestrzeni, nie musi być cztery tak jak w czasoprzestrzeni Einsteina), po której cząstka ma się poruszać, czyli policzmy wariację wyrażenia Lagrangianu {{LinkWzór|4.37}}: {{CentrujWzór|<MATH>S=\int_s\int_{V_p}\mathfrak{L}_kdV_pds=\int_s\int_V\sqrt{-g}\mathfrak{L}_kdVds</MATH>|4.39}} *Gdzie: {{Formuła|<MATH>V_p\;</MATH>}} jest to obiętość ukłądów płaskich, a {{Formuła|<MATH>V\;</MATH>}} zakrzywionych. Napiszmy wzór na drugą zasadę Lagrange'a dla układów zakrzywionych mając gęstość lagrangianu kinematycznego {{LinkWzór|4.37}} i gęstość uogólnionego tensora siły w układzie zaskrzywionym: {{CentrujWzór|<MATH>{{d}\over{ds}}{{\partial \sqrt{-g}\mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}-{{\partial \sqrt{-g}\mathfrak{L}_k}\over{\partial q^{\alpha}}}={{dQ_{\alpha}}\over{dV}}</MATH>|4.40a}} Teraz policzmy kolejne wyrazy występujące w równaniu Lagrange'a {{LinkWzór|4.40a}}, ale najpierw przejdźmy do drugiego składnika występujący w naszym wspomnianym wyrażeniu: {{CentrujWzór|<MATH>\mp{{1}\over{c^2}}{{\partial \mathfrak{L}_k}\over{\partial q^{\alpha}}}={{\partial}\over{\partial q^{\alpha}}}\left({{1}\over{2}}\rho_0\gamma g_{\mu\nu}\dot{q}^{\mu}\dot{q}^{\nu}\right)={{1}\over{2}}\rho_0\gamma{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}+{{1}\over{2}}{{\partial}\over{\partial q^{\alpha}}}\rho_0\gamma</MATH>|4.41}} Wyraz występujący pod pochodną zupełną czasową, który występuje wyrażeniu Eulera-Lagrange'a {{LinkWzór|4.40a}}, możemy przekształcić do: {{CentrujWzór|<MATH>\mp{{1}\over{c^2}}{{\partial \mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}={{1}\over{2}}\rho_0\gamma\left(g_{\mu\nu}{\delta^{\nu}}_{\alpha}\dot{q}^{\mu}+\rho_0g_{\mu\nu}{\delta^{\mu}}_{\alpha}\dot{q}^{\nu}\right)+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma= {{1}\over{2}}\rho_0\gamma\left(g_{\alpha\mu}\dot{q}^{\mu}+g_{\alpha\nu}\dot{q}^{\nu} \right)+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma={{1}\over{2}}\rho_0\gamma\left(g_{\alpha\mu}\dot{q}^{\mu}+g_{\mu\alpha}\dot{q}^{\mu} \right)+\;</MATH>{{Br}}<MATH>+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma={{1}\over{2}}\rho_0\gamma\left(2g_{\alpha\mu}\dot{q}^{\mu}\right)+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0=\rho_0\gamma g_{\alpha\mu}\dot{q}^{\mu}+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma</MATH>|4.42}} Następnie wyznaczmy pochodną wyrażenia {{LinkWzór|4.42}} względem pewnego parametru {{Formuła|<MATH>s\;</MATH>}} (interwał czasoprzestrzenny), czyli pierwszy wyraz w {{LinkWzór|4.40a}}, który jest liczony względem s, który jest dla nas długością linii światła, czyli musimy policzyć pochodną zupełną policzonego wyrażenia {{LinkWzór|4.42}}. {{CentrujWzór|<MATH>\mp{{1}\over{c^2}}{{d}\over{ds}}{{\partial \mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}={{d}\over{ds}}\left(\rho_0\gamma g_{\alpha\mu}\dot{q}^{\mu} \right)+{{1}\over{2}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma=\rho_0\gamma g_{\alpha\mu}\ddot{q}^{\mu}+g_{\alpha\mu}\dot{q}^{\mu}{{d}\over{ds}}\rho_0\gamma+\rho_0\gamma{{dg_{\alpha\mu}}\over{ds}}\dot{q}^{\mu}+{{1}\over{2}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma=\;</MATH>{{Br}}<MATH>=\rho_0\gamma g_{\alpha\mu}\ddot{q}^{\mu}+g_{\alpha\mu}\dot{q}^{\mu}{{d}\over{ds}}\rho_0\gamma+ \rho_0\gamma{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}+{{1}\over{2}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma</MATH>|4.43}} A więc nasze równanie Lagrangianu {{LinkWzór|4.40a}}, której części są przedstawione i policzone w punktach {{LinkWzór|4.41}} i {{LinkWzór|4.43}}, czyli równanie Eulera-Lagrange'a dla naszego przypadku przy zdefiniowanym gęstości lagrangianu {{LinkWzór|4.37}}, przedstawia się po podzieleniu przez {{Formuła|<MATH>\sqrt{-g}\;</MATH>}}, {{Formuła|<MATH>\rho_0\;</MATH>}} i {{Formuła|<MATH>\gamma\;</MATH>}} obustronnie: {{CentrujWzór|<MATH>g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\sqrt{-g}}}{{d\sqrt{-g}}\over{ds}}+{{1}\over{2\sqrt{-g}\rho_0\gamma}}{{d\sqrt{-g}}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma+g_{\alpha\mu}\ddot{q}^{\mu}+g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\rho_0\gamma}}{{d}\over{ds}}\rho_0\gamma+{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}+\;</MATH>{{Br}}<MATH>+{{1}\over{2\rho_0\gamma}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma-{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}-{{1}\over{2\rho_0\gamma}}{{\partial}\over{\partial q^{\alpha}}}\rho_0\gamma-{{1}\over{2\sqrt{-g}}}{{\partial}\over{\partial q^{\alpha}}}\sqrt{-g}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}{{dQ_{\alpha}}\over{dV}}</MATH>|4.44a}} Podzielmy na dwie grupy wyrazów w {{LinkWzór|4.44a}}, jednej z lewej strony równania, a drugie z prawej, wtedy: {{CentrujWzór|<MATH>g_{\alpha\mu}\ddot{q}^{\mu}+{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}-{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}\pm{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}{{dQ_{\alpha}}\over{dV}}=-g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\sqrt{-g}}}{{d\sqrt{-g}}\over{ds}}-{{1}\over{2\sqrt{-g}\rho_0\gamma}}{{d\sqrt{-g}}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma+\;</MATH>{{Br}}<MATH>-g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\rho_0\gamma}}{{d}\over{ds}}\rho_0\gamma-{{1}\over{2\rho_0\gamma}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma+{{1}\over{2\rho_0\gamma}}{{\partial}\over{\partial q^{\alpha}}}\rho_0\gamma+{{1}\over{2\sqrt{-g}}}{{\partial}\over{\partial q^{\alpha}}}\sqrt{-g}\;</MATH>|4.44ba}} Obierzmy cechowanie zerując prawą stronę równości {{LinkWzór|4.44ba}}, bo ona w układzie lokalnie płaskim o lokalnie stałych parametrach jest równa zero, by na podstawie jej otrzymać poprawne równanie ruchu (geodezyjne): {{CentrujWzór|<MATH>-g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\sqrt{-g}}}{{d\sqrt{-g}}\over{ds}}-{{1}\over{2\sqrt{-g}\rho_0\gamma}}{{d\sqrt{-g}}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma-g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\rho_0\gamma}}{{d}\over{ds}}\rho_0\gamma-{{1}\over{2\rho_0\gamma}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma+{{1}\over{2\rho_0\gamma}}{{\partial}\over{\partial q^{\alpha}}}\rho_0\gamma+\;</MATH>{{Br}}<MATH>+{{1}\over{2\sqrt{-g}}}{{\partial}\over{\partial q^{\alpha}}}\sqrt{-g}=0\;</MATH>|4.44ab}} Przy cechowaniu {{LinkWzór|4.44ab}} wzór na linie geodezyjne {{LinkWzór|4.44ba}} przyjmuje postać: {{CentrujWzór|<MATH>g_{\alpha\mu}\ddot{q}^{\mu}+{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}-{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}=\mp{{1}\over{\sqrt{-g}\rho_0c^2}}{{dQ_{\alpha}}\over{dV}}\;</MATH>|4.44b}} Pomnóżmy teraz równanie {{LinkWzór|4.44b}} przez jakiś element tensora metrycznego w czasoprzestrzeni Einsteina, czyli przez element {{Formuła|<MATH>g^{\beta\alpha}\;</MATH>}}: {{CentrujWzór|<MATH>g^{\beta\alpha}g_{\alpha\mu}\ddot{q}^{\mu}+g^{\beta\alpha}{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}-g^{\beta\alpha}{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}g^{\beta\alpha}{{dQ_{\alpha}}\over{dV}}</MATH>|4.45}} Wykorzystajmy obliczenia w punktach {{LinkWzór|4.46}}, {{LinkWzór|4.47}} i {{LinkWzór|4.48}}, napiszmy równanie ruchu: {{CentrujWzór|<MATH>\ddot{q}^{\beta}+{{1}\over{2}}g^{\beta\alpha}\left( {{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}+{{\partial g_{\alpha\nu}}\over{\partial q^{\mu}}}-{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\right)\dot{q}^{\nu}\dot{q}^{\mu}=\mp{{1}\over{\sqrt{-g}\rho_0c^2}}g^{\beta\alpha}{{dQ_{\alpha}}\over{dV}}</MATH>|4.49}} Wykorzystajmy dfinicję symboli Christoffela, a zatem nasze równanie {{LinkWzór|4.49}}, na podstawie definicji symboli Christoffela {{LinkWzór|4.50}}, przedstawia się: {{CentrujWzór|<MATH>\ddot{q}^{\beta}+{\Gamma^{\beta}}_{\mu\nu}\dot{q}^{\nu}\dot{q}^{\mu}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}g^{\beta\alpha}{{dQ_{\alpha}}\over{dV}}\Rightarrow {\dot q^{\beta}}_{;\alpha}\dot q^{\alpha}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}{{dQ^{\beta}}\over{dV}}</MATH>|4.51}} Udowodniliśmy w ten sposób że równanie {{LinkWzór|1.74|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} wyprowadzone z zasad czysto geometrycznych jest takie samo jak z twierdzenia Eulera-Lagrange'a {{LinkWzór|4.51}} policzonego za pomocą rachunku wariacyjnego, gdy siły zewnętrzne niegrawitacyjne się zerują. Przedstawmy równanie końcowe {{LinkWzór|4.51}} w układzie zakrzywionym, mając definicję ogólnionego tensora siły {{LinkWzór|JJ9}}, ale tym razem dla różniczek, a nie dla wielkości skończonych, wtedy: {{CentrujWzór|<MATH>{q^{\beta}}_{;\alpha}\dot q^{\alpha}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}{{dQ^{\beta}}\over{dV}}\Rightarrow\sqrt{-g}\rho_0c^2{q^{\beta}}_{;\alpha}\dot q^{\alpha}=c{{dK^{\beta}}\over{dV}}\Rightarrow \sqrt{-g}\rho_0\gamma c{q^{\beta}}_{;\alpha}\dot q^{\alpha}={{dK^{\beta}}\over{dV}}\;</MATH>|4.52}} To równanie, tzn. {{LinkWzór|4.52}} przypiszmy w postaci, przekształcając je do układów lokalnie płaskich zamieniając je na układy lokalnie płaskie, w których panuje teoria dla układów płaskich: {{CentrujWzór|<MATH>\sqrt{-g}\rho_0\gamma c{q^{\beta}}_{;\alpha}\dot q^{\alpha}={{dK^{\beta}}\over{dV}}\Rightarrow \rho_0c{{du^{\beta}}\over{ds}}={{dK^{\beta}}\over{dV_0}}\;</MATH>|4.54}} Na podstawie otrzymanej równości {{LinkWzór|4.54}} można udowodnić '''silną zasadę równoważności''' dla układów rozciągłych, tzn. prawa w układzie lokalnie płaskim, wtedy tam jest spełniona szczególna teoria względności, mając je dla układów zakrzywionych, mają taką samą postać, co dla układów lokalnie płaskich, tylko zamiast tensora metrycznego Minkowskiego jest tensor metryczny czasoprzestrzeni zakrzywionej, a zamiast przecinka jest średnik. === Słaba zasada równoważności (dowód) === W układach inercjalnych rozciągłych panują prawa szczególnej teorii względności {{LinkWzór|4.54}} (z którego możemy policzyć tensor siły działający na rozciągłe ciało), a jeśli mamy obserwatora w poruszającej się w windzie, w inercjalnym układzie odniesienia (układ lokalnie płaski), poruszający się z przyśpieszeniem {{Formuła|<MATH>\vec a=\vec g\;</MATH>}}, to on porusza się wraz z windą, a on sam odczuwa siłę bezwładności do dołu windy w układzie nieinercjalnym poruszający się wraz z windą względem tego układu ostatniego, rozważając inaczej, weźmy inercjalny układ odniesienia poruszający się wraz z windą, wtedy pojawiają się tensory metryczne, które są jakimiś funkcjami, nierówne tensorowi metrycznemu Minkowskiego, i pojawia się wtedy tensor siły grawitacji pochodzący od tego układu opisany w równaniu dla układu dyskretnego {{LinkWzór|1.77ca11|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} (z którego możemy policzyć tensor siły działający na ciało) lub rozciągłego {{LinkWzór|LLL2|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} (z którego możemy policzyć gęstość tensora siły grawitacji), stąd obserwator nie może rozróżnić tego układu inercjalnego od nieinercjalnego, bo opisywać można też ten sam ruch tak samo w układzie inercjalnym i nieinercjalnym, stąd prawa sformułowane tensorowo w układzie inercjalnym w szczególnej teorii względności są słuszne również w układzie nieinercjalnym po zamienieniu w układzie inercjalnym tensora metrycznego Minkowskiego tensorem metrycznym tego układu nieinercjalnego, a przecinki średnikami, co wtedy otrzymujemy prawa ruchu dla układów nieinercjalnych, co można też to udowodnić z teorii transformacji przechodząc z układu inercjalnego do nieinercjalnego. A więc to dowodzi '''słabą zasadę równoważności''' Alberta Einsteina. == Gęstość lagrangianu i równanie Eulera-Lagrange'a, a paradoks niespełnienia zasady najmniejszego działania == Weźmy wzór na gęstość lagrangianu całkowitego w ogólnej teorii względności, na podstawie definicji ogólnej gęstości lagrangianu całkowitego {{LinkWzór|4.4}} i definicji gęstości lagrangianu przestrzennego {{LinkWzór|4.8}}, w postaci {{LinkWzór|4.15}}. Wykorzystajmy wzór na jedynkę {{LinkWzór|1.9|Wprowadzenie do ogólnej teorii względności}}, którą wstawiamy do {{LinkWzór|4.15}}, wtedy są cztery jego postacie, co: {{ElastycznyWiersz |{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{2\kappa}}(R-2\Lambda u_{\mu}g^{\mu\nu}u_{\nu})+\mathfrak{L}_m\;</MATH>|P21}} |{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{2\kappa}}(R u_{\mu}g^{\mu\nu}u_{\nu}-2\Lambda)+\mathfrak{L}_m\;</MATH>|P311}} }} A trzecia i czwarta postać lagrangianu całkowitego: {{ElastycznyWiersz |{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{2\kappa}}(R-2\Lambda)+\mathfrak{L}_mu_{\mu}g^{\mu\nu}u_{\nu}\;</MATH>|O1}} |{{CentrujWzór|<MATH>\mathfrak{L}=\mathfrak{L}u_{\mu}g^{\mu\nu}u_{\nu}\;</MATH>|Y1}} }} Gęstości lagrangianu całkowitego {{LinkWzór|P311}}, {{LinkWzór|O1}} i {{LinkWzór|Y1}} są niefizyczne, a {{LinkWzór|P21}} jest opcjonalnie fizyczny. Wykorzystując z definicji równania Eulera-Lagrange'a {{LinkWzór|4.13}} w ogólnej teorii względności dla {{LinkWzór|4.2}}, wtedy weźmy {{LinkWzór|P21}} (inna postać gęstości całkowitej lagrangianu {{LinkWzór|4.15}}), dochodzimy do wniosku: {{CentrujWzór|<MATH>{{1}\over{2\kappa}}2\Lambda u_{\mu}u_{\nu}\sqrt{-g}+{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial\mathfrak{g}^{\mu\nu}}}=0\;</MATH>|P41}} Wykorzystując z definicji równania Eulera-Lagrange'a {{LinkWzór|4.13}} w ogólnej teorii względności dla {{LinkWzór|4.2}}, wtedy weźmy {{LinkWzór|P311}} (inna postać gęstości całkowitej lagrangianu {{LinkWzór|4.15}}), dochodzimy do wniosku: {{CentrujWzór|<MATH>-{{1}\over{2\kappa}}R u_{\mu}u_{\nu}\sqrt{-g}+{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial\mathfrak{g}^{\mu\nu}}}=0\;</MATH>|P51}} Wykorzystując z definicji równania Eulera-Lagrange'a {{LinkWzór|4.13}} w ogólnej teorii względności dla {{LinkWzór|4.2}}, wtedy weźmy {{LinkWzór|O1}} (inna postać gęstości całkowitej lagrangianu {{LinkWzór|4.15}}), dochodzimy do wniosku: {{CentrujWzór|<MATH>\mathfrak{L}_mu_{\mu}u_{\nu}\sqrt{-g}+{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial\mathfrak{g}^{\mu\nu}}}=0\;</MATH>|O2}} Wykorzystując z definicji równania Eulera-Lagrange'a {{LinkWzór|4.13}} w ogólnej teorii względności dla {{LinkWzór|4.2}}, wtedy weźmy {{LinkWzór|Y1}} (inna postać gęstości całkowitej lagrangianu {{LinkWzór|4.15}}), dochodzimy do wniosku: {{CentrujWzór|<MATH>\mathfrak{L}u_{\mu}u_{\nu}\sqrt{-g}+{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial\mathfrak{g}^{\mu\nu}}}=0\;</MATH>|Y2}} Ale zachodzi dla gęstości lagrangianu całkowitego {{LinkWzór|4.15}} równanie Eulera-Lagrange'a {{LinkWzór|4.13}}. Wykorzystując wniosek {{LinkWzór|4.13}} będący równaniem Eulera-Lagrange'a dla gęstości lagrangianu całkowitego {{LinkWzór|4.15}}, co na tej podstawie {{LinkWzór|P41}}, {{LinkWzór|P51}}, {{LinkWzór|O2}} i {{LinkWzór|Y2}} dla gęstości lagrangianu całkowitego {{LinkWzór|4.15}} wynika, że stała kosmologiczna {{Formuła|<MATH>\Lambda\;</MATH>}}, skalar krzywizny {{Formuła|<MATH>R(x^{\mu})\;</MATH>}}, gęstości lagrangianu masowego {{Formuła|<MATH>\mathfrak{L}_m(x^{\mu})\;</MATH>}}, i gęstości lagrangianu całkowitego {{Formuła|<MATH>\mathfrak{L}(x^{\mu})\;</MATH>}} są ogólnie różne od zera wykorzystując wniosek końcowy z {{LinkWzór|KLHT11}}. Skonstrułujmy gęstość lagrangianu dodając do niej zero i wykorzystując {{LinkWzór|4.11}}, mamy: {{CentrujWzór|<MATH>\mathfrak{L}^'=\mathfrak{L}+\alpha(1-u^{\mu}g_{\mu\nu}u^{\nu})\Rightarrow 0={{\partial}\over{\partial x^{\gamma}}}{{\partial \mathfrak L}\over{\partial {g_{\mu\nu,\gamma}}}}-{{\partial \mathfrak L}\over{\partial g_{\mu\nu}}}+\alpha u^{\mu}u^{\nu}\Rightarrow u^{\mu}=0\;</MATH>|KLHT11}} Czyli jeżeli będziemy dodawać do całkowitego lagrangianu jedynki i zero, to wychodzą, że układy są globalnie (lokalnie) płaskie matematyczne, które badaliśmy w książce opisującą [[Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|szczególną teorię względności]], a więc ta zasada najmniejszego działania jest spełniona tylko dla układów globalnie (lokalnie) płaskich matematycznych, a nie zakrzywionych, bo dadawaliśmy tam jedynki i zera, stąd do całki działania nie można dodawać zer i jedynek, by zastosować go do układów zakrzywionych, by z rachunku wariacyjnego wyszły poprawne równania fizyki dla układów zakrzywionych. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> gxq7o1td8wctx5u90a1v5kda4tk03su 548297 548288 2026-07-25T13:36:38Z Persino 2851 548297 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> '''Ogólna teoria względności według Hilberta''' polega na całce działania Eulera-Lagrange, która przyjmuje najmniejszą wartość i w oparciu o rachunek wariacyjny wyprowadzimy równania grawitacji Einsteina-Hilberta. Również wyprowadzimy wedle tej samej zasady lokalną zasadę zachowania energii, a także wyprowadzimy równanie linii geodezyjnej z odpowiedniej definicji funkcji Langrange'a. == Równania grawitacji Einsteina-Hilberta == Całka działania w przestrzeni Minkowskiego jest to całka, w której funkcją podcałkową jest gęstość Lagrangianu {{Formuła|<MATH>\mathfrak{L}\;</MATH>}} liczoną względem infinitezymalnej objętości w przestrzeni czterowymiarowej. {{CentrujWzór|<MATH>S=\int \mathfrak{L}d{x^'}^4\;</MATH>|4.1}} Możemy uwzględnić policzoną na liczbach ogólnych objętość elementarną w lokalnie płaskim układzie współrzędnym względem tej samej objętości w krzywoliniowym układzie współrzędnej wedle sposobu {{LinkWzór|3.9|Właściwości_skalaru_tensora_metrycznego}} podstawiając go do całki Lagrange'a {{LinkWzór|4.1}}: {{CentrujWzór|<MATH>S=\int\underbrace{\sqrt{-g}\mathfrak{L}}_{\mathfrak{L}^'}dx^4\;</MATH>|4.2}} Aby powyższa całka przyjmowała najmniejszą wartość, to należy napisać równanie Eulera-Lagranga, którego postać względem parametru &phi; i &part;{{Sub|&mu;}}&phi; jest. {{CentrujWzór|<MATH>\partial_{\mu}{{\partial \mathfrak{L}^'}\over{\partial(\partial_{\mu}\varphi)}}-{{\partial\mathfrak{L}^'}\over{\partial\varphi}}=0\;</MATH>|4.3}} Gęstość lagrangianu można rozpisać jako sumę na dwie jego części, tzn.: na część przestrzenną i masową jako sumę tychże wielkości: {{CentrujWzór|<MATH>\mathfrak{L}=\mathfrak{L}_g+\mathfrak{L}_m\;</MATH>|4.4}} Rozważmy teraz część przestrzenną Lagrangianu {{LinkWzór|4.4}} rozwijając go w szereg Taylora względem skalaru krzywizny, co można go przestawić: {{CentrujWzór|<MATH>\mathfrak{L}_g=a+bR+cR^2+...\;</MATH>|4.5}} Wprowadźmy wstępne oznaczenia na stałe "a" i "b" poprzez stałą kosmologiczną &Lambda; i przez stałą &kappa; występującego w prawie grawitacji Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}}. {{ElastycznyWiersz|1={{CentrujWzór|<MATH>a=-{{\Lambda}\over{\pm \kappa}}\;</MATH>|4.6}}|2={{CentrujWzór|<MATH>b={{1}\over{\pm 2\kappa}}\;</MATH>|4.7}}}} * Znak w {{LinkWzór|4.6}} i {{LinkWzór|4.7}} jest dla znaku na górze dla przyciągania grawitacyjnego, a ujemna na dole dla odpychania grawitacyjnego. Tzn. gdy chcermy opisywać przyciąganie grawitacyjne, to stała {{Formuła|<MATH>\kappa\;</MATH>}} jest dodatnia, a jeśli odpychanie, to zamiast {{Formuła|<MATH>\kappa\;</MATH>}} wstawiamy {{Formuła|<MATH>-\kappa\;</MATH>}}, a ta stała {{Formuła|<MATH>\kappa\;</MATH>}} w nim jest dodatnia, a więc tak mozna przejść od przyciągania do odpychania we stałych {{LinkWzór|4.6}} i {{LinkWzór|4.7}}, tzn. zamieniając w nich {{Formuła|<MATH>+\;</MATH>}} na {{Formuła|<MATH>-\;</MATH>}}, i dlatego tam piszemy dla obu rodzajów oddziaływań grawitacyjnych {{Formuła|<MATH>\pm\;</MATH>}}. Część przestrzenna Lagrangianu {{LinkWzór|4.5}} wedle oznaczeń {{LinkWzór|4.6}} i {{LinkWzór|4.7}} po dokonanych podstawieniach za "a" i "b", przy którym dalsze współczynniki przyjmujemy za równe zero, przyjmuje postać. {{CentrujWzór|<MATH>\mathfrak{L}_g={{1}\over{\pm 2\kappa}}(R-2\Lambda)\;</MATH>|4.8}} Można udowodnić, że dla czasoprzestrzeni zakrzywionej mamy g<0, a zatem całkę działania {{LinkWzór|4.2}}, wykorzystując przy tym wzór na całkowity Lagrangian {{LinkWzór|4.4}}, która jest sumą Lagrangianu przestrzennego {{LinkWzór|4.8}} i masowego, jest napisana wzorem: {{CentrujWzór|<MATH>S=\int d^4x\sqrt{-g}\left\{{{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right\}\;</MATH>|4.9}} * gdzie:{{Formuła|<MATH>g=-\operatorname{\det}(g_{\alpha\beta})\;</MATH>}} Ale {{Formuła|<MATH>\sqrt{-g}\;</MATH>}} jest to Jakobian, który pozwala przejść do układu krzywoliniowej w ogólnej teorii względności z układu lokalnie płaskiego Minkowskiego. Nowa gęstość lagrangianu zdefiniowana na podstawie punktu {{LinkWzór|4.9}} w stosunku do {{LinkWzór|4.4}} jest zdefiniowana: {{CentrujWzór|<MATH>\mathfrak{L}^'=\sqrt{-g}\mathfrak{L}=\sqrt{-g}\left\{{{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right\}\;</MATH>|4.10}} Równanie Eulera Einsteina {{LinkWzór|4.3}} względem nowego Lagrangianu {{Formuła|<MATH>\mathfrak{L}^'\;</MATH>}}, jest iloczynem gęstości Lagrangianu tego starego {{Formuła|<MATH>\mathfrak{L}\;</MATH>}} przez pierwiastek z wyznacznika macierzy metrycznej wziętej z minusem, zatem jeśli przyjmować będziemy {{Formuła|<MATH>\varphi=g^{\alpha\beta}\;</MATH>}} przy {{LinkWzór|4.3}}, to równanie Eulera-Lagrange przyjmuje wtedy postać: {{CentrujWzór|<MATH>\partial_{\mu}{{\partial \mathfrak{L}\sqrt{-g}}\over{\partial(\partial_{\mu}g^{\alpha\beta})}}-{{\partial \mathfrak{L}\sqrt{-g}}\over{\partial g^{\alpha\beta}}}=0\;</MATH>|4.11}} Jeśli Lagrangian nie zależy od pochodnych elementów tensora metrycznych względem współrzędnych x{{Sup|&mu;}} w przestrzeni nieuklidesowej, to pierwszy wyraz w {{LinkWzór|4.11}} zapisujemy: {{CentrujWzór|<MATH>\partial_{\mu}{{\partial \mathfrak{L}\sqrt{-g}}\over{\partial(\partial_{\mu}g^{\alpha\beta})}}=0\;</MATH>|4.12}} A zatem równanie Eulera Einsteina po uwzględnieniu powyższej tożsamości {{LinkWzór|4.12}}, czyli pierwszy wyraz w {{LinkWzór|4.11}} znika, zatem dostajemy z omawianego równania: {{CentrujWzór|<MATH>{{\partial}\over{\partial g^{\alpha\beta}}}\left(\sqrt{-g}\mathfrak{L}\right)=0\;</MATH>|4.13}} Jeśli skorzystamy z twierdzenia o pochodnej iloczynu względem jakieś zmiennej ściśle określonej oraz wykorzystujemy wzór {{LinkWzór|3.18|Właściwości_skalaru_tensora_metrycznego}}, wtedy mamy: {{CentrujWzór|<MATH>\sqrt{-g}{{\partial\mathfrak{L}}\over{\partial g^{\alpha\beta}}}+\mathfrak{L}{{\partial\sqrt{-g}}\over{\partial g^{\alpha\beta}}}=0\Rightarrow \sqrt{-g}{{\partial\mathfrak{L}}\over{\partial g^{\alpha\beta}}}+\mathfrak{L}{{gg_{\alpha\beta}}\over{2\sqrt{-g} }}=0\;</MATH>|4.14}} Całkowity Lagrangian po podstawieniu {{LinkWzór|4.8}} do {{LinkWzór|4.4}} przyjmuje postać: {{CentrujWzór|<MATH>\mathfrak{L}={{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\;</MATH>|4.15}} Ostatnie równanie, które wynika z równania Eulera-Lagrangian {{LinkWzór|4.14}} ma się po podstawieniu do niej za całkowitą gęstość lagrangianu {{LinkWzór|4.15}}: {{CentrujWzór|<MATH>\sqrt{-g}{{\partial}\over{\partial g^{\alpha\beta}}}\left({{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right)+ \left({{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right){{1}\over{2\sqrt{-g}}}gg_{\alpha\beta}=0\;</MATH>|4.16}} Po podzieleniu obustronnie równości {{LinkWzór|4.16}} przez pierwiastek wyznacznika macierzy tensora metrycznego wziętej z minusem, czyli&nbsp;{{Formuła|<MATH>\sqrt{-g}\;</MATH>}}: {{CentrujWzór|<MATH>-{{1}\over{\pm 4\kappa}}g_{\alpha\beta}(R-2\Lambda)-{{1}\over{2}}g_{\alpha\beta}\mathfrak{L}_m+ {{\partial}\over{\partial g^{\alpha\beta}}}\left({{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right)=0\;</MATH>|4.17}} Jeśli wiadomo,że zachodzi wzór na skalar Ricciego {{Formuła|<MATH>R=g^{\alpha\beta}R_{\alpha\beta}\;</MATH>}}, i tensor Ricciego {{Formuła|<MATH>{{\partial R}\over{\partial g^{\alpha\beta}}}=R_{\alpha\beta}\;</MATH>}}, a także na podstawie powyższej równości {{LinkWzór|4.17}} mamy: {{CentrujWzór|<MATH>-{{1}\over{\pm 4\kappa}}g_{\alpha\beta}(R-2\Lambda)-{{1}\over{2}}g_{\alpha\beta}\mathfrak{L}_m+{{1}\over{\pm 2\kappa}}R_{\alpha\beta}+{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}=0\Rightarrow{{1}\over{\pm 2\kappa}}\left[\left(R_{\alpha\beta}-{{1}\over{2}}g_{\alpha\beta}R\right)+g_{\alpha\beta}\Lambda\right]= -{{1}\over{2}}\left(2{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}-g_{\alpha\beta}\mathfrak{L}_m\right)\;</MATH>|4.18}} Następnie podzielmy ostatnią równość, czyli zapisaną w punkcie {{LinkWzór|4.18}}, przez {{Formuła|<MATH>-{{1}\over{2\kappa}}\;</MATH>}}, otrzymujemy dla sygnatury dodatniej: {{CentrujWzór|<MATH>R_{\alpha\beta}-{{1}\over{2}}g_{\alpha\beta}R+g_{\alpha\beta}\Lambda=\pm \kappa\left(-2{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}+g_{\alpha\beta}\mathfrak{L}_m\right)\;</MATH>|4.19}} * Powyższe równanie jest dla sygnatury dodatniej. Ponieważ przyjęliśmy że definicja tensora Einsteina jest wedle {{LinkWzór|1.37|Wprowadzenie do ogólnej teorii względności}}, a rozszerzony tensor Einsteina jest w postaci {{LinkWzór|1.40|Wprowadzenie do ogólnej teorii względności}}, a tensor gęstości energii-pędu przyjmuje postać według naszych rozważań według {{LinkWzór|4.19}} dla sygnatury dodatniej (dla sygnatury ujemnej tensor gęstości energii-pędu różni się od tego samego dla sygnatury dodatniej minusem, bo zamieniamy w tym tensorze {{Formuła|<MATH>g^{\mu\nu}\;</MATH>}} na {{Formuła|<MATH>-g^{\mu\nu}\;</MATH>}}, tzn. formalnie, by dla obu sygnator względem siebie ten tensor miał przeciwną, tylko formalnie, postać), pierwsza dla sygnatury dodatniej, a druga dla ujemnej, przechodząc z sygnatury dodatniej do ujemnej, a te tensory kolejno mamy: {{ElastycznyWiersz|{{CentrujWzór|<MATH>T_{\alpha\beta}=-2{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}+g_{\alpha\beta}\mathfrak{L}_m\;</MATH>|4.20}}|{{CentrujWzór|<MATH>T_{\alpha\beta}=2{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}-g_{\alpha\beta}\mathfrak{L}_m\;</MATH>|4.20S}}}} Wiąząc sygnaturę tensora Minkowskiego z przyciąganiem lub odpychaniem, to ostatecznie równanie grawitacji wyprowadzonej przez Hilberta z zasady wariacyjnej, ze stałą kosmologiczną dla sygnatury dodatniej i ujemnej są kolejno przedstawione: {{ElastycznyWiersz|{{CentrujWzór|<MATH>G_{\alpha\beta}+g_{\alpha\beta}\Lambda=\kappa T_{\alpha\beta}\;</MATH>|4.21}}|{{CentrujWzór|<MATH>G_{\alpha\beta}+g_{\alpha\beta}\Lambda=-\kappa T_{\alpha\beta}\;</MATH>|4.2122}}}} Wyprowadzając równanie {{LinkWzór|4.19}} (przy stałej proporcjalności przy {{Formuła|<MATH>\kappa\;</MATH>}} z plusem) mając gęstość lagrangianu przestrzennego {{LinkWzór|4.8}}, biorąc przy nim {{Formuła|<MATH>\kappa\;</MATH>}} z tylko z jednym znakiem, tzn. z plusem, - a więc trochę inaczej - to wtedy wychodzą wzory {{LinkWzór|4.20}} (który jest dla przyciągania grawitacyjnego - sygnatura dodatnia) i {{LinkWzór|4.20S}} (który jest dla odpychania grawitacyjnego - sygnatura ujemna), a ten pierwszy wzór jest dla sygnatury dodatniej, a drugi dla ujemnej, co na tej podstawie wychodząc wzory: {{LinkWzór|4.21}} i {{LinkWzór|4.2122}}, a teraz weźmy znak przy tej stałej z minusem w {{LinkWzór|4.19}}, wtedy otrzymujemy równanie o takiej samej postaci co {{LinkWzór|4.21}}, a tam tensor gęstości energii-pędu jest wtedy o sygnaturze ujemnej, a dla drugiej sygnatury otrzymujemy równanie {{LinkWzór|4.2122}}, a tam tensor gęstości energii-pędu jest dla sygnatury dodatniej, a teraz znak przy {{Formuła|<MATH>\kappa\;</MATH>}} przyjmijmy taki: {{Formuła|<MATH>\mp\;</MATH>}}, to wtedy dla jej znaku minus w równaniu {{LinkWzór|4.19}}, to wtedy tensor gęstości energii-pędu jest dla sygnatury ujemnej w równaniu o postaci {{LinkWzór|4.21}}, a dla jej znaku dodatniego też dla sygnatury ujemnej w równaniu {{LinkWzór|4.20S}}. Sygnaturę tensora gęstości energii-pędu: {{LinkWzór|4.20}} i {{LinkWzór|4.20S}} można zmienić na przeciwną, jeżeli dokonamy podstawienia w tym tensorze według: {{Formuła|<MATH>g^{\mu\nu}\rightarrow-g^{\mu\nu}\;</MATH>}}. Do powyższych tych wniosków dośliśmy z dokładnością, co do znaku przy stałej kosmologicznej {{Formuła|<MATH>\Lambda\;</MATH>}}. Ten same tensory gęstości energii-pędu, co przedstawiony w punktach: {{LinkWzór|4.20}} i {{LinkWzór|4.20S}}, ale później udowodnimy go z zasady wariacyjnej, ale jeszcze dodatkowo wspomniemy o własności lokalnej zasady zachowania tensora gęstości energii-pędu dla układu lokalnie płaskiego, tzn.: T{{Sup|&mu;&nu;}}{{Sub|,&nu;}}=0, mając {{LinkWzór|1.49|Wprowadzenie_do_ogólnej_teorii_względności}}, co później można udowodnić lokalną zasadę zachowania tensora gęstości energii-pędu ogólnie dla układu zakrzywionego {{LinkWzór|1.50|Wprowadzenie_do_ogólnej_teorii_względności}} na podstawie {{LinkWzór|2.27|Tensor gęstości energii-pędu}} z rachunku tensorowego, nie wariacyjnego (według zasady wariacyjnej to samo wychodzi, co z rachunku tensorowego, tzn. lokalną zachowawczość gęstości tensora energii-pędu). == Lokalna zachowawczość tensora gęstości energii-pędu == Będziemy tutaj wyprowadzać lokalną zachowawczość dla wszystkich rodzajów układów i pokażemy, że ogólna teoria względności jest spełniona dla układów lokalnie płaskich i zakrzywionych. ==== Lokalna zachowawczość (przypadek ogólny) ==== Określmy gęstość lagranianu w czasoprzestrzeni lokalnie płaskiej, który jest funkcją współrzędnych uogólnionych i ich pierwszych pochodnych względem współrzędnych czasoprzestrzennych x{{Sup|&alpha;}}, i jego miano jest takie J/m{{Sup|3}}, ale aby policzyć właściwy Lagrangian należy gęstość Lagrangianu przecałkować po całej przestrzeni trójwymiarowej, wtedy możemy określić jego całkę działania, wiedząc, że dla układów lokalnie płaskich i zakrzywionych {{Formuła|<MATH>g_{\mu\nu}\;</MATH>}} ({{Formuła|<MATH>g\;</MATH>}} tylko zależy od zmiennych {{Formuła|<MATH>g_{\mu\nu}\;</MATH>}}), {{Formuła|<MATH>{x^{\mu}}\;</MATH>}}, {{Formuła|<MATH>{x^{\mu}}_{,\alpha}\;</MATH>}} i {{Formuła|<MATH>q^{\alpha}\;</MATH>}} są zmiennymi niezależnymi względem siebie, zapisaną wedle sposobu w układzie lokalnie płaskim: {{CentrujWzór|<MATH>S=c\int^{t_2}_{t_1}dt\int \mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha},q^{\alpha}) dV=\int \mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha},q^{\alpha})dVd(ct)</MATH>|4.22}} *Oznaczając przy tym d&tau;=dVd(ct)=dx{{Sup|0}}dx{{Sup|1}}dx{{Sup|2}}dx{{Sup|3}} jako elementarna gęstość w przestrzeni czterowymiarowej (czasoprzestrzeni) * gdzie dx{{Sup|0}}=cdt jest to różniczka współrzędnej czasowej liczonych w metrach, który jest jako iloczyn prędkości światła i różniczki czasu znanej z codziennego życia, który jest mierzony w sekundach, * x{{Sup|i}} to są współrzędne przestrzenne liczone są w tylko metrach. Po powyższych przekształceniach wiedząc na oznaczenie w elementarnej infinitezymalnej objętości, wtedy całkę działania {{LinkWzór|4.22}} można przedstawić wedle sposobu: {{CentrujWzór|<MATH>S=c\int\mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha}, q^{\alpha})dVdt=\int\mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha}, q^{\alpha})d\tau=\int\sqrt{-g}\mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha}, q^{\alpha})d^4q^{\alpha}</MATH>|4.23}} W powyższym wzorze oznaczeniem q{{Sup|&mu;}} oznaczyliśmy współrzędne uogólnione, które opisują układ zanurzony w kartezjańskim układzie współrzędnych. Znając całkę działania {{LinkWzór|4.23}} możemy napisać równanie Eulera-Lagrange'a, pamiętając o niezależności pewnych zmiennych względem siebie, wedle sposobu: {{CentrujWzór|<MATH>{{\partial}\over{\partial q^{\alpha}}}{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}-{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial {x^{\mu}}}}=0\Rightarrow {{\partial}\over{\partial q^{\alpha}}}{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}-{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}}}=0</MATH>|4.24}} Rozpiszmy teraz z definicji różniczki zupełnej pochodną cząstkową Lagrangianu względem współrzędnej kontrawariantnej q{{Sup|&beta;}} w przestrzeni Minkowskiego na wyrażenie zapisaną za pomocą pochodnej tego samego lagrangianu względem współrzędnej uogólnionej x{{Sup|&mu;}} i względem pochodnej wspomnianej współrzędnej względem współrzędnej uogólnionej q{{Sup|&alpha;}}, czyli x{{Sup|&mu;}}{{Sub|,&alpha;}}: {{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial q^{\beta}}}={{\partial \mathfrak{L}}\over{\partial {x^{\mu}}}}{x^{\mu}}_{,\beta}+{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\alpha,\beta}</MATH>|4.25}} Z zasady wariacyjnej {{LinkWzór|4.24}} można napisać tak by po przenoszeniu drugiego wyrazu na prawą stronę i odwracając stronami, po tej operacji dostajemy: {{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}}}={{\partial}\over{\partial q^{\alpha}}}{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}</MATH>|4.26}} Podstawiamy równanie {{LinkWzór|4.26}} do pierwszego wyrazu z prawej strony równania {{LinkWzór|4.25}} i dokonując zwinięcia pewnych wyrazów, w której wystepują pod pochodną względem jakieś współrzędnej: {{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial q^{\beta}}}={{\partial}\over{\partial q^{\alpha}}}{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}+{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\alpha,\beta}\Rightarrow{{\partial \mathfrak{L}}\over{\partial q^{\beta}}}={{\partial}\over{\partial q^{\alpha}}}\left({{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}\right)</MATH>|4.27}} Wiemy jednak, z definicji delty Kroneckera możemy zapisać pochodną lagrangianu względem zmiennej q{{Sup|&beta;}} troszkę w innej postaci przy pomocy ostatnio wspomnianego obiektu. {{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial q^{\beta}}}={\delta^{\alpha}}_{\beta}{{\partial \mathfrak{L}}\over{\partial q^{\alpha}}}</MATH>|4.28}} Równanie {{LinkWzór|4.27}} możemy napisać po podstawieniu do niego udowodnionej tożsamości {{LinkWzór|4.28}}, wtedy otrzymujemy równanie wyłączając operator pochodnej cząstkowej względem x{{Sup|&alpha;}}, zatem: {{CentrujWzór|<MATH>0={{\partial}\over{\partial q^{\alpha}}}\left({{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}-{\delta^{\alpha}}_{\beta}\mathfrak{L}\right)</MATH>|4.29}} Równanie {{LinkWzór|4.29}} mnożymy przez g;{{Sup|&beta;&gamma;}}, otrzymujemy: {{CentrujWzór|<MATH>0={{\partial}\over{\partial q^{\alpha}}}\left({{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}g^{\gamma\beta}-g^{\gamma\alpha}\mathfrak{L}\right)\;</MATH>|4.30}} Udowodnijmy tensor gęstości energii-pędu {{LinkWzór|4.20}} wychodząc z przedstawienia {{LinkWzór|4.30}} pod nawiasem, zatem przekształcajmy pierwszy wyraz pod pochodną w {{LinkWzór|4.30}} wiedząc, że tensor metryczny podwójnie kontrawariantny jest zapisany jako g{{Sup|&epsilon;&xi;}}=q{{Sup|&epsilon;,&nu;}}q{{Sup|&xi;}}{{Sub|,&nu;}}, otrzymujemy: {{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}g^{\gamma\beta}={{\partial\mathfrak{L}}\over{\partial g_{\epsilon\xi}}}{{\partial g_{\epsilon\xi}}\over{\partial {x^{\mu}}_{,\alpha}}} {x^{\mu}}_{,\beta} g^{\gamma\beta} = {{\partial\mathfrak{L}}\over{\partial g_{\epsilon\xi}}}{{\partial \left(x^{\nu}_{,\epsilon}x_{\nu,\xi}\right)}\over{{\partial x^{\mu}}_{,\alpha} }} {x^{\mu}}_{,\beta} g^{\gamma\beta}=2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\xi}}}{x_{\mu,\xi}}{x^{\mu}}_{,\beta} g^{\gamma\beta}=2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\xi}}}g_{\xi\beta} g^{\gamma\beta}=2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\xi}}}{\delta^{\gamma}}_{\xi}=2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\gamma}}}\;</MATH>|4.35}} A więc na podstawie obliczeń na liczbach ogólnych tożsamość {{LinkWzór|4.35}} podstawiamy to wzoru {{LinkWzór|4.30}}, wtedy: {{CentrujWzór|<MATH>0={{\partial}\over{\partial q^{\alpha}}}\left(2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\gamma}}}-g^{\alpha\gamma}\mathfrak{L}\right)\;</MATH>|4.35a}} Równanie {{LinkWzór|4.35a}} jest słuszne dla układów lokalnie płaskich i układów zakrzywionych. ==== Przypadek układów lokalnie płaskich z gęstością lagrangianu masowego oraz przypadek układów zakrzywionych z gęstością całkowitego lagrangianu ==== Dla tych układów na podstawie {{LinkWzór|4.35a}} tensor gęstości energii podwójnie kowariantny możemy przedstawić względem lagrangianu oraz tensora metrycznego prostego i odwrotnego dla sygnatury tensora metrycznego Minkowskiego dodatniej i ujemnej, mamy koleno: {{ElastycznyWiersz|{{CentrujWzór|<MATH>T^{\gamma\omega}=-2{{\partial\mathfrak{L}}\over{\partial g_{\gamma\omega}}}+g^{\gamma\omega}\mathfrak{L}\;</MATH>|4.36|Obramuj}}|{{CentrujWzór|<MATH>T^{\gamma\omega}=2{{\partial\mathfrak{L}}\over{\partial g_{\gamma\omega}}}-g^{\gamma\omega}\mathfrak{L}\;</MATH>|4.3611|Obramuj}}}} Wtedy zachowawczość w układach lokalnie płaskich jest w postaci: {{CentrujWzór|<MATH>{{\partial}\over{\partial q^{\gamma}}}T^{\gamma\omega}=0\Rightarrow{T^{\gamma\omega}}_{,\gamma}=0\;</MATH>|4.35ba}} ==== Zachowawczość tensora gęstości energii-pędu w układach zakrzywionych ==== Dla układów zakrzywionych równość {{LinkWzór|4.35a}} przedstawimy wiedząc, że zachodzi {{LinkWzór|4.4}} i wzór na gęstość lagrangianu przestrzennego {{LinkWzór|4.8}}, i znając wzór na tensor gęstości energii-pędu dla układów zakrzywionych {{LinkWzór|4.20}} (sygnatura dodatnia) i {{LinkWzór|4.20S}} (sygnatura ujemna), a więc dla postaci równania dla przyciągania i odpychania grawitacyjnego oraz uwzględniając znaki przy stałej {{Formuła|<MATH>\kappa\;</MATH>}} (ono jest dodatnie), są cztery ogólne możliwości, weźmy sygnaturę dodatnią tego tensora, wtedy znak przy {{Formuła|<MATH>\kappa\;</MATH>}} w równaniu Hilberta-Einsteina przjmujemy wtedy z plusem, a dla sygnatury ujemnej jest wtedy znak przy tej stałej z minusem w tym samym równaniu, czyli dla sygnatury dodatniej jest wtedy przyciąganie grawitacyjne opisane tensorowym równaniem {{LinkWzór|4.21}} przy definicji tensora gęstości energii-pędu {{LinkWzór|4.20}}, a dla jej, ale ujemnej, równaniem {{LinkWzór|4.2122}} przy tym tensorze, ale według {{LinkWzór|4.20S}}, jest wtedy odpychanie grawitacyjne. A to wszystko można udowodnić w obliczeniach: {{CentrujWzór|<MATH>0={T^{\gamma\omega}}_{,\gamma}+{{\partial}\over{\partial q^{\gamma}}}\left(\mp 2{{\partial\mathfrak{L}_g}\over{\partial g_{\gamma\omega}}}\pm g^{\gamma\omega}\mathfrak{L}_g\right)={T^{\gamma\omega}}_{,\gamma}+{{\partial}\over{\partial q^{\gamma}}}\left(\mp 2{{1}\over{2\kappa}}R^{\gamma\omega}\pm g^{\gamma\omega}{{R}\over{2\kappa}}\mp g^{\gamma\omega}{{2\Lambda}\over{2\kappa}}\right)={T^{\gamma\omega}}_{,\gamma}\mp{{1}\over{\kappa}}{{\partial}\over{\partial q^{\gamma}}}\Big(R^{\gamma\omega}-{{1}\over{2}}g^{\gamma\omega}R+\;</MATH>{{Br}}<MATH>+ g^{\gamma\omega}\Lambda\Big)={T^{\gamma\omega}}_{,\gamma}\mp{{1}\over{\kappa}}{{\partial}\over{\partial q^{\gamma}}}O^{\gamma\omega}={T^{\gamma\omega}}_{,\gamma}\mp{{1}\over{\kappa}}\left({O^{\gamma\omega}}_{;\gamma}- O^{\gamma\mu}{\Gamma^{\omega}}_{\mu\gamma}- O^{\mu\omega}{\Gamma^{\gamma}}_{\mu\gamma}\right)={T^{\gamma\omega}}_{,\gamma}+T^{\gamma\mu}{\Gamma^{\omega}}_{\mu\gamma}+T^{\mu\omega}{\Gamma^{\gamma}}_{\mu\gamma}={T^{\gamma\omega}}_{;\gamma} \;</MATH>|4.36a}} Powyżej udowodniliśmy, że dla sygnatury dodatniej i ujemnej są kolejno: przyciąganie i odpychanie grawitacyjne, weźmy w obliczeniach {{LinkWzór|4.36a}} zamiast {{Formuła|<MATH>\kappa\;</MATH>}} (ta stała jest dodatnia) inną stałą proporcjalności, tzn.: {{Formuła|<MATH>-\kappa\;</MATH>}} (stała {{Formuła|<MATH>\kappa\;</MATH>}} w nim jest dodatnia, a z minusem ujemna), co wtedy udowodnimy, że dla sygnatury dodatniej i ujemnej są kolejno: odpychanie i przyciąganie grawitacyjne. Czyli dwoma sygnaturami są opisane dwa rodzaje oddziaływań grawitacyjnych. Zachowawczość tensora gęstości energii T{{Sup|&gamma;&omega;}} przy jego definicji: {{LinkWzór|4.20}} i {{LinkWzór|4.20S}}, na podstawie tożsamości różniczkowej {{LinkWzór|4.36a}}, przedstawia się dla obu sygnatur: {{CentrujWzór|<MATH>{T^{\gamma\omega}}_{;\gamma}=0\;</MATH>|4.6b}} Równanie {{LinkWzór|4.6b}} dla sygnatury ujemnej jest takie samo jak on dla sygnatury dodatniej, co do postaci, tylko jest troszkę inna definicja tensora gęstości energii-pędu, tzn.: {{LinkWzór|4.20}} - sygnatura dodatnia, i {{LinkWzór|4.20S}} - sygnatura ujemna. Równanie {{LinkWzór|4.6b}} wyprowadziliśmy z równości {{LinkWzór|4.35ba}} korzystając z definicji gęstości całkowitego lagrangianu {{LinkWzór|4.15}} będącej sumą gęstości lagrangianu masowego i przestrzennego {{LinkWzór|4.8}}, czyli otrzymaliśmy lokalną zachowawczość tensora gęstości energii-pędu, gdzie definicja tego tensora jest napisana w punkcie {{LinkWzór|1.48|Wprowadzenie do ogólnej teorii względności}} dla sygnatury dodatniej i {{LinkWzór|1.48|Wprowadzenie do ogólnej teorii względności}} dla sygnatury ujemnej. Lokalną zachowawczość tensora gęstości energii-pędu z przecinkiem otrzymaliśmy ze szczególnej teorii względności napisaną w punkcie {{LinkWzór|3.19aa11|Lokalna zachowawczość tensora gęstości energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} i {{LinkWzór|4.35ba11|Lokalna zachowawczość tensora gęstości energii(masy)-pędu z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, pisząc je dla obu sygnatur, z gęstością tensora siły zewnętrznej dla tego pierwszego równej zero, by te oba równania były równoważne, co dla układów zakrzywionych po transformacji do nich przecinek zastępujemy średnikiem i otrzymujemy równość {{LinkWzór|4.6b}}. == Lokalna zasada zachowania energii-pędu == Lokalną zasadę zachowania możemy napisać wychodząc ze szczególnej teorii względności z uwzględnieniem gęstości lagrangianu masowego z równania {{LinkWzór|g43|Lokalna zasada zachowania tensora pędu, z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} patrząc na równość {{LinkWzór|JH3|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}}, tylko zamiast tensora gęstości energii-pędu kinematycznego jest tensor gęstości energii-pędu masowy: {{CentrujWzór|<MATH>\gamma\sqrt{-g}\left(\rho v^{\mu}\right)_{;0}=-{{\gamma}\over{c}}\sqrt{-g}{T^{\mu j}}_{;j}+{{dK^{\mu}_z}\over{dV}}\;</MATH>|JHG12}} Gdzie w {{LinkWzór|JHG12}} jest w nim tensor gęstości energii-pędu zdefiniowany wzorem {{LinkWzór|4.36}} dla sygnatury dodatniej lub {{LinkWzór|4.3611}} dla sygnatury ujemnej. == Dowód równania Hilberta-Einsteina grawitacji nie z teorii lagrangianowej == Równania Hilberta-Einsteina grawitacji {{LinkWzór|4.21}} - przyciąganie grawitacyjne, {{LinkWzór|4.2122}} - odpychanie grawitacyjne, wykorzystując wzór na lokalną zachowawczość gęstości tensora energii-pędu {{LinkWzór|4.6b}} wymnażając obie strony przez stałą {{Formuła|<MATH>\pm\kappa\;</MATH>}}, {{Formuła|<MATH>\sqrt{-g}\;</MATH>}} i {{Formuła|<MATH>\overline e_{\omega}\;</MATH>}}, która w układach lokalnie płaskich jest wersorem lokalnie stałym, oraz całkując obustronnie względem całki objętościowej w czasoprzestrzeni zakrzywionej wykorzystując, że zachodzi własność dla rozszerzonego tensora Einsteina {{Formuła|<MATH>O^{\mu\nu}\;</MATH>}}, tzn.: {{LinkWzór|1.41|Wprowadzenie do ogólnej teorii względności}}, i doprowadzając obustronnie całkę z układów zakrzywionych do lokalnie płaskich, co później wykorzystując [[w:Twierdzenie Ostrogradskiego-Gaussa|twierdzenie Ostrogradskiego-Gaussa]] otrzymując w tym układzie całkę powierzchniową w układzie lokalnie płaskim, dalej z twierdzenia transformacji doprowadzamy całkę powierzchniową do układów zakrzywionych, otrzymujemy: {{CentrujWzór|<MATH>{\overline T^{\omega\gamma}}_{;\gamma}=0\Rightarrow \pm\kappa {\overline T^{\omega\gamma}}_{;\gamma}=0\Rightarrow \pm\kappa\int_{\tau}\sqrt{-g}\overline e_{\omega}{\overline T^{\omega\gamma}}_{;\gamma}d\tau=\int_{\tau}\sqrt{-g}\overline e_{\omega}\cdot 0\cdot d\tau\Rightarrow \pm\kappa\int_{\tau}\sqrt{-g}\overline e_{\omega}{\overline T^{\omega\gamma}}_{;\gamma}d\tau=\int_{\tau}\sqrt{-g}\overline e_{\omega}{\overline O^{\omega\gamma}}_{;\gamma}d\tau\Rightarrow \;</MATH>{{Br}}<MATH>\Rightarrow \pm\kappa\int_{\tau^'}e_{\omega^'}{T^{\omega^'\gamma^'}}_{,\gamma^'}d\tau^'=\int_{\tau^'}e_{\omega^'}{O^{\omega^'\gamma^'}}_{,\gamma^'}d\tau^' \Rightarrow\pm\kappa\oint_{\Sigma}e_{\omega^'}T^{\omega^'\gamma^'}d\Sigma_{\gamma^'}=\oint_{\Sigma}e_{\omega^'}O^{\omega^'\gamma^'}d\Sigma_{\gamma^'}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\pm\kappa\oint_{\overline \Sigma}\overline e_{\omega}\overline T^{\omega\gamma}d\overline \Sigma_{\gamma}=\oint_{\overline \Sigma}\overline e_{\omega}\overline O^{\omega\gamma}d\overline \Sigma_{\gamma}\Rightarrow\oint_{\overline \Sigma}\overline e_{\omega}\left(\pm\kappa \overline T^{\omega\gamma}-\overline O^{\omega\gamma}\right)d\overline \Sigma_{\gamma}=0\;</MATH>|HH}} Równanie ostatnie w {{LinkWzór|HH}} jest spełnione dla dowolnych powierzchni zamkniętych {{Formuła|<MATH>\overline \Sigma\;</MATH>}} i wersorów {{Formuła|<MATH>\overline e_{\omega}\;</MATH>}} w bazie, wtedy z tego równania dochodzimy do równości tensorowej, którym jest równaniem, które chcemy otrzymać, pisząc bez nadkreśleń: {{CentrujWzór|<MATH>\pm\kappa T^{\omega\gamma}-O^{\omega\gamma}=0\Rightarrow O^{\omega\gamma}=\pm\kappa T^{\omega\gamma}\Rightarrow G^{\omega\gamma}+\Lambda g^{\omega\gamma}=\pm\kappa T^{\omega\gamma}</MATH>|HH1}} Końcowe równanie w {{LinkWzór|HH1}} wyprowadzone jest z zachowawczości tensora gęstości energii-pędu {{LinkWzór|4.6b}}, jeżeli od zewnątrz nie działają na układ żadne siły zewnętrzne. == Szczególne postacie gęstości Lagrangianu == Wiedząc jaka jest gęstość lagrangianu przedstawionego w punkcie {{LinkWzór|1.122a1|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} w zerowym polu elektromagnetycznym, wtedy przepisując to dla tego przypadku i dokonując przekształceń, wtedy otrzymamy wzór taki sam jak w punkcie {{LinkWzór|4.360b|Lagrangian masowy kinematyczny w mechanice Einsteina i Newtona|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} dla sygnatury dodatniej i ujemnej (pojawia się tutaj dodatkowy minus) tensora metrycznego Minkowskiego przedstawiamy kolejno dla pierwszej sygnatury: {{CentrujWzór|<MATH>\mathfrak{L}=-\rho_0c^2=-\rho_0c^2u^{\dot \mu}u_{\dot\mu}=-\left[{{1}\over{2}}\left(\rho_0 c^2+p\right)u^{\dot\mu}\eta_{\dot\mu\dot\nu}u^{\dot\nu}+{{1}\over{2}}(\rho_0c^2-p)\eta^{\alpha\dot\mu}\eta_{\dot\mu\alpha}\right]\;</MATH>|4.360b}} Dla drugiej (zamiast {{Formuła|<MATH>\eta^{\mu\nu}\;</MATH>}} wstawiamy tensor {{Formuła|<MATH>-\eta^{\mu\nu}\;</MATH>}} do gęstości lagrangianu kinematycznego {{LinkWzór|4.360b}}): {{CentrujWzór|<MATH>\mathfrak{L}=-\rho_0c^2=\rho_0c^2u^{\dot \mu}u_{\dot\mu}=-\left[-{{1}\over{2}}\left(\rho_0 c^2+p\right)u^{\dot\mu}\eta_{\dot\mu\dot\nu}u^{\dot\nu}+{{1}\over{2}}(\rho_0c^2-p)\eta^{\alpha\dot\mu}\eta_{\dot\mu\alpha}\right]\;</MATH>|4.360b111}} We wzorze {{LinkWzór|4.360b}} sumowanie jest tylko po {{Formuła|<MATH>\mu\;</MATH>}} i {{Formuła|<MATH>\nu\;</MATH>}}, a względem {{Formuła|<MATH>\alpha\;</MATH>}} już nie. W przypadku wzoru na gęstości lagrangianu: {{LinkWzór|4.360b}} i {{LinkWzór|4.360b111}} zakładamy, że jest on również słuszny dla układów zakrzywionych, wtedy możemy napisać lagrangian masowy na podstawie {{LinkWzór|3.9|Właściwości skalaru tensora metrycznego}} w układach ogólnie zakrzywionych, biorąc gęstość lagrangianu z punktu {{LinkWzór|4.360b}}, nazywając ją według procedury {{Formuła|<MATH>\mathfrak{L}\rightarrow \mathfrak{L}_m\;</MATH>}}, a także pisząc {{Formuła|<MATH>L\rightarrow L_m\;</MATH>}}, wtedy też piszemy inne zastąpienie {{Formuła|<MATH>\eta^{\mu\nu}\rightarrow g^{\mu\nu}\;</MATH>}}, zatem: {{CentrujWzór|<MATH>L_m=\int\mathfrak{L}_mdV^'=\int\sqrt{-g}\mathfrak{L}_mdV\;</MATH>|4.360b1}} Widzimy, że we wzorze {{LinkWzór|4.360b1}} gęstość lagrangianu masowego przechodzi w formułę {{LinkWzór|4.360b}} i {{LinkWzór|4.360b111}}, (w gęstość lagrangianu), dla {{Formuła|<MATH>g_{\mu\nu}=\eta_{\mu\nu}\;</MATH>}}. == Najważniejsze wnioski w odpowiednich klasach układów z lokalnie stałymi jakimiś wielkościami == Jest spełniona równość w odpowiednich klasach układów lokalnie spoczynkowych: {{CentrujWzór|<MATH>{{\partial u^{\mu}}\over{\partial x^{\nu}}}=0\wedge u^{i}\rightarrow 0\wedge u^0=1\;</MATH>|qw20}} Jest spełniona równość w odpowiednich klasach układów lokalnie stałym tensorze prędkości: {{CentrujWzór|<MATH>{{\partial u^{\mu}}\over{\partial x^{\nu}}}=0\;</MATH>|qw201}} Jest spełniona równość dla odpowiednich klasach układów z lokalnie stałą gęstością spoczynkową: {{CentrujWzór|<MATH>{{\partial\rho_0}\over{\partial x^{\mu}}}=0\;</MATH>|qw2}} Jest również spełniona równość dla ciśnienia w odpowiednich klasach układów z lokalnie stałym ciśnieniem: {{CentrujWzór|<MATH>{{\partial p}\over{\partial x^{\mu}}}=0\;</MATH>|qw3}} Wniosek {{LinkWzór|1.42|Wprowadzenie do ogólnej teorii względności}}, {{LinkWzór|qw20}}, {{LinkWzór|qw2}} i {{LinkWzór|qw3}} są spełnione ogólnie dla układów lokalnie płaskich lokalnie spoczynkowych z lokalną stałością tensorów prędkości, gęstości masy spoczynkowej i ciśnienia, co taką klasę układów można użyć też do częściowego udowodnienia ogólnej teorii względności, np. do dowodu lokalnej zachowawczości tensora gęstości energii-pędu, jak w szczególnej teorii względności w {{LinkWzór|3.20|Lokalna zachowawczość tensora gęstości energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, lub mając ten sam układ biorąc zamiast {{LinkWzór|qw20}} warunek lokalności {{LinkWzór|qw201}}, wtedy mamy taką samą klasę układów współrzędnych z różnicą, że te układy nie są lokalnie spoczynkowymi, tylko lokalnie ze stałym tensorem prędkości, które można wykorzystać też do takiej samej teorii, ale dla układów lokalnie płaskich. == Tensor gęstości energii-pędu dla układów ogólnie zakrzywionych == Wykorzystajmy gęstość langrangianu masowego {{LinkWzór|4.360b}} (ostatnia równość) dla układów lokalnie płaskich zamieniając w nim według formuły: {{Formuła|<MATH>\eta^{\mu\nu}\rightarrow g^{\mu\nu}\;</MATH>}}, co wynika z definicji transformacji tensorów, wtedy otrzymamy gęstość lagrangianu masowego dla układów zakrzywionych dla sygnatury dodatniej tensora metrycznego Minkowskiego w postaci: {{CentrujWzór|<MATH>\mathfrak{L}_m=-\rho_0c^2=-\rho_0c^2u^{\dot \mu}u_{\dot\mu}=-\rho_0c^2u^{\dot \mu}g_{\dot\mu\dot\nu}u^{\dot\nu}=-\left[{{1}\over{2}}\left(\rho_0 c^2+p\right)u^{\dot\mu}g_{\dot\mu\dot\nu}u^{\dot\nu}+{{1}\over{2}}(\rho_0c^2-p)g^{\alpha\dot\mu}g_{\dot\mu\alpha}\right]\;</MATH>|4.360b11}} Dla drugiej (tutaj widzimy, że się pojawia dodatkowy minus przy gęstości lagrangianu masowego i minus przy tensorze metrycznym - drugie przedstawienie jego, przedstawienie względem {{LinkWzór|4.360b11}}): {{CentrujWzór|<MATH>\mathfrak{L}_m=-\rho_0c^2=\rho_0c^2u^{\dot \mu}u_{\dot\mu}=-\left[-{{1}\over{2}}\left(\rho_0 c^2+p\right)u^{\dot\mu}g_{\dot\mu\dot\nu}u^{\dot\nu}+{{1}\over{2}}(\rho_0c^2-p)g^{\alpha\dot\mu}g_{\dot\mu\alpha}\right]\;</MATH>|4.360b112}} W takiem razie tensor gęstości energii-pędu z jego definicji {{LinkWzór|4.20}} za pomocą lagrangianu masowego {{LinkWzór|4.360b11}} jest ona napisana dokładnie dla pierwszej sygnatury: {{CentrujWzór|<MATH>T^{\alpha\beta}=\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}+(\rho_0c^2-p)g^{\alpha\beta}-{{1}\over{2}}\left(\rho_0 c^2+p\right)g^{\alpha\beta}-{{1}\over{2}}(\rho_0c^2-p)g^{\alpha\beta}\Rightarrow T^{\alpha\beta}=\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}-pg^{\alpha\beta}</MATH>|4.36b}} Dla drugiej (tutaj widzimy, że pojawia się minus przy tensorze metrycznym układu zakrzywionego) względem {{LinkWzór|4.36b}}: {{CentrujWzór|<MATH>T^{\alpha\beta}=\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}-(\rho_0c^2-p)g^{\alpha\beta}+{{1}\over{2}}\left(\rho_0 c^2+p\right)g^{\alpha\beta}+{{1}\over{2}}(\rho_0c^2-p)g^{\alpha\beta}\Rightarrow T^{\alpha\beta}=\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}+pg^{\alpha\beta}</MATH>|4.36b2}} Co otrzymaliśmy taki sam tensor gęstości energii-pędu w {{LinkWzór|4.36b}} - sygnatura dodatnia, i {{LinkWzór|4.36b2}} - sygnatura ujemna, co kolejno w punktach {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}} i {{LinkWzór|1.45|Wprowadzenie do ogólnej teorii względności}}. Są to tensory gęstości energii-pędu, które możemy wykorzystać w lokalnej zachowawczości tensora gęstości energii-pędu {{LinkWzór|4.6b}} i w równaniu Hilberta-Einsteina w {{LinkWzór|4.21}} dla sygnatury dodatniej i {{LinkWzór|4.2122}} dla sygnatury ujemnej. A jeżeli zastosujemy silną zasadę równoważności, to równości: {{LinkWzór|4.36b}} i {{LinkWzór|4.36b2}}, powinny być równoważne z tym tensorem, w szczególnej teorii względności, jako: {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}} i {{LinkWzór|1.45|Wprowadzenie do ogólnej teorii względności}}, które otrzymujemy z analogicznych sposobów jak kolejno z {{LinkWzór|4.360b11}} i {{LinkWzór|4.360b112}} do {{LinkWzór|4.36b}} i {{LinkWzór|4.36b2}}, a dla szczególnej teorii względności mamy kolejno z {{LinkWzór|4.360b}} i {{LinkWzór|4.360b111}} do {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}} i {{LinkWzór|1.45|Wprowadzenie do ogólnej teorii względności}}, tylko zamiast tensora metrycznego Minkowskiego jest tensor metryczny układu ogólnie zakrzywionego, dla obu kolejno sygnatur. == Linie geodezyjne, a zasady równoważności == Wyprowadzimy tutaj równania geodezyjne dla układów punktowych i rozciągłych, a także z równań dla układów rozciągłych udowodnimy równanie dla układów punktowych, że sa one co do siebie równoważne, a także udowodnimy słabą i silną zasadę równoważności. === Przypadek linii geodezyjnych, tzn.: w pierwszym sposobie wyprowadzania, a silna zasada równoważności (dowód) === Wyprowdzimy tutaj z drugiej zasady Lagrange'a prawa ruchu ogólnej teorii względności dla układów punktowych i rozciągłych. ==== Układy punktowe ==== Weźmy lagrangian układu zakrzywionego, pisząc go dla obu sugnatur korzystając z definicji jedynki z {{LinkWzór|1.9|Wprowadzenie do ogólnej teorii względności}}, co na tej podstawie możemy lagrangian kinematyczny tensorowy przekształcić do postaci: {{CentrujWzór|<MATH>L_k=-{{1}\over{2}}m_0c^2=\mp{{1}\over{2}}m_0c^2\dot q^{\mu}g_{\mu\nu}\dot q^{\nu}\;</MATH>|JJ1}} Całkę działania dla lagrangianu kinematycznego dla układu zakrzywionego piszemy jako całkę po interwale czasoprzestrzennym z lagrangianu kinematycznego: {{CentrujWzór|<MATH>S=\int_s L_kds\;</MATH>|JJ2}} Napiszmy równanie na drugą zasad Lagrange'a mając lagrangian i ogólniony tensor siły, wiedząc, że całka działania {{LinkWzór|JJ2}} wtedy przyjmuje wartość najmniejszą: {{CentrujWzór|<MATH>{{d}\over{ds}}{{\partial L_k}\over{\partial \dot{q}^{\alpha}}}-{{\partial L_k}\over{\partial q^{\alpha}}}=Q_k</MATH>|JJ3}} Teraz policzmy kolejne wyrazy występujące w wyrażeniu Lagrange'a {{LinkWzór|JJ3}}, ale najpierw przejdźmy do drugiego składnika występujący w naszym wspomnianym wyrażeniu, czyli policzmy wyrażenie z dokładnością z dokładnością do czynników stałych jako pochodną cząstkową lagrangianu kinematycznego względem uogólnionego położenia: {{CentrujWzór|<MATH>\mp{{1}\over{m_0c^2}}{{\partial L_k}\over{\partial q^{\alpha}}}={{\partial}\over{\partial q^{\alpha}}}\left({{1}\over{2}}g_{\mu\nu}\dot{q}^{\mu}\dot{q}^{\nu}\right)={{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}</MATH>|JJ4}} Wyraz występujący pod pochodną zupełną po interwale czasoprzetrzennym pochodnej różniczkowej względem prędkości uogólnionej, który występuje w równaniu Eulera-Lagrange'a {{LinkWzór|JJ3}}, możemy przekształcić z dokładnością do czynników stałych do: {{CentrujWzór|<MATH>\mp{{1}\over{m_0c^2}}{{\partial \mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}={{1}\over{2}}\left(g_{\mu\nu}{\delta^{\nu}}_{\alpha}\dot{q}^{\mu}+\rho_0g_{\mu\nu}{\delta^{\mu}}_{\alpha}\dot{q}^{\nu}\right)={{1}\over{2}}\left(g_{\alpha\mu}\dot{q}^{\mu}+g_{\alpha\nu}\dot{q}^{\nu} \right)={{1}\over{2}}\left(g_{\alpha\mu}\dot{q}^{\mu}+g_{\mu\alpha}\dot{q}^{\mu} \right)={{1}\over{2}}\left(2g_{\alpha\mu}\dot{q}^{\mu}\right)=g_{\alpha\mu}\dot{q}^{\mu}</MATH>|JJ5}} Wyznaczmy pochodną zupełną względem interwału czasoprzestrzennego wuyrażenia obliczonego {{LinkWzór|JJ5}}, dzięki któremu napiszmy: {{CentrujWzór|<MATH>\mp{{1}\over{m_0c^2}}{{d}\over{ds}}{{\partial \mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}={{d}\over{ds}}\left(g_{\alpha\mu}\dot{q}^{\mu} \right)=g_{\alpha\mu}\ddot{q}^{\mu}+{{dg_{\alpha\mu}}\over{ds}}\dot{q}^{\mu}=g_{\alpha\mu}\ddot{q}^{\mu}+ {{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}</MATH>|JJ6}} Połączmy wyrażenia {{LinkWzór|JJ5}} i {{LinkWzór|JJ6}}, oraz podstawmy je odpowiednio do wzoru {{LinkWzór|JJ3}}, w takim przypadku napiszmy równość do przekształcenia matematycznego: {{CentrujWzór|<MATH>g_{\alpha\mu}\ddot{q}^{\mu}+ {{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}-{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}=\mp{{1}\over{m_0c^2}}Q^{\mu}\;</MATH>|JJ7}} Ale mamy z definicji tensora metrycznego prostego i odwrotnego mamy dwie tożsamości, które przestawimy poniżej w postaci dwóch tożsamości, które wynikają z własności ogólnie tensora metrycznego. {{ElastycznyWiersz|1={{CentrujWzór|<MATH>g^{\beta\alpha}g_{\alpha\mu}={\delta^{\beta}}_{\mu}</MATH>|4.46}}|2={{CentrujWzór|<MATH>g^{\beta\alpha}g_{\alpha\mu}\ddot{q}^{\mu}=\delta^{\beta}_k\ddot{q}^{\mu}=\ddot{q}^{\beta}</MATH>|4.47}}}} Z przemienności wskaźników tensora metrycznego wynikającego z jego definicji, tzn. drugi wyraz w tożsamości {{LinkWzór|4.45}}, możemy napisać: {{CentrujWzór|<MATH>g^{\beta\alpha}{{\partial g_{\alpha\mu}}\over{\partial \dot{q}^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}={{1}\over{2}}g^{\beta\alpha}\left({{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}+{{\partial g_{\alpha\nu}}\over{\partial q^{\mu}}}\right)\dot{q}^{\mu}\dot{q}^{\nu}</MATH>|4.48}} Symbole Christoffela możemy przedstawić wedle jej definicji występującego w równaniu tensorowym {{LinkWzór|4.49}}: {{CentrujWzór|<MATH>{\Gamma^{\beta}}_{\mu\nu}={{1}\over{2}}g^{\beta\alpha}\left( {{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}+{{\partial g_{\alpha\nu}}\over{\partial q^{\mu}}}-{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\right)</MATH>|4.50}} Pomnóżmy równość {{LinkWzór|JJ7}} przez element {{Formuła|<MATH>g^{\beta\alpha}\;</MATH>}}, dalej wykorzystajmy obliczenia na liczbach ogólnych {{LinkWzór|4.47}} i {{LinkWzór|4.48}} i wykorzystując definicję symboli Christoffela {{LinkWzór|4.50}} z rachunku tensorowego, wtedy: {{CentrujWzór|<MATH>\ddot{q}^{\beta}+{\Gamma^{\beta}}_{\mu\nu}\dot{q}^{\nu}\dot{q}^{\mu}=\mp{{1}\over{m_0c^2}}Q^{\beta}\Rightarrow{\dot q^{\beta}}_{;\alpha}\dot q^{\alpha}=\mp{{1}\over{m_0c^2}}Q^{\beta}\;</MATH>|JJ8}} Ale definicja uogólnionego tensora siły jest w drugiej zasadzie Lagrange'a dla układów punktowych dla obu sygnatur taka: {{CentrujWzór|<MATH>Q^{\beta}=\mp c K^{\beta}\;</MATH>|JJ9}} Wykorzystajmy definicję {{LinkWzór|JJ9}} na definicję uogólnionego tensora siły do równości {{LinkWzór|JJ8}}: {{CentrujWzór|<MATH>m_0c{\dot q^{\beta}}_{;\alpha}\dot q^{\alpha}=K^{\beta}\;</MATH>|JJ10}} Równość {{LinkWzór|JJ10}} dla układów lokalnie płaskich możemy przepisać z rachunku tensorowego z praw transformacji tensorowej: {{CentrujWzór|<MATH>m_0c{\dot q^{\beta}}_{,\alpha}\dot q^{\alpha}=K^{\beta}\Rightarrow m_0c{{du^{\beta}}\over{ds}}=K^{\beta}\;</MATH>|JJ11}} Końcowe równanie jest takie same jak równość na '''drugą zasadę dynamiki Einsteina''', czyli '''silna zasada równoważności''' dla układów punktowych jest spełniona. ==== Układy rozciągłe ==== Będziemy tutaj wyprowadzać linie geodezyjne dla wszystkich rodzajów układów rozciągłych i pokażemy, że ogólna teoria względności jest spełniona dla układów lokalnie płaskich i zakrzywionych. Napiszmy lagrangian w układach rozciągłych płaskich i zakrzywionych, wiedząc, że {{Formuła|<MATH>q^{\alpha}\;</MATH>}} i {{Formuła|<MATH>\dot{q}^{\alpha}\;</MATH>}} są zmiennymi niezależnymi względem siebie, wtedy w układzie zakrzywionym napiszmy całkowity lagrangian, z którego wyznaczymy gęstość lagrangianu kinematycznego tensorowego dla obu sygnatur tensora metrycznego, wychodząc od układu lokalnie płaskiego (opisywana przez szczególną teorię względności) do układu współrzędnych opisującego przestrzeń zakrzywioną (opisywaną przez ogólną teorię względności): {{CentrujWzór|<MATH>L_k=-{{1}\over{2}}m_0c^2=\mp{{1}\over{2}}c^2\int_V\rho_0dV_0=-{{1}\over{2}}c^2\int_V\rho_0\gamma\sqrt{1-{{v^2}\over{c^2}}}dV_0=-{{1}\over{2}}c^2\int_V\rho_0\gamma dV\Rightarrow\mathfrak{L}=-{{1}\over{2}}\rho_0\gamma c^2=\mp{{1}\over{2}}\rho_0\gamma c^2\dot q^{\mu}g_{\mu\nu}\dot q^{\nu}</MATH>|4.37}} *We wzorze {{LinkWzór|4.37}} znak u góry to sygnatura dodatnia, a u dołu ujemna, tensora metrycznego. Zakładamy, że mamy pewną metrykę z definiowaną przez tensory metryczne g{{Sub|&alpha;&nu;}} i obliczamy jaka jest najmniejsza linia między punktami A i B w czasoprzestrzeni Einsteina (ogólnie w n-wymiarowej czasoprzestrzeni, nie musi być cztery tak jak w czasoprzestrzeni Einsteina), po której cząstka ma się poruszać, czyli policzmy wariację wyrażenia Lagrangianu {{LinkWzór|4.37}}: {{CentrujWzór|<MATH>S=\int_s\int_{V_p}\mathfrak{L}_kdV_pds=\int_s\int_V\sqrt{-g}\mathfrak{L}_kdVds</MATH>|4.39}} *Gdzie: {{Formuła|<MATH>V_p\;</MATH>}} jest to obiętość ukłądów płaskich, a {{Formuła|<MATH>V\;</MATH>}} zakrzywionych. Napiszmy wzór na drugą zasadę Lagrange'a dla układów zakrzywionych mając gęstość lagrangianu kinematycznego {{LinkWzór|4.37}} i gęstość uogólnionego tensora siły w układzie zaskrzywionym: {{CentrujWzór|<MATH>{{d}\over{ds}}{{\partial \sqrt{-g}\mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}-{{\partial \sqrt{-g}\mathfrak{L}_k}\over{\partial q^{\alpha}}}={{dQ_{\alpha}}\over{dV}}</MATH>|4.40a}} Teraz policzmy kolejne wyrazy występujące w równaniu Lagrange'a {{LinkWzór|4.40a}}, ale najpierw przejdźmy do drugiego składnika występujący w naszym wspomnianym wyrażeniu: {{CentrujWzór|<MATH>\mp{{1}\over{c^2}}{{\partial \mathfrak{L}_k}\over{\partial q^{\alpha}}}={{\partial}\over{\partial q^{\alpha}}}\left({{1}\over{2}}\rho_0\gamma g_{\mu\nu}\dot{q}^{\mu}\dot{q}^{\nu}\right)={{1}\over{2}}\rho_0\gamma{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}+{{1}\over{2}}{{\partial}\over{\partial q^{\alpha}}}\rho_0\gamma</MATH>|4.41}} Wyraz występujący pod pochodną zupełną czasową, który występuje wyrażeniu Eulera-Lagrange'a {{LinkWzór|4.40a}}, możemy przekształcić do: {{CentrujWzór|<MATH>\mp{{1}\over{c^2}}{{\partial \mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}={{1}\over{2}}\rho_0\gamma\left(g_{\mu\nu}{\delta^{\nu}}_{\alpha}\dot{q}^{\mu}+\rho_0g_{\mu\nu}{\delta^{\mu}}_{\alpha}\dot{q}^{\nu}\right)+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma= {{1}\over{2}}\rho_0\gamma\left(g_{\alpha\mu}\dot{q}^{\mu}+g_{\alpha\nu}\dot{q}^{\nu} \right)+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma={{1}\over{2}}\rho_0\gamma\left(g_{\alpha\mu}\dot{q}^{\mu}+g_{\mu\alpha}\dot{q}^{\mu} \right)+\;</MATH>{{Br}}<MATH>+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma={{1}\over{2}}\rho_0\gamma\left(2g_{\alpha\mu}\dot{q}^{\mu}\right)+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0=\rho_0\gamma g_{\alpha\mu}\dot{q}^{\mu}+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma</MATH>|4.42}} Następnie wyznaczmy pochodną wyrażenia {{LinkWzór|4.42}} względem pewnego parametru {{Formuła|<MATH>s\;</MATH>}} (interwał czasoprzestrzenny), czyli pierwszy wyraz w {{LinkWzór|4.40a}}, który jest liczony względem s, który jest dla nas długością linii światła, czyli musimy policzyć pochodną zupełną policzonego wyrażenia {{LinkWzór|4.42}}. {{CentrujWzór|<MATH>\mp{{1}\over{c^2}}{{d}\over{ds}}{{\partial \mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}={{d}\over{ds}}\left(\rho_0\gamma g_{\alpha\mu}\dot{q}^{\mu} \right)+{{1}\over{2}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma=\rho_0\gamma g_{\alpha\mu}\ddot{q}^{\mu}+g_{\alpha\mu}\dot{q}^{\mu}{{d}\over{ds}}\rho_0\gamma+\rho_0\gamma{{dg_{\alpha\mu}}\over{ds}}\dot{q}^{\mu}+{{1}\over{2}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma=\;</MATH>{{Br}}<MATH>=\rho_0\gamma g_{\alpha\mu}\ddot{q}^{\mu}+g_{\alpha\mu}\dot{q}^{\mu}{{d}\over{ds}}\rho_0\gamma+ \rho_0\gamma{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}+{{1}\over{2}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma</MATH>|4.43}} A więc nasze równanie Lagrangianu {{LinkWzór|4.40a}}, której części są przedstawione i policzone w punktach {{LinkWzór|4.41}} i {{LinkWzór|4.43}}, czyli równanie Eulera-Lagrange'a dla naszego przypadku przy zdefiniowanym gęstości lagrangianu {{LinkWzór|4.37}}, przedstawia się po podzieleniu przez {{Formuła|<MATH>\sqrt{-g}\;</MATH>}}, {{Formuła|<MATH>\rho_0\;</MATH>}} i {{Formuła|<MATH>\gamma\;</MATH>}} obustronnie: {{CentrujWzór|<MATH>g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\sqrt{-g}}}{{d\sqrt{-g}}\over{ds}}+{{1}\over{2\sqrt{-g}\rho_0\gamma}}{{d\sqrt{-g}}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma+g_{\alpha\mu}\ddot{q}^{\mu}+g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\rho_0\gamma}}{{d}\over{ds}}\rho_0\gamma+{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}+\;</MATH>{{Br}}<MATH>+{{1}\over{2\rho_0\gamma}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma-{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}-{{1}\over{2\rho_0\gamma}}{{\partial}\over{\partial q^{\alpha}}}\rho_0\gamma-{{1}\over{2\sqrt{-g}}}{{\partial}\over{\partial q^{\alpha}}}\sqrt{-g}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}{{dQ_{\alpha}}\over{dV}}</MATH>|4.44a}} Podzielmy na dwie grupy wyrazów w {{LinkWzór|4.44a}}, jednej z lewej strony równania, a drugie z prawej, wtedy: {{CentrujWzór|<MATH>g_{\alpha\mu}\ddot{q}^{\mu}+{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}-{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}\pm{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}{{dQ_{\alpha}}\over{dV}}=-g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\sqrt{-g}}}{{d\sqrt{-g}}\over{ds}}-{{1}\over{2\sqrt{-g}\rho_0\gamma}}{{d\sqrt{-g}}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma+\;</MATH>{{Br}}<MATH>-g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\rho_0\gamma}}{{d}\over{ds}}\rho_0\gamma-{{1}\over{2\rho_0\gamma}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma+{{1}\over{2\rho_0\gamma}}{{\partial}\over{\partial q^{\alpha}}}\rho_0\gamma+{{1}\over{2\sqrt{-g}}}{{\partial}\over{\partial q^{\alpha}}}\sqrt{-g}\;</MATH>|4.44ba}} Obierzmy cechowanie zerując prawą stronę równości {{LinkWzór|4.44ba}}, bo ona w układzie lokalnie płaskim o lokalnie stałych parametrach jest równa zero, by na podstawie jej otrzymać poprawne równanie ruchu (geodezyjne): {{CentrujWzór|<MATH>-g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\sqrt{-g}}}{{d\sqrt{-g}}\over{ds}}-{{1}\over{2\sqrt{-g}\rho_0\gamma}}{{d\sqrt{-g}}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma-g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\rho_0\gamma}}{{d}\over{ds}}\rho_0\gamma-{{1}\over{2\rho_0\gamma}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma+{{1}\over{2\rho_0\gamma}}{{\partial}\over{\partial q^{\alpha}}}\rho_0\gamma+\;</MATH>{{Br}}<MATH>+{{1}\over{2\sqrt{-g}}}{{\partial}\over{\partial q^{\alpha}}}\sqrt{-g}=0\;</MATH>|4.44ab}} Przy cechowaniu {{LinkWzór|4.44ab}} wzór na linie geodezyjne {{LinkWzór|4.44ba}} przyjmuje postać: {{CentrujWzór|<MATH>g_{\alpha\mu}\ddot{q}^{\mu}+{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}-{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}=\mp{{1}\over{\sqrt{-g}\rho_0c^2}}{{dQ_{\alpha}}\over{dV}}\;</MATH>|4.44b}} Pomnóżmy teraz równanie {{LinkWzór|4.44b}} przez jakiś element tensora metrycznego w czasoprzestrzeni Einsteina, czyli przez element {{Formuła|<MATH>g^{\beta\alpha}\;</MATH>}}: {{CentrujWzór|<MATH>g^{\beta\alpha}g_{\alpha\mu}\ddot{q}^{\mu}+g^{\beta\alpha}{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}-g^{\beta\alpha}{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}g^{\beta\alpha}{{dQ_{\alpha}}\over{dV}}</MATH>|4.45}} Wykorzystajmy obliczenia w punktach {{LinkWzór|4.46}}, {{LinkWzór|4.47}} i {{LinkWzór|4.48}}, napiszmy równanie ruchu: {{CentrujWzór|<MATH>\ddot{q}^{\beta}+{{1}\over{2}}g^{\beta\alpha}\left( {{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}+{{\partial g_{\alpha\nu}}\over{\partial q^{\mu}}}-{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\right)\dot{q}^{\nu}\dot{q}^{\mu}=\mp{{1}\over{\sqrt{-g}\rho_0c^2}}g^{\beta\alpha}{{dQ_{\alpha}}\over{dV}}</MATH>|4.49}} Wykorzystajmy dfinicję symboli Christoffela, a zatem nasze równanie {{LinkWzór|4.49}}, na podstawie definicji symboli Christoffela {{LinkWzór|4.50}}, przedstawia się: {{CentrujWzór|<MATH>\ddot{q}^{\beta}+{\Gamma^{\beta}}_{\mu\nu}\dot{q}^{\nu}\dot{q}^{\mu}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}g^{\beta\alpha}{{dQ_{\alpha}}\over{dV}}\Rightarrow {\dot q^{\beta}}_{;\alpha}\dot q^{\alpha}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}{{dQ^{\beta}}\over{dV}}</MATH>|4.51}} Udowodniliśmy w ten sposób że równanie {{LinkWzór|1.74|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} wyprowadzone z zasad czysto geometrycznych jest takie samo jak z twierdzenia Eulera-Lagrange'a {{LinkWzór|4.51}} policzonego za pomocą rachunku wariacyjnego, gdy siły zewnętrzne niegrawitacyjne się zerują. Przedstawmy równanie końcowe {{LinkWzór|4.51}} w układzie zakrzywionym, mając definicję ogólnionego tensora siły {{LinkWzór|JJ9}}, ale tym razem dla różniczek, a nie dla wielkości skończonych, wtedy: {{CentrujWzór|<MATH>{q^{\beta}}_{;\alpha}\dot q^{\alpha}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}{{dQ^{\beta}}\over{dV}}\Rightarrow\sqrt{-g}\rho_0c^2{q^{\beta}}_{;\alpha}\dot q^{\alpha}=c{{dK^{\beta}}\over{dV}}\Rightarrow \sqrt{-g}\rho_0\gamma c{q^{\beta}}_{;\alpha}\dot q^{\alpha}={{dK^{\beta}}\over{dV}}\;</MATH>|4.52}} To równanie, tzn. {{LinkWzór|4.52}} przypiszmy w postaci, przekształcając je do układów lokalnie płaskich zamieniając je na układy lokalnie płaskie, w których panuje teoria dla układów płaskich: {{CentrujWzór|<MATH>\sqrt{-g}\rho_0\gamma c{q^{\beta}}_{;\alpha}\dot q^{\alpha}={{dK^{\beta}}\over{dV}}\Rightarrow \rho_0c{{du^{\beta}}\over{ds}}={{dK^{\beta}}\over{dV_0}}\;</MATH>|4.54}} Na podstawie otrzymanej równości {{LinkWzór|4.54}} można udowodnić '''silną zasadę równoważności''' dla układów rozciągłych, tzn. prawa w układzie lokalnie płaskim, wtedy tam jest spełniona szczególna teoria względności, mając je dla układów zakrzywionych, mają taką samą postać, co dla układów lokalnie płaskich, tylko zamiast tensora metrycznego Minkowskiego jest tensor metryczny czasoprzestrzeni zakrzywionej, a zamiast przecinka jest średnik. === Słaba zasada równoważności (dowód) === W układach inercjalnych rozciągłych panują prawa szczególnej teorii względności {{LinkWzór|4.54}} (z którego możemy policzyć tensor siły działający na rozciągłe ciało), a jeśli mamy obserwatora w poruszającej się w windzie, w inercjalnym układzie odniesienia (układ lokalnie płaski), poruszający się z przyśpieszeniem {{Formuła|<MATH>\vec a=\vec g\;</MATH>}}, to on porusza się wraz z windą, a on sam odczuwa siłę bezwładności do dołu windy w układzie nieinercjalnym poruszający się wraz z windą względem tego układu ostatniego, rozważając inaczej, weźmy inercjalny układ odniesienia poruszający się wraz z windą, wtedy pojawiają się tensory metryczne, które są jakimiś funkcjami, nierówne tensorowi metrycznemu Minkowskiego, i pojawia się wtedy tensor siły grawitacji pochodzący od tego układu opisany w równaniu dla układu dyskretnego {{LinkWzór|1.77ca11|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} (z którego możemy policzyć tensor siły działający na ciało) lub rozciągłego {{LinkWzór|LLL2|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} (z którego możemy policzyć gęstość tensora siły grawitacji), stąd obserwator nie może rozróżnić tego układu inercjalnego od nieinercjalnego, bo opisywać można też ten sam ruch tak samo w układzie inercjalnym i nieinercjalnym, stąd prawa sformułowane tensorowo w układzie inercjalnym w szczególnej teorii względności są słuszne również w układzie nieinercjalnym po zamienieniu w układzie inercjalnym tensora metrycznego Minkowskiego tensorem metrycznym tego układu nieinercjalnego, a przecinki średnikami, co wtedy otrzymujemy prawa ruchu dla układów nieinercjalnych, co można też to udowodnić z teorii transformacji przechodząc z układu inercjalnego do nieinercjalnego. A więc to dowodzi '''słabą zasadę równoważności''' Alberta Einsteina. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> ajyqdfua3whb5t1juduvdgcjo66nzv4 Dyskusja wikipedysty:Ashaio 3 16376 548328 465804 2026-07-26T08:36:41Z Persino 2851 /* Proszę sprawdzić email */ 548328 wikitext text/x-wiki {{Witaj}} [[Wikipedysta:Persino|Persino]] ([[Dyskusja wikipedysty:Persino|dyskusja]]) 04:00, 25 cze 2023 (CEST) == Wikijunior i pokrewne == Witaj. :Tak zgłosiłem, bowiem na wszystkich większych projektach wydzielona jest osobna przestrzeń nazw dla Wikijuniora. Jest on w końcu specjalnym projektem na Wikibooks. Ułatwia to organizację i przegląd modułów przeznaczonych głównie dla dzieci. Ogólnie nie musisz się dopisywać, choć większe zainteresowanie tematem zawsze bardziej przykuwa uwagę. Niestety, po wdrożeniu zmiany, może zaistnieć konieczność ręcznego przenisienia nikórych istnejących modułów, ale tym zajmiemy się 'w praniu'. :Co do języków - myślę, że przydałoby się to omówić w większym gronie. Faktycznie można utworzyć książki uczące dzieci 50 języków. Choć w samej książce "Języki" proponowałbym wprowadzić diametralne zmiany, podobnie jak przydałoby się to w matematyce. Myślę że Języki, powinny być swego rodzaju atlasem językowym z podziałem np. na słowiańskie, łacińskie itp. Słowo "najpopularniejsze" jest użyte w sensie pejoratywnym - w Polsce popularna jest nauka języków obcych takich jak, angielski (z rozróżnieniem na UK i US), niemiecki, rosyjski, hiszpański, kiedyś łacina, czasem esperanto, rzadziej chiński, japoński czy miejscami koreański. Języki bliskowschodnie jak arabski i hindi nie są tak popularne w Polsce, mimo tego można o nich pisać. Na uwadze należy mieć, że hiszpański i angielski nie są językami stricte eutopejskimi - bo używane są w obu Amerykach, rosysjki w Azji, ale też w Europie. :Projekt Wikibooks ma na celu ułatwianie tworzenia artykułów - części modułów można kopiować między książkami - ale z rozmysłem, bo większość z nich wymaga edycji. Nie można też zapomnieć o zachowaniu licencji - czyli podaniu opisu skąd zostało to zaczerpnięte i ewentualnie autorów (jeśli chodzi o Wikibooks, to najczęściej wystarczy podać linka do oryginału). :"Forkowanie" jest rzeczą dyskusyjną i ogólnie odradzaną. Najlepiej byłoby zrobić projekt w brudnopisie tego jakby to miało wyglądać, wtenczas możnaby polemizować. Ale myślę że robienie nadmiernych spisów treści może wprowadzić dzieciom mętlik w głowie. Dlatego też książki z Wikijuniora powinny być wykonywane w sposób w miarę przemyślany - bo bez jakiejść konkretnej koncepcji wyglądać to będzie tak tragicznie jak [[Wikijunior:Matematyka]], który w obecnej wersji wygląda jak jeden wielki dziecięcy koszyk na zabawki - wszystko powrzucane jak leci. Pozdrawiam -[[Wikipedysta:MonteChristof|MonteChristof]] <tt>[[Dyskusja Wikipedysty:MonteChristof|DMC]]</tt> 16:15, 7 mar 2009 (CET) :Co do [[:en:Wikitoddler]], myślę że jest przerost formy nad treścią. Ogólnie w koncepcji Wikijuniora mamy doczynienia z książkami, które adresowane są do młodszych czytelników, z założenia mających kontakt z takimi treściami pod okiem rodziców (wspólna praca z dzieckiem). Co prawda nie należy wykluczać samodzielnego przeglądania serwisu przez dzieci w wieku szkolnym - jak np. 1-3 klasa podstawówki. Niemniej jednak kontakty dzieci w tym wieku z Internetem najczęściej ograniczane są do serwisów poświęconym grom we flashu. Wikibobas jest w tym momencie wdrażaniem czegoś na siłę i zupełnie nie potrzebnym. Szczególnie, że bobasek to osoba w wieku do 4 lat która, co najwyżej może poznawać nowe dźwięki/słowa, patrzeć na kolorki - a o samodzielnym czytaniu na pewno możemy zapomnieć. Ze względu na taką specyfikację Wikijuniora - wymagającą niesamodzielnej pracy z literaturą, zgłoszony on został do wydzielenia pod osobną przestrzeń nazw - a podręczniki w nim wykonane wymagają specjalnego podejścia - zupełnie odmiennego od tego w podręcznikach dla młodzierzy i dorosłych. Wikibobas mógłby stanowić co najwyżej 1/4 części Wikijuniora, w założeniu że ten kierowany jest z uwzględnieniem dzieci do 12 lat, co tym samym śmiało pozwala na zawarcie go w definicji jak i treści samego Wikijuniora, bez zbędnej konieczności wydzielenia specjalnego miejsca. -[[Wikipedysta:MonteChristof|MonteChristof]] <tt>[[Dyskusja Wikipedysty:MonteChristof|DMC]]</tt> 14:18, 8 mar 2009 (CET) :P.S. Myślę, że podręczniki szkolne w postaci "''Przedmiot'' dla szkoły podstawowej", nie powinny się znaleźć w samym Wikijuniorze pomimo, że spełniają zakres wiekowy. Ewentualnie powinniśmy wydzielić je zbiorczo w poddziale Wikijuniora/Szkoła podstawowa. Co też postaram się uczynić w chwili wolnego czasu. -[[Wikipedysta:MonteChristof|MonteChristof]] <tt>[[Dyskusja Wikipedysty:MonteChristof|DMC]]</tt> 14:23, 8 mar 2009 (CET) ==Re:Wikijunior:Języki== Jakie pytanie, skoro strony nie ma i pytania? [[Wikipedysta:Ananas96|Ananas96]] 12:27, 10 maj 2009 (CEST) == [[Wikijunior:Liczby do 10]] == Thank you for translating our little book to Polish! [[File:Teeth.png|20px]] [[Wikipedysta:Heldergeovane|Helder]] 13:21, 9 lis 2009 (CET) == Propozycja zaleceń edycyjnych dla Książki kucharskiej == Hej :) Widzę, że zajmujesz się książką kucharską. Nie wiem, czy czytałaś w Barze, że przygotowałam propozycję zaleceń edycyjnych dla tego podręcznika (jest [[Wikipedysta:Magalia/Zalecenia|tutaj]]). Byłoby bardzo fajnie, gdybyś zerknęła czy są w porządku, ewentualnie naniosła jakieś poprawki czy zgłosiła uwagi, albo ogólnie napisała, czy ci odpowiadają w tej formie - chciałabym, żeby były jak najlepsze i wprowadzone przy współpracy możliwie dużej liczby edytorów tego podręcznika. Będę ogromnie wdzięczna za wszystkie uwagi :) Pozdrowienia serdeczne. [[Wikipedysta:Magalia|Magalia]] ([[Dyskusja Wikipedysty:Magalia|dyskusja]]) 19:59, 7 maj 2010 (CEST) == [[s:Kategoria:Tablice matematyczne|Tablice matematyczne]] i [[s:Kategoria:Kody źródłowe|kody źródłowe]] z Wikiźródeł == Tak ma sens, tylko trzeba stworzyć nowy podręcznik [[Tablice matematyczne]], a także ten owy podręcznik należy rozszerzyć, aby miał miano podręcznika, bo inaczej nie ma sensu tego robić.[[Wikipedysta:Persino|Persino]] ([[Dyskusja wikipedysty:Persino|dyskusja]]) 18:15, 26 lut 2016 (CET) == Proszę sprawdzić email == Witaj, {{PAGENAME}}: Proszę sprawdzić email! Temat: "The Community Insights survey is coming!" Jeśli masz jakieś pytania, wyślij e-mail na adres surveys@wikimedia.org. (English: Please check your email and spam! Subject is "The Community Insights survey is coming!" If you have questions, email surveys@wikimedia.org.) Sorry for the inconvenience, [[:pl:Special:Diff/60928651|you can read my explanation here]]. [[Wikipedysta:MediaWiki message delivery|MediaWiki message delivery]] ([[Dyskusja wikipedysty:MediaWiki message delivery|dyskusja]]) 18:24, 25 wrz 2020 (CEST) <!-- Wiadomość wysłana przez User:Samuel (WMF)@metawiki przy użyciu listy na https://meta.wikimedia.org/w/index.php?title=User:Samuel_(WMF)/Community_Insights_survey/pl&oldid=20478443 --> == Filtr nadużyć == * Już naprawiłem problem w przypadku filtru: '''Niedozwolone znaki przed lub po różnego rodzaju cudzysłowach''', a w przypadku: '''Wielokrotne nowe linie znacznikowo-szablonowo-znakowe, kolejne w wielu lub jednej linii''', nie stawiaj podwójnych pustych linii, tylko jedną. [[Wikipedysta:Persino|Persino]] ([[Dyskusja wikipedysty:Persino|dyskusja]]) 10:36, 26 lip 2026 (CEST) 8feln9aqeay1v4s2v2q328tax0ipgtc 548330 548328 2026-07-26T09:07:08Z Persino 2851 /* Filtr nadużyć */ 548330 wikitext text/x-wiki {{Witaj}} [[Wikipedysta:Persino|Persino]] ([[Dyskusja wikipedysty:Persino|dyskusja]]) 04:00, 25 cze 2023 (CEST) == Wikijunior i pokrewne == Witaj. :Tak zgłosiłem, bowiem na wszystkich większych projektach wydzielona jest osobna przestrzeń nazw dla Wikijuniora. Jest on w końcu specjalnym projektem na Wikibooks. Ułatwia to organizację i przegląd modułów przeznaczonych głównie dla dzieci. Ogólnie nie musisz się dopisywać, choć większe zainteresowanie tematem zawsze bardziej przykuwa uwagę. Niestety, po wdrożeniu zmiany, może zaistnieć konieczność ręcznego przenisienia nikórych istnejących modułów, ale tym zajmiemy się 'w praniu'. :Co do języków - myślę, że przydałoby się to omówić w większym gronie. Faktycznie można utworzyć książki uczące dzieci 50 języków. Choć w samej książce "Języki" proponowałbym wprowadzić diametralne zmiany, podobnie jak przydałoby się to w matematyce. Myślę że Języki, powinny być swego rodzaju atlasem językowym z podziałem np. na słowiańskie, łacińskie itp. Słowo "najpopularniejsze" jest użyte w sensie pejoratywnym - w Polsce popularna jest nauka języków obcych takich jak, angielski (z rozróżnieniem na UK i US), niemiecki, rosyjski, hiszpański, kiedyś łacina, czasem esperanto, rzadziej chiński, japoński czy miejscami koreański. Języki bliskowschodnie jak arabski i hindi nie są tak popularne w Polsce, mimo tego można o nich pisać. Na uwadze należy mieć, że hiszpański i angielski nie są językami stricte eutopejskimi - bo używane są w obu Amerykach, rosysjki w Azji, ale też w Europie. :Projekt Wikibooks ma na celu ułatwianie tworzenia artykułów - części modułów można kopiować między książkami - ale z rozmysłem, bo większość z nich wymaga edycji. Nie można też zapomnieć o zachowaniu licencji - czyli podaniu opisu skąd zostało to zaczerpnięte i ewentualnie autorów (jeśli chodzi o Wikibooks, to najczęściej wystarczy podać linka do oryginału). :"Forkowanie" jest rzeczą dyskusyjną i ogólnie odradzaną. Najlepiej byłoby zrobić projekt w brudnopisie tego jakby to miało wyglądać, wtenczas możnaby polemizować. Ale myślę że robienie nadmiernych spisów treści może wprowadzić dzieciom mętlik w głowie. Dlatego też książki z Wikijuniora powinny być wykonywane w sposób w miarę przemyślany - bo bez jakiejść konkretnej koncepcji wyglądać to będzie tak tragicznie jak [[Wikijunior:Matematyka]], który w obecnej wersji wygląda jak jeden wielki dziecięcy koszyk na zabawki - wszystko powrzucane jak leci. Pozdrawiam -[[Wikipedysta:MonteChristof|MonteChristof]] <tt>[[Dyskusja Wikipedysty:MonteChristof|DMC]]</tt> 16:15, 7 mar 2009 (CET) :Co do [[:en:Wikitoddler]], myślę że jest przerost formy nad treścią. Ogólnie w koncepcji Wikijuniora mamy doczynienia z książkami, które adresowane są do młodszych czytelników, z założenia mających kontakt z takimi treściami pod okiem rodziców (wspólna praca z dzieckiem). Co prawda nie należy wykluczać samodzielnego przeglądania serwisu przez dzieci w wieku szkolnym - jak np. 1-3 klasa podstawówki. Niemniej jednak kontakty dzieci w tym wieku z Internetem najczęściej ograniczane są do serwisów poświęconym grom we flashu. Wikibobas jest w tym momencie wdrażaniem czegoś na siłę i zupełnie nie potrzebnym. Szczególnie, że bobasek to osoba w wieku do 4 lat która, co najwyżej może poznawać nowe dźwięki/słowa, patrzeć na kolorki - a o samodzielnym czytaniu na pewno możemy zapomnieć. Ze względu na taką specyfikację Wikijuniora - wymagającą niesamodzielnej pracy z literaturą, zgłoszony on został do wydzielenia pod osobną przestrzeń nazw - a podręczniki w nim wykonane wymagają specjalnego podejścia - zupełnie odmiennego od tego w podręcznikach dla młodzierzy i dorosłych. Wikibobas mógłby stanowić co najwyżej 1/4 części Wikijuniora, w założeniu że ten kierowany jest z uwzględnieniem dzieci do 12 lat, co tym samym śmiało pozwala na zawarcie go w definicji jak i treści samego Wikijuniora, bez zbędnej konieczności wydzielenia specjalnego miejsca. -[[Wikipedysta:MonteChristof|MonteChristof]] <tt>[[Dyskusja Wikipedysty:MonteChristof|DMC]]</tt> 14:18, 8 mar 2009 (CET) :P.S. Myślę, że podręczniki szkolne w postaci "''Przedmiot'' dla szkoły podstawowej", nie powinny się znaleźć w samym Wikijuniorze pomimo, że spełniają zakres wiekowy. Ewentualnie powinniśmy wydzielić je zbiorczo w poddziale Wikijuniora/Szkoła podstawowa. Co też postaram się uczynić w chwili wolnego czasu. -[[Wikipedysta:MonteChristof|MonteChristof]] <tt>[[Dyskusja Wikipedysty:MonteChristof|DMC]]</tt> 14:23, 8 mar 2009 (CET) ==Re:Wikijunior:Języki== Jakie pytanie, skoro strony nie ma i pytania? [[Wikipedysta:Ananas96|Ananas96]] 12:27, 10 maj 2009 (CEST) == [[Wikijunior:Liczby do 10]] == Thank you for translating our little book to Polish! [[File:Teeth.png|20px]] [[Wikipedysta:Heldergeovane|Helder]] 13:21, 9 lis 2009 (CET) == Propozycja zaleceń edycyjnych dla Książki kucharskiej == Hej :) Widzę, że zajmujesz się książką kucharską. Nie wiem, czy czytałaś w Barze, że przygotowałam propozycję zaleceń edycyjnych dla tego podręcznika (jest [[Wikipedysta:Magalia/Zalecenia|tutaj]]). Byłoby bardzo fajnie, gdybyś zerknęła czy są w porządku, ewentualnie naniosła jakieś poprawki czy zgłosiła uwagi, albo ogólnie napisała, czy ci odpowiadają w tej formie - chciałabym, żeby były jak najlepsze i wprowadzone przy współpracy możliwie dużej liczby edytorów tego podręcznika. Będę ogromnie wdzięczna za wszystkie uwagi :) Pozdrowienia serdeczne. [[Wikipedysta:Magalia|Magalia]] ([[Dyskusja Wikipedysty:Magalia|dyskusja]]) 19:59, 7 maj 2010 (CEST) == [[s:Kategoria:Tablice matematyczne|Tablice matematyczne]] i [[s:Kategoria:Kody źródłowe|kody źródłowe]] z Wikiźródeł == Tak ma sens, tylko trzeba stworzyć nowy podręcznik [[Tablice matematyczne]], a także ten owy podręcznik należy rozszerzyć, aby miał miano podręcznika, bo inaczej nie ma sensu tego robić.[[Wikipedysta:Persino|Persino]] ([[Dyskusja wikipedysty:Persino|dyskusja]]) 18:15, 26 lut 2016 (CET) == Proszę sprawdzić email == Witaj, {{PAGENAME}}: Proszę sprawdzić email! Temat: "The Community Insights survey is coming!" Jeśli masz jakieś pytania, wyślij e-mail na adres surveys@wikimedia.org. (English: Please check your email and spam! Subject is "The Community Insights survey is coming!" If you have questions, email surveys@wikimedia.org.) Sorry for the inconvenience, [[:pl:Special:Diff/60928651|you can read my explanation here]]. [[Wikipedysta:MediaWiki message delivery|MediaWiki message delivery]] ([[Dyskusja wikipedysty:MediaWiki message delivery|dyskusja]]) 18:24, 25 wrz 2020 (CEST) <!-- Wiadomość wysłana przez User:Samuel (WMF)@metawiki przy użyciu listy na https://meta.wikimedia.org/w/index.php?title=User:Samuel_(WMF)/Community_Insights_survey/pl&oldid=20478443 --> == Filtr nadużyć == * Już naprawiłem problem w przypadku filtru: '''Niedozwolone znaki przed lub po różnego rodzaju cudzysłowach''', a w przypadku: '''Wielokrotne nowe linie znacznikowo-szablonowo-znakowe, kolejne w wielu lub jednej linii''', nie stawiaj podwójnych pustych linii, tylko jedną. [[Wikipedysta:Persino|Persino]] ([[Dyskusja wikipedysty:Persino|dyskusja]]) 10:36, 26 lip 2026 (CEST) == Znacznik mechanizmu MediaWiki: {{Tag|references|pojedynczy}} == Zamiast tego znacznika wstawiaj {{s|Przypisy}} w swoich książkach, w tym [[Śpiewnik]]. [[Wikipedysta:Persino|Persino]] ([[Dyskusja wikipedysty:Persino|dyskusja]]) 11:06, 26 lip 2026 (CEST) ebpafhf4qxq7pgnpay176xu0hn6zexb Mechanika kwantowa/Relatywistyczna teoria kwantów Kleina-Gordona 0 17778 548292 470219 2026-07-25T13:07:04Z Persino 2851 548292 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> == Równania mechaniki kwantowej relatywistycznej Kleina-Gordona == Wyprowadzimy teorie kwantową relatywistyczną Kliena-Gordona, która nie uwzględnia spinu opisywanej cząstki w porównaniu z teorią Diraca, który uwzględnia spin tejże cząstki. Z szczególnej teorii względności mamy wyrażenie wiążące energię relatywistyczną cząstki z jej wartością pędu oraz masą spoczynkową, która może przyjmować każdą nieujemną wartość tejże wielkości: {{CentrujWzór|<MATH>E^2=p^2c^2+m_0^2c^4\;</MATH>|24.1}} Wykorzystując równanie {{LinkWzór|24.1}} i zastępując kwadrat wektora relatywistycznego pędu kwadratem operatora pędu {{LinkWzór|5.8|Postulat_pierwszy_mechaniki_kwantowej}}, dostajemy: {{CentrujWzór|<MATH>E\psi=(-c^2\hbar^2\nabla^2+m_0^2c^4)\psi\;</MATH>|24.2}} A równanie zależne od czasu zapisujemy podobnie jak {{LinkWzór|24.2}}, wychodząc z równania {{LinkWzór|24.1}}, piszemy: {{CentrujWzór|<MATH>\left(i\hbar{{\partial}\over{\partial t}}\right)^2\psi=\left(-\hbar^2c^2\nabla^2+m_0^2c^4\right)\psi\;</MATH>|24.3}} W lewej stronie równania {{LinkWzór|24.3}} wykonujemy podnoszenie do kwadratu operatora pochodnej względem czasu wraz z pewnym urojonym czynnikiem: {{CentrujWzór|<MATH>-\hbar^2{{\partial^2}\over{\partial t^2}}\psi=\left(-\hbar^2c^2\nabla^2+m_0^2c^4\right)\psi\;</MATH>|24.4}} Dzielimy obie strony równania {{LinkWzór|24.4}} przez wyrażenie, która jest w pewnym rodzaju stałą zależną od stałej kreślonej Plancka i prędkości światła: {{Formuła|<MATH>-\hbar^2c^2\;</MATH>}}: {{CentrujWzór|<MATH>{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}\psi=\left(\nabla^2-{{m_0^2c^2}\over{\hbar^2}}\right)\psi\;</MATH>|24.5}} Przenosimy wyrazy z drugimi pochodnymi cząstkowymi względem czasu i położenia na lewą stronę równania {{LinkWzór|24.5}}, a pozostałe na jej prawą stronę, otrzymujemy: {{CentrujWzór|<MATH>\left(\nabla^2-{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}\right)\psi={{m_0^2c^2}\over{\hbar^2}}\psi\;</MATH>|24.6}} Prowadźmy nowe oznaczenie i oznaczmy je operatorem d'Alemberta wiążące drugie pochodne względem wszystkich współrzędnych czasoprzestrzennych jakie występują w szczególnej teorii względności: {{CentrujWzór|<MATH>\square=\nabla^2-{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}\;</MATH>|24.7}} Wtedy równanie różniczkowe drugiego rzędu {{LinkWzór|24.6}}, korzystając przy tym z definicję operatora d'Alemberta {{LinkWzór|24.7}}, przechodzi w bardzo prostą postać, w której z prawej strony występują tylko stałe, tzn. masa spoczynkowa cząstki masowej i w sposób liniowy funkcja falowa, a jeśli masa cząstki jest równa zero (np. cząstki, które są fotonami), ta prawa strona jest zawsze równa zero niezależnie jaką mamy do dyspozycji funkcję falową jaką otrzymamy w wyniku rozwiązania funkcji falowej równania zależnego od czasu Klieina-Gordona. {{CentrujWzór|<MATH>\square\psi={{m_0^2c^2}\over{\hbar^2}}\psi\;</MATH>|24.8|Obramuj}} Jeżeli cząstka znajduje się w polu elektromagnetycznym, to dodatkowa energia w tym polu jest związana z energią potencjalną cząstki mającej ładunek o wartości "q", jest to całkowita energia w tymże polu potencjalnym, z którego wyprowadzimy energią cząstki, którą miałby bez pola skalarnego elektrycznego {{Formuła|<MATH>E\;</MATH>}}, ma wartość: {{CentrujWzór|<MATH>E'=E+q\varphi\Rightarrow E=E'-q\varphi\;</MATH>|24.9}} Podobnie uogólniony pęd cząstki może być zmieniony przez wektorowy potencjał pola elektromagnetycznego związany o dodatkowy człon związany z ładunkiem cząstki i potencjałem wektorowym: {{CentrujWzór|<MATH>p'=p+q\vec{A}\Rightarrow p=p'-q\vec{A}\;</MATH>|24.10}} Po tych udogodnieniach, tzn.: {{LinkWzór|24.9}} (energia całkowita primowana cząstki w polu skalarnym elektrycznym) i {{LinkWzór|24.10}} (pęd primowany cząstki w polu potencjału wektorowego magnetycznego), mamy: {{CentrujWzór|<MATH>\left\{i\hbar{{\partial}\over{\partial t}}-q\varphi\right\}^2\psi=(-i\hbar c\nabla-qc\vec{A})^2\psi+m_0^2c^4\psi\;</MATH>|24.11|Obramuj}} Jest to '''równanie Kleina-Gordona zależne od czasu''' analogiczne do {{LinkWzór|24.3}}, bo w nim nie występuje parametr skalarny energii cząstki, ale w nim zamiast niego są pochodne czasowe funkcji falowej. A równanie Kleina-Gordona niezależne od czasu, w którym nie występują pochodne zależne od czasu, natomiast parametr energii cząstki występuje, przyjmuje kształt: {{CentrujWzór|<MATH>\left\{E-q\varphi\right\}^2\psi=(-i\hbar c\nabla-qc\vec{A})^2\psi+m_0^2c^4\psi\;</MATH>|24.12|Obramuj}} == Wyprowadzenie równań mechaniki kwantowej relatywistycznej Kleina-Gordona zależnego i niezależnego od czasu == Prawa mechaniki relatywistycznej kwantowej Kleina-Gordona rozważane są słuszne jedynie dla pól elektromagnetostatycznych, czyli dla pól elektrycznych i magnetycznych, stałych w czasie. === Dowód niepełny === Z szczególnej teorii względności wiadomo, że zachodzi {{LinkWzór|3.8|Definicja masy i energii, spoczynkowej i relatywistycznej, i pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, a także należy skorzystać z równania na pęd uogólniony {{LinkWzór|24.10}} z uwzględnieniem poprawki istnienia pola elektrycznego {{LinkWzór|24.9}} i magnetycznego {{LinkWzór|24.10}} wtedy wzór na całkowitą energię piszemy w zależności od pędu ogólnionego i potencjału skalarnego: {{CentrujWzór|<MATH>E=\sqrt{c^2\left(\vec p-q\vec A\right)^2+m_0^2c^4}+q\varphi\Rightarrow (E-q\varphi)^2=c^2(\vec p-q\vec A)^2+m_0^2c^4\;</MATH>|W1}} W równaniach mechaniki kwantowej Kleina-Gordona podobnie jak w mechanice kwantowej nierelatywistycznej funkcja falowa jest napisana w sposób {{LinkWzór|10.4a|Postulat czwarty mechaniki kwantowej}} lub {{LinkWzór|10.4b|Postulat czwarty mechaniki kwantowej}}, czy nawet w postaci {{LinkWzór|10.4c|Postulat czwarty mechaniki kwantowej}}. Jeżeli skorzystamy z równania {{LinkWzór|10.10a|Postulat czwarty mechaniki kwantowej}}, wtedy równanie niezależne od czasu piszemy, wychodząc z postaci {{LinkWzór|W1}} wymnażając obie jego strony przez {{Formuła|<MATH>\psi(\vec r,t,\vec p,\vec E)\;</MATH>}}, w postaci: {{CentrujWzór|<MATH>(E-q\varphi)^2\psi(\vec r,t,\vec p,\vec E)=c^2(\vec p-q\vec A)^2\psi(\vec r,t,\vec p,\vec E)+m_0^2c^4\psi(\vec r,t,\vec p,\vec E)\Rightarrow(E-q\varphi)^2\psi(\vec r,t,\vec p,\vec E)=\;</MATH><BR><MATH>=c^2(\hat p-q\vec A)^2\psi(\vec r,t,\vec p,\vec E)+m_0^2c^4\psi(\vec r,t,\vec p,\vec E)\;</MATH>|W2}} *Powyższe równanie zachodzi w polu magnetostatycznym (w polu magnetycznym stałym), w którym zachodzi cechowanie {{Formuła|<MATH>\nabla\vec A=0\;</MATH>}} dla działu magnetostatyka. Równanie {{LinkWzór|W2}} przechodzi w równanie {{LinkWzór|24.12}} po zsumowaniu wraz ze współczynnikami względem stanów dla tych samych {{Formuła|<MATH>E\;</MATH>}} i różnych pędów uogólnionych {{Formuła|<MATH>\vec p\;</MATH>}}, bo dostajemy wtedy równość: {{CentrujWzór|<MATH>(E-q\varphi)^2\psi(\vec r,t,\vec E)=c^2(\hat p-q\vec A)^2\psi(\vec r,t,\vec E)+m_0^2c^4\psi(\vec r,t,\vec E)\;</MATH>|W3}} Wiadomo, że na podstawie {{LinkWzór|10.15b|Postulat czwarty mechaniki kwantowej}}, bo tam samo się wyprowadza jak w mechanice kwantowej klasycznej i odejmując stronami wyrażenie {{Formuła|<MATH>q\varphi\psi(\vec r,t,\vec p,E)\;</MATH>}} i mnożąc jeszcze raz operatorem występującym po prawej stronie równania poniższego dostajemy: {{CentrujWzór|<MATH>(E-q\varphi)\psi(\vec r,t,\vec p,E)=\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)\psi(\vec r,t,\vec p,E)\Rightarrow \left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)(E-q\varphi)\psi(\vec r,t,\vec p,E)=\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t,\vec p,E)\Rightarrow\;</MATH><BR><MATH>\Rightarrow(E-q\varphi)\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)\psi(\vec r,t,\vec p,E)=\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t,\vec p,E)\Rightarrow\;</MATH><BR><MATH>\Rightarrow(E-q\varphi)^2\psi(\vec r,t,\vec p,E)=\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t,\vec p,E)\;</MATH>|W4}} * Wartość {{Formuła|<MATH>(E-q\varphi)\;</MATH>}} zachowuje się ja wartość własna według operatora {{Formuła|<MATH>\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)</MATH>}}, bo mamy do czynienia z polem elektrostatycznym, w której zachodzi {{Formuła|<MATH>i\hbar{{\partial}\over{\partial t}}\varphi(\vec r,t)=0\;</MATH>}} dla działu elektrostatyka. Równanie {{LinkWzór|W2}} przechodzi w równanie {{LinkWzór|24.12}} po zsumowaniu wraz ze współczynnikami względem stanów dla tych samych {{Formuła|<MATH>E\;</MATH>}} i ogólnie różnych {{Formuła|<MATH>\vec p\;</MATH>}}, bo dostajemy wtedy równość: {{CentrujWzór|<MATH>(E-q\varphi)^2\psi(\vec r,t,E(t))=\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t,E(t))\;</MATH>|W5}} Łączymy prawą stronę wzoru {{LinkWzór|W2}} z prawą stronę wzoru {{LinkWzór|W4}} dostając: {{CentrujWzór|<MATH>\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t,\vec p,E)=c^2(\hat p-q\vec A)^2\psi(\vec r,t,\vec p,\vec E)+m_0^2c^4\psi(\vec r,t,\vec p,\vec E)\;</MATH>|W6}} Równanie {{LinkWzór|W6}} przechodzi w równanie {{LinkWzór|24.11}} po zsumowaniu wraz ze współczynnikami względem stanów dla ogólnie różnych {{Formuła|<MATH>E\;</MATH>}} i różnych pędów uogólnionych {{Formuła|<MATH>\vec p\;</MATH>}}, bo dostajemy wtedy równość: {{CentrujWzór|<MATH>\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t)=c^2(\hat p-q\vec A)^2\psi(\vec r,t)+m_0^2c^4\psi(\vec r,t)\;</MATH>|W7}} Równość {{LinkWzór|W7}} jest to równanie zależne od czasu jest takie same jak {{LinkWzór|24.11}}. Co kończy dowód równania zależnego i niezależnego od czasu równania mechaniki kwantowej Kleina-Gordona. A dalsze zależności w mechanice kwantowej relatywistyczne Kleina-Gordona są podobne jak w rozdziale "[[Mechanika kwantowa/Postulat czwarty mechaniki kwantowej#Wyprowadzenie równania falowego zależnego i niezależnego od czasu|Wyprowadzenie równania falowego zależnego i niezależnego od czasu]]". === Dowód pełny === Zastąpmy zmienne pędu i energii cząstki w równaniu {{LinkWzór|W1}} (mechaniki relatywistycznej w równaniu na energię całkowitą układu odpowiednio przekształconą) przez wartości średnie: {{CentrujWzór|<MATH>\overline{(E-q\varphi)^2}=c^2\overline{(\vec p-q\vec A)^2}+m_0^2c^4</MATH>|q1a}} Napiszmy definicję wartości średnich występujących w równaniu {{LinkWzór|q1a}} po lewej stronie i po prawej pod czynnikiem {{Formuła|<MATH>c^2\;</MATH>}}, jako: ---- Pierwsza wartość średnia jak zobaczymy jest równa wyrażeniu z definicji średniej ważonej: {{CentrujWzór|<MATH>\overline{(E-q\varphi)^2}={{\left(\psi\left|\left(E-q\varphi\right)^2\right|\psi\right)}\over{\left(\psi|\psi\right)}}=\sum_i|c_i(E)|^2\left(E-q\varphi\right)^2_i+\int |c(\vec k,E)|^2\left(E-q\varphi\right)^2(\vec k)d^{3}d\vec k</MATH>|q1b}} Druga wartość średnia jak zobaczymy jest równa wyrażeniu z definicji średniej ważonej: {{CentrujWzór|<MATH>\overline{\left(\vec p-q\vec A\right)^2}={{\left(\psi\left|\left(\hat p-q\vec A\right)^2\right|\psi\right)}\over{\left(\psi|\psi\right)}}=\sum_i|c_i(\vec k)|^2\left(\vec p-q\vec A\right)^2_i+\int |c(\vec k)|^2\left(\vec p-q\vec A\right)^2(\vec k)d^{3}d\vec k</MATH>|q1c}} *Powyższe równanie zachodzi w polu magnetostatycznym (w polu magnetycznym stałym), w którym zachodzi cechowanie {{Formuła|<MATH>\nabla\vec A=0\;</MATH>}} dla działu magnetostatyka. ---- Wzory {{LinkWzór|q1b}} i {{LinkWzór|q1c}} podstawmy do równości {{LinkWzór|q1a}}, w takim razie otrzymamy wzór jako związek według iloczynów skalarnych: {{CentrujWzór|<MATH>{{\left(\psi\left|\left(E-q\varphi\right)^2\right|\psi\right)}\over{\left(\psi|\psi\right)}}=c^2{{\left(\psi\left|\left(\hat p-q\vec A\right)^2\right|\psi\right)}\over{\left(\psi|\psi\right)}}+m_0^2c^4{{\left(\psi|\psi\right)}\over{\left(\psi|\psi\right)}}\;</MATH>|q1d}} Wzór {{LinkWzór|q1d}} pomnóżmy obustronnie przez {{Formuła|<MATH>\left(\psi|\psi\right)\;</MATH>}}, który jest pewnego rodzaju unormowaniem średniej z operatora, i napiszmy go w formie iloczynu skalarnego: {{CentrujWzór|<MATH>\left(\psi\left|\left(E-q\varphi\right)^2-c^2\left(\hat p-q\vec A\right)^2-m_0^2c^4\right|\psi\right)=0</MATH>|q1e}} Równość {{LinkWzór|q1e}} napiszmy w formie z dwóch funkcji falowych ogólnie różnych, pierwsza jest dowolna, a druga już nie, tzn. według przejścia z formy {{LinkWzór|q1e}} do {{LinkWzór|q1f}}, według praw algebry na iloczynach skalarnych w matematyce o funkcjach falowych ogólnie zespolonych, czyli według twierdzenia {{LinkTwierdzenie|HH1|Postulat czwarty mechaniki kwantowej}}: {{CentrujWzór|<MATH>\left(\phi\left|\left(E-q\varphi\right)^2-c^2\left(\hat p-q\vec A\right)^2-m_0^2c^4\right|\psi(\vec r,t,E)\right)=0</MATH>|q1f}} Też nożna powiedzieć naz podstawie {{LinkTwierdzenie|HH1|Postulat_czwarty_mechaniki_kwantowej}} elementy macierzowe względem dwóch dowolnych funkcji: {{CentrujWzór|<MATH>\left(\phi|\left(E-q\varphi\right)^2-c^2\left(\hat p-q\vec A\right)^2-m_0^2c^4|\psi\right)=0\;</MATH>|Lr31}} Ale mamy funkcję {{Formuła|<MATH>\phi\;</MATH>}} dowolną i ściśle określoną bazę funkcji {{Formuła|<MATH>\psi(\vec r,t,E)</MATH>}}, zatem równanie niezależne od czasu piszemy w formie: {{CentrujWzór|<MATH>\left(E-q\varphi\right)^2\psi(\vec r,t,E)=c^2\left(\hat p-q\vec A\right)^2\psi(\vec r,t,E)+m_0^2c^4\psi(\vec r,t,E)</MATH>|q1g}} Przedstawmy równanie {{LinkWzór|q1g}}, gdy wartość własna {{Formuła|<MATH>E\;</MATH>}} jest zależna od czasu, czyli jako {{Formuła|<MATH>E(t)\;</MATH>}}: {{CentrujWzór|<MATH>\left(E(t)-q\varphi(\vec r)\right)^2\psi(\vec r,t,E(t))=c^2\left(\hat p-q\vec A(\vec r)\right)^2\psi(\vec r,t,E(t))+m_0^2c^4\psi(\vec r,t,E(t))\Rightarrow</MATH><BR><MATH>\Rightarrow T^+\left(E(t)-q\varphi(\vec r)\right)^2\psi(\vec r,t,E(t))=c^2T^+\left(\hat p-q\vec A(\vec r)\right)^2TT^+\psi(\vec r,t,E(t))+m_0^2c^4T^+\psi(\vec r,t,E(t))\Rightarrow</MATH><BR><MATH>\Rightarrow \left(E(t)-q\varphi(\vec r)\right)^2\psi(\vec r,0,E(0))=c^2\left(\hat p-q\vec A(\vec r)\right)^2\psi(\vec r,0,E(0))+m_0^2c^4\psi(\vec r,0,E(0))\Rightarrow E(t)=E(0)=E</MATH>|q1g1}} Czyli na podstawie {{LinkWzór|q1g1}} wartość własna {{Formuła|<MATH>E\;</MATH>}} jest niezależna od czasu, na podstawie tego, że pole elektromagnetyczne jest niezależne od czasu, w tym równaniu, mamy tutaj do czynienia z polem elektromagnetostatycznym, ono jest, zależne tylko od wektora wodzącego {{Formuła|<MATH>\vec r\;</MATH>}}, w swojej definicji. Średnie jakiś wielkości (operatora) w równaniu na średnich są spełnione dla dowolnych funkcji na podstawie twierdzenia {{LinkTwierdzenie|NN0|Postulat czwarty mechaniki kwantowej}}, jeżeli wiadomo, że jego jedna średnia tych wielkości, dla jednej funkcji własnej tego operatora, jest spełniona w nim w mechanice kwantowej relatywistycznej Kleina-Gordona. Weźmy równanie falowe takie samo jak w mechanice nierelatywistycznej kwantowej w dowodzie pełnym {{LinkWzór|Lr5|Postulat czwarty mechaniki kwantowej}}, a tam weźmy równanie na funkcję {{Formuła|<MATH>\psi(t,E(t=0))\;</MATH>}} takie samo jak jako w wspomnianej teorii, wtedy jego równanie różniczkowe jest w postaci {{LinkWzór|Lr6|Postulat czwarty mechaniki kwantowej}}, i przepiszmy go w innej formie wynikającej z niej: {{CentrujWzór|<MATH>\left(E-q\varphi\right)^2\psi(t,E(t=0))=\left(i\hbar{{\partial}\over{\partial t}}-q\varphi\right)^2\psi(t,E(t=0))\;</MATH>|q1h}} * Równość {{LinkWzór|q1h}} podobnie wyprowadzamy jak równanie {{LinkWzór|W4}} pamiętając, że w {{Formuła|<MATH>(E-q\varphi)\;</MATH>}} zachowuje się jak wartość własna przy operatorze {{Formuła|<MATH>\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)\;</MATH>}}, bo funkcja {{Formuła|<MATH>\varphi\;</MATH>}} nie zależy od czasu, bo {{Formuła|<MATH>i\hbar{{\partial}\over{\partial t}}\varphi=0\;</MATH>}}, ponieważ mamy do czynienia z polem elektrostatycznym, czyli z polem elektrycznym stałym (dział elektrostatyka). Równanie {{LinkWzór|q1g}} dla {{Formuła|<MATH>t=0\;</MATH>}} pomóżmy przez funkcję zależną od energii i czasu, tzn.: {{Formuła|<MATH>\psi(t,E(t=0))\;</MATH>}}, a {{LinkWzór|q1h}} przez funkcję falową równania niezależnego od czasu, tzn.: {{Formuła|<MATH>\psi(\vec r,t=0,E(t=0))\;</MATH>}}, wtedy możemy napisać: {{CentrujWzór|<MATH>\left(i\hbar{{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t,E(t=0))=c^2\left(\hat p-q\vec A\right)^2\psi(\vec r,t,E(t=0))+m_0^2c^4\psi(\vec r,t,E(t=0))</MATH>|q1i}} Formułę {{LinkWzór|q1i}} zsumujmy ze współczynnikami stałymi funkcji falowej do funkcji niezależnej od energii, otrzymujemy równanie różniczkowe zależne tylko od położenia i czasu: {{CentrujWzór|<MATH>\left(i\hbar{{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t)=c^2\left(\hat p-q\vec A\right)^2\psi(\vec r,t)+m_0^2c^4\psi(\vec r,t)</MATH>|q1j}} Zatem równość {{LinkWzór|q1g}} jest równaniem niezależnym od czasu zależącym od energii układu, a {{LinkWzór|q1j}} zależnym od czasu, niezależną od niej. == Równanie Schrödingera jako szczególny przypadek teorii kwantów Kliena-Gordona == Równanie niezależne od czasu jest w postaci {{LinkWzór|24.12}}. Energia całkowita cząstki możemy wyrazić w zależności od sumy jej energii mechanicznej znanej z mechaniki klasycznej będących sumę energii kinetycznej i potencjalnej, też składa się z energii spoczynkowej (ta energia posiadana jest przez cząstkę, gdy ona spoczywa) znanej ze szczególnej teorii względności, która jest przestawiona jako: {{CentrujWzór|<MATH>E=m_0c^2+E^'\;</MATH>|24.13}} Równanie {{LinkWzór|24.13}}, która jest równaniem dokładnym podstawmy do równania Kliena-Gordona nie zależnego od czasu {{LinkWzór|24.12}}, dostajemy równość: {{CentrujWzór|<MATH>(m_0c^2+E^'-q\varphi)^2\psi=(-i\hbar c\nabla-qc\vec{A})^2\psi+m_0^2c^4\psi\;</MATH>|24.14}} Dokonujemy działań z lewej stronie równości różniczkowej {{LinkWzór|24.14}}, która występuje przed funkcją falową, dostajemy: {{CentrujWzór|<MATH>(m^2_0c^4+{E^'}^2+q^2\varphi^2+2m_0c^2E^'-2m_0c^2q\varphi-2E^'q\varphi)\psi=(-i\hbar c\nabla-qc\vec{A})^2\psi+m_0^2c^4\psi\;</MATH>|24.15}} Dokonując redukcji pewnych wyrazów, które są takie same jak po lewej i prawej stronie naszego równania: {{CentrujWzór|<MATH>({E^'}^2+q\varphi+2m_0c^2E^'-2m_0c^2q\varphi)\psi=(-i\hbar c\nabla-qc\vec{A})^2\psi\;</MATH>|24.16}} Ponieważ energia mechaniczna cząstki i jego energia potencjalna są o wiele mniejsza od jego energii spoczynkowej tej samej korpuskuły, więc możemy to nasze równanie zapisać w przybliżeniu: {{CentrujWzór|<MATH>2m_0c^2(E^'-q\varphi)\psi=(-i\hbar c\nabla-qc\vec{A})^2\psi\;</MATH>|24.17}} Dzielimy obie strony równania {{LinkWzór|24.17}} przez podwojoną energię spoczynkową naszej badanej cząstki {{Formuła|<MATH>2m_0c^ 2\;</MATH>}}, dostajemy: {{CentrujWzór|<MATH>(E^'-q\varphi)\psi={{(-i\hbar \nabla-q\vec{A})^2\psi}\over{2m_0}}\;</MATH>|24.18}} Przenosimy wyraz związany z energią potencjalną cząstki, która jest iloczynem potencjału skalarnego cząstki i wartości ładunku cząstki na jej prawą stronę równania {{LinkWzór|24.18}}: {{CentrujWzór|<MATH>E^'\psi=\left({{(-i\hbar \nabla-q\vec{A})^2}\over{2m_0}}+q\varphi\right)\psi\;</MATH>|24.19}} Równanie {{LinkWzór|24.19}} jest równaniem niezależnym od czasu Schrödingera {{LinkWzór|7.123|Postulat_drugi_mechaniki_kwantowej}}. Zatem udowodniliśmy, że równanie Schrödingera jest szczególnym przypadkiem równania z mechaniki kwantowej relatywistycznej Kliena-Gordona dla energii cząstki mechanicznej o wiele mniejszej od jej energii spoczynkowej, którą można obliczyć z równań z szczególnej teorii względności. == Ruch swobodny elektronu według teorii Kliena-Gordona == Mamy sobie równanie Kliena-Gordona zależne od czasu w postaci {{LinkWzór|24.8}}, a jego funkcje własne opisujących cząstkę swobodną nieoddziaływającej z żadnym polem skalarnym i wektorowym pola elektromagnetycznego zapisujemy w postaci: {{CentrujWzór|<MATH>\psi=Ae^{{{i}\over{\hbar}}\left(\vec{p}\vec{r}-Et\right)}\;</MATH>|24.20}} Widzimy, że jest to funkcja falowa związana z wektorem pędu cząstki i jej energii relatywistycznej, który jest opisana dla wszystkich punktów czasowych i położeniowych cząstki o wszystkich wektorach wodzących jaką dana cząstka może posiąść. Podstawmy rozwiązanie w postaci funkcji falowej {{LinkWzór|24.20}} do równania Kliena-Gordona zależnego od czasu {{LinkWzór|24.8}}, dostajemy wtedy równanie algebraiczne: {{CentrujWzór|<MATH>A\left(-{{\vec{p}^2}\over{\hbar^2}}+{{E^2}\over{c^2\hbar^2}}\right)e^{{{i}\over{\hbar}}\left(\vec{p}\vec{r}-Et\right)}={{m_0^2c^2}\over{\hbar^2}}Ae^{{{i}\over{\hbar}}\left(\vec{p}\vec{r}-Et\right)}\;</MATH>|24.21}} Podzielmy równość {{LinkWzór|24.21}} przez zawsze niezerową wielkość {{Formuła|<MATH>{{A}\over{\hbar^2}}e^{{{i}\over{\hbar}}\left(\vec{p}\vec{r}-Et\right)}\;</MATH>}}, bo funkcja eksponecjalna jest zawsze niezerowa przy niezerowym parametrze A, dostajemy tożsamość: {{CentrujWzór|<MATH>-\vec{p}^2+{{E^2}\over{c^2}}=m_0^2c^2\;</MATH>|24.22}} Pomnóżmy obie strony równania {{LinkWzór|24.22}} przez kwadrat prędkości światła w próżni: {{Formuła|<MATH>c^2\;</MATH>}}, i przemieszczając odpowiednie wyrazy w nim, tak by po prawej stronie był tylko kwadrat całkowitej relatywistycznej energii cząstki, wtedy mamy: {{CentrujWzór|<MATH>\vec{p}^2c^2+m_0^2c^4=E^2\;</MATH>|24.23}} W ruchu swobodnym elektronu według teorii Kleina-Gordona energia cząstki E jest powiązana z jej wartością pędu według {{LinkWzór|24.23}} i z masą spoczynkową taką samą zależnością jak w szczególnej teorii względności. == Atom wodoru według teorii Kleina-Gordona == W teorii Kleina-Gordona przy opisie atomu wodoru przyjmujemy potencjał w polu jądra atomowego wodoru, którego ładunek wynosi e, który charakteryzuje prawo Coulomba, który jest potencjałem skalarnym elektrycznym zależnych od promienia kulistego r w odległości od położenia jądra atomu, który zapisujemy w postaci: {{CentrujWzór|<MATH>\varphi={{e}\over{4\pi\epsilon_0 r}}\;</MATH>|24.24}} A ponieważ elektron "krążący" wokół jadra ma ładunek ujemny, równy ładunkowi elementarnemu ze znakiem minus, czyli:{{Formuła|<MATH>q=-e\;</MATH>}}, zatem samo równanie zależne od czasu {{LinkWzór|24.11}} przyjmuje postać przy zerowym potencjale wektorowym i potencjale skalarnym różnych od zera wyraźnie według wzoru {{LinkWzór|24.24}}: {{CentrujWzór|<MATH>\left(i\hbar{{\partial}\over{\partial t}}+{{e^2}\over{4\pi\epsilon_0 r}}\right)^2\psi\left(r,t\right)=\left(-i\hbar c\nabla\right)^2\psi\left(r,t\right)+m_0^2c^4\psi\left(r,t\right)\;</MATH>|24.25}} W pierwszym wyrazie z prawej strony wykonujemy w nim napisane potęgowanie iloczynu operatora pierwszej pochodnej względem współrzędnych przestrzennych i wartości urojonej, stąd w ostatecznych perypetiach dochodzimy: {{CentrujWzór|<MATH>\left(i\hbar{{\partial}\over{\partial t}}+{{e^2}\over{4\pi\epsilon_0 r}}\right)^2\psi\left(r,t\right)=-\hbar^2c^2\nabla^2\psi\left(r,t\right)+m_0^2c^4\psi\left(r,t\right)\;</MATH>|24.26}} Obierzmy rozwiązanie równania różniczkowego {{LinkWzór|24.26}} jako funkcję falową o amplitudzie zależnym od wektora położenia jakie ten nasz elektron może przyjmować: {{CentrujWzór|<MATH>\psi\left(r,t\right)=\varphi\left(r\theta\phi\right) e^{-{{iE}\over{\hbar}}t}\;</MATH>|24.27}} Widzimy, że te nasze rozwiązanie jest zależne od całkowitej relatywistycznej energii cząstki, którego wartość liczymy w czasie "t", po podstawieniu prawdopodobnego rozwiązania {{LinkWzór|24.27}} do równania {{LinkWzór|24.26}}, otrzymujemy równość różniczkową: {{CentrujWzór|<MATH>\left(E+{{e^2}\over{4\pi\epsilon_0 r}}\right)^2\varphi\left(r\right)e^{-{{iE}\over{\hbar}}t}=-\hbar^2c^2\nabla^2\varphi\left(r\right)e^{-{{iE}\over{\hbar}}t}+m_0^2c^4\varphi\left(r\right) e^{-{{iE}\over{\hbar}}t}\;</MATH>|24.28}} Dzieląc obie strony przez niezerową zawsze funkcję eksponencjalną, która wynika z jej własności, czyli przez {{Formuła|<MATH>e^{-{{iE}\over{\hbar}}t}\;</MATH>}} dla równania różniczkowego {{LinkWzór|24.28}}: {{CentrujWzór|<MATH>\left(E^2+{{e^4}\over{16\pi^2r^2}}+2E{{e^2}\over{4\pi\epsilon_0r}}\right)\varphi=-\hbar^2c^2\Delta\varphi+m_0^2c^4\varphi\left(r\right)\;</MATH>|24.29}} Przenosimy wszystkie wyrazy z jej prawej strony na jej lewą w równaniu {{LinkWzór|24.29}} i dzielimy obustronnie owe równanie przez stałą zależną od stałej kreślonej Plancka i prędkości światła {{Formuła|<MATH>\hbar^2c^2\;</MATH>}}, dostajemy równanie różniczkowe drugiego stopnia względem współrzędnej przestrzennej: {{CentrujWzór|<MATH>\Delta\varphi\left(r\right)+ \left\{{{E^2-m_0^2c^4}\over{\hbar^2c^2}}+{{2Ee^2}\over{\hbar^2c^2 4\pi\epsilon_0}}{{1}\over{r}}+{{e^4}\over{\hbar^2c^216\pi^2\epsilon_0^2}}{{1}\over{r^2}}\right\}\varphi=0\;</MATH>|24.30}} Napiszmy jako rozwiązanie równania {{LinkWzór|24.30}}, który posiada amplitudę rozwiązania zależnego tylko od położenia radialnego i współrzędnych przestrzennych elektronu podanej w punkcie we wzorze {{LinkWzór|24.27}}, który jest w iloczynem funkcji kulistej {{Formuła|<Math>Y\left(\theta\phi\right)\;</Math>}} przez iloraz pewnej funkcji zależnej od położenia radialnego przez to właśnie położenie radialne, innymi słowy jest to funkcja zależne od zmiennych kątowych i położenia radialnego w układzie kulistym jakie może przyjmować elektron: {{CentrujWzór|<MATH>\varphi\left(r\right)={{u_l\left(r\right)}\over{r}}Y\left(\theta\phi\right)\;</MATH>|24.31|Obramuj}} Wykorzystujemy definicję kwadratu operatora nabla {{Formuła|<MATH>\nabla^2\;</MATH>}}, czyli operatora delty {{Formuła|<math>\Delta\;</Math>}}, we współrzędnych kulistych jako funkcję położeń radialnych i kątowych w postaci {{LinkWzór|5.41|Postulat_pierwszy_mechaniki_kwantowej}}, równanie {{LinkWzór|24.30}} po podstawieniu naszego rozwiązania {{LinkWzór|24.31}}, w którym chcemy znaleźć funkcje {{Formuła|<math>u_l(r)\;</MATH>}} zależne od liczby falowej l i położenia radialnego: {{CentrujWzór|<MATH>{{1}\over{r}}{{\partial^2}\over{\partial r^2}}u_l\left(r\right)Y\left(\theta\psi\right)+{{u_l\left(r\right)}\over{r^3}}\Lambda\left(\theta\psi\right)Y\left(\theta\psi\right)+ \left\{{{E^2-m_0^2c^4}\over{\hbar^2c^2}}+{{2Ee^2}\over{\hbar^2c^2 4\pi\epsilon_0}}{{1}\over{r}}+{{e^4}\over{\hbar^2c^216\pi^2\epsilon_0^2}}{{1}\over{r^2}}\right\}\cdot\;</MATH><BR><MATH>\cdot{{u_l\left(r\right)}\over{r}}Y\left(\theta\psi\right)=0\;</MATH>|24.32}} Mnożymy obie strony strony równania różniczkowego {{LinkWzór|24.32}} przez współrzędną radialną {{Formuła|<MATH>r\;</MATH>}}, dostajemy równość: {{CentrujWzór|<MATH>{{\partial^2}\over{\partial r^2}}u_l\left(r\right)Y\left(\theta\psi\right)+{{u_l\left(r\right)}\over{r^2}}\Lambda\left(\theta\psi\right)Y\left(\theta\psi\right)+ \left\{{{E^2-m_0^2c^4}\over{\hbar^2c^2}}+{{2Ee^2}\over{\hbar^2c^2 4\pi\epsilon_0}}{{1}\over{r}}+{{e^4}\over{\hbar^2c^2 16\pi^2\epsilon_0^2}}{{1}\over{r^2}}\right\}\cdot\;\;</MATH><BR><MATH>\cdot u_l\left(r\right)Y\left(\theta\psi\right)=0\;</MATH>|24.33}} Dzielimy obie strony równania {{LinkWzór|24.33}} przez funkcję kulistą, którą jak wiemy jest zależna tylko od współrzędnych kątowych azymutalnej i zenitalnej, czyli {{Formuła|<MATH>Y\left(\theta\psi\right)\;</MATH>}}, zatem otrzymujemy wyrażenie: {{CentrujWzór|<MATH>{{\partial^2}\over{\partial r^2}}u_l\left(r\right)+{{u_l\left(r\right)}\over{r^2}}{{\Lambda\left(\theta\psi\right)Y\left(\theta\psi\right)}\over{Y\left(\theta\psi\right)}}+ \left\{{{E^2-m_0^2c^4}\over{\hbar^2c^2}}+{{2Ee^2}\over{\hbar^2c^2 4\pi\epsilon_0}}{{1}\over{r}}+{{e^4}\over{\hbar^2c^2 16\pi^2\epsilon_0^2}}{{1}\over{r^2}}\right\}u_l\left(r\right)=0\;</MATH>|24.34}} Napiszmy równość własną kwadratu momentu pędu przez jego wartości własne zależne od kwantowej liczby orbitalnej l, czyli jako równania własnego: {{Formuła|<MATH>\hat{l}^2\psi=\hbar^2 l(l+1)\psi\;</MATH>}}, i wykorzystując definicję kwadratu operatora momentu pędu w postaci {{LinkWzór|5.43|Postulat_pierwszy_mechaniki_kwantowej}} i wykorzystujemy, że funkcje własne rozważanego operatora są to funkcje kuliste {{Formuła|<MATH>Y_{lm}\;</MATH>}}, a wartości własne kwadratu operatora momentu pędu to są wartości {{LinkWzór|7.86|Postulat_drugi_mechaniki_kwantowej}}, wtedy równanie {{LinkWzór|24.34}} przechodzi w wyrażenie zależne tylko od położenia radialnego r we współrzędnych kulistych w równanie: {{CentrujWzór|<MATH>{{\partial^2u}\over{\partial r^2}}+\left\{{{E^2-m_0^2c^4}\over{\hbar^2c^2}}+ {{2Ee^2}\over{\hbar^2c^24\pi\epsilon_0}}{{1}\over{r}}-{{l\left(l+1\right)-\left({{e^2}\over{\hbar c 4\pi\epsilon_0}}\right)^2}\over{r^2}}\right\}u=0\;</MATH>|24.35}} Obierzmy jako stałe występujące w dyspucie {{LinkWzór|24.35}}, które są zależne od energii całkowiej cząstki relatywistycznej, ale nie wszystkie, są one zdefiniowane: {{ElastycznyWiersz|1={{CentrujWzór|<MATH>\gamma={{\sqrt{m_0^2c^4-E^2}}\over{\hbar c }}\;</MATH>|24.36}}|2={{CentrujWzór|<MATH>\beta={{2Ee^2}\over{\hbar^2c^24\pi\epsilon_0}}\;</MATH>|24.37}} |3={{CentrujWzór|<MATH>\alpha={{e^2}\over{\hbar c 4\pi\epsilon_0}}\;</MATH>|24.38}}}} Po dokonanych podstawieniach zdefiniowanych stałych {{LinkWzór|24.36}} (stała {{Formuła|<MATH>\gamma\;</math>}} zależna od masy spoczynkowej cząstki i jej energii relatywistycznej E), {{LinkWzór|24.37}} (stała {{Formuła|<MATH>\beta\;</Math>}} zależna tylko od energii relatywistycznej cząstki) i {{LinkWzór|24.38}} (stała {{Formuła|<math>\alpha\;</Math>}} zwana inaczej stałą struktury subtelnej), ponadto wszystkie te stałe zależą od stałych fizycznych, omawiane stałe w powyższych trzech ostanich równaniach podstawiamy do równania różniczkowego {{LinkWzór|24.35}}, mamy ostatecznie inny równoważny wzór: {{CentrujWzór|<MATH>{{d^2u}\over{dr^2}}+\left[-\gamma^2+{{\beta}\over{r}}-{{l\left(l+1\right)-\alpha^2}\over{r^2}}\right]u=0\;</MATH>|24.39}} Równaniem asyptotycznym do wyrażenia {{LinkWzór|24.39}}, które jest słuszne dla r nieskończonego, jest równaniem w postaci równania różniczkowego: {{CentrujWzór|<MATH>{{d^2u\left(r\right)}\over{dr^2}}=\gamma^2 u\left(r\right)=0\;</MATH>|24.40}} *gdzie jego rozwiązaniem jest wyrażenie funkcja eksponencjalna z argumentem iloczynu stałej {{Formuła|<math>\gamma\;</MATH>}} przez położenie radialne r i ten obiekt jest ze znakiem minus: {{CentrujWzór|<MATH>u\left(r\right)=e^{\pm\gamma r}\;</MATH>|24.41}} Wybieramy znak minus, bo w nieskończoności nasze wyrażenie znika, ze względu by funkcja {{LinkWzór|24.41}} była całkowalna z kwadratem dla całej jego zmienności względem r, bo dla rozwiązania z plusem w nieskończonościach dąży do plus nieskończoności, czyli to rozwiązanie odrzucamy i pozostaje nam rozwiązanie eksponencjalne z minusem. {{CentrujWzór|<MATH>u\left(r\right)=e^{-\gamma r}\;\;</MATH>|24.42}} Obierzmy rozwiązanie równania {{LinkWzór|24.39}} według rozwiązania asymptotycznego {{LinkWzór|24.42}} przy amplitudzie zależnym tylko od współrzędnej r: {{CentrujWzór|<MATH>u\left(r\right)=v\left(r\right)e^{-\gamma r}\;</MATH>|24.43}} I policzmy pochodne wyrażenia {{LinkWzór|24.43}}, tzn. jego pierwszą i drugą podchodną względem współrzędnej radialnej: *pierwsza pochodna {{LinkWzór|24.43}} względem współrzędnej radialnej r. {{CentrujWzór|<MATH>{{du}\over{dr}}={{dv\left(r\right)}\over{dr}}e^{-\gamma r}-v\left(r\right)\gamma e^{-\gamma r}=e^{-\gamma r}\left({{dv\left(r\right)}\over{dr}}-v\left(r\right)\gamma\right)\;</MATH>|24.44}} *druga pochodna {{LinkWzór|24.43}}, a więc jego pierwsza pochodna wyrażenia pierwszej pochodnej {{LinkWzór|24.44}} względem współrzędnej radialnej r. {{CentrujWzór|<MATH>{{d^2u}\over{dr^2}}=e^{-\gamma r}\left({{d^2v\left(r\right)}\over{dr^2}}-2{{dv\left(r\right)}\over{dr}}\gamma+\gamma^2\right)\;</MATH>|24.45}} Podstawiamy {{LinkWzór|24.44}} (pierwszą pochodną {{LinkWzór|24.23}}) i {{LinkWzór|24.45}} (druga pochodna {{LinkWzór|24.23}}) do równania różniczkowego {{LinkWzór|24.39}}, otrzymujemy równanie różniczkowe opisującą funkcję v(r) względem współrzędnej r: {{CentrujWzór|<MATH>e^{-\gamma r}\left({{d^2v\left(r\right)}\over{dr^2}}-2{{dv\left(r\right)}\over{dr}}\gamma+v\left(r\right)\gamma^2\right)+\left\{-\gamma^2+{{\beta}\over{r}}-{{l\left(l+1\right)-\alpha^2}\over{r^2}} \right\}v\left(r\right)e^{-\gamma r}=0\;</MATH>|24.46}} Równanie {{LinkWzór|24.46}} dzielimy obustronnie przez zawsze niezerową i dodatnią funkcję eksponencjalną {{Formuła|<MATH>e^{-\gamma r}\;</MATH>}} i redukujemy po pewnych wyrazach: {{CentrujWzór|<MATH>{{d^2v\left(r\right)}\over{dr^2}}-2{{dv\left(r\right)}\over{dr}}\gamma+\left\{{{\beta}\over{r}}-{{l\left(l+1\right)-\alpha^2}\over{r^2}}\right\}v\left(r\right)=0\;</MATH>|24.47}} Obierzmy szereg, który jest funkcją tylko względem współrzędnej radialnej, w której występuje nieskończenie wiele współczynników {{Formuła|<MATH>a_i\;</Math>}}, którego jest rozwiązaniem równości {{LinkWzór|24.47}} w postaci nieskończonego szeregu potęgowego: {{CentrujWzór|<MATH>v\left(r\right)=\sum^{\infty}_{i=1}a_i r^{\omega+i}\;</MATH>|24.48}} Policzmy pierwszą pochodną względem współrzędnej radialnej r szeregu potęgowego {{LinkWzór|24.48}}: {{CentrujWzór|<MATH>{{dv\left(r\right)}\over{dr}}=\sum^{\infty}_{i=1}a_i\left(\omega+i\right)r^{\omega+i-1}\;</MATH>|24.49}} Policzmy teraz drugą pochodną v(r) względem r szeregu potęgowego {{LinkWzór|24.48}}, a więc pierwszą pochodną szeregu {{LinkWzór|24.49}}, która jest jakoby piszemy ją względem r w wspomnianym szeregu: {{CentrujWzór|<MATH>{{d^2u\left(r\right)}\over{dr^2}}=\sum^{\infty}_{i=1}a_i\left(\omega+i\right)\left(\omega+i-1\right)r^{\omega+i-2}\;</MATH>|24.50}} Podstawiamy funkcję potęgową {{LinkWzór|24.48}} oraz pierwszą {{LinkWzór|24.49}} i drugą pochodną {{LinkWzór|24.50}}, zależne od r, do tożsamości różniczkowej {{LinkWzór|24.47}}: {{CentrujWzór|<MATH>\sum^{\infty}_{i=1}a_i\left(\omega+i\right)\left(\omega+i-1\right)r^{\omega+i-2}-2\gamma\sum^{\infty}_{i=1}a_i\left(\omega+i\right)r^{\omega+i-1}+ \left\{{{\beta}\over{r}}-{{l\left(l+1\right)-\alpha^2}\over{r^2}}\right\}\sum^{\infty}_{i=1}a_i r^{\omega+i}=0\;</MATH>|24.51}} Po lewej stronie równości {{LinkWzór|24.51}} a właściwie jego ostatni wyraz, a w nim dokonajmy tam odpowiednich wymnożeń, dostajemy: {{CentrujWzór|<MATH>\sum^{\infty}_{i=1}a_i\left(\omega+i\right)\left(\omega+i-1\right)r^{\omega+i-2}-2\gamma\sum^{\infty}_{i=1}a_i\left(\omega+i\right)r^{\omega+i-1}+\beta\sum^{\infty}_{i=1}a_ir^{\omega+i-1}-\left(l\left(l+1\right)-\alpha^2\right)\sum^{\infty}_{i=1}a_ir^{\omega+i-2}=0\;</MATH>|24.52}} Dla drugiego i trzeciego wyrazu równania {{LinkWzór|24.52}} podstawmy tam wedle schematu {{Formuła|<MATH>i\rightarrow i-1\;\;</MATH>}}, w taki sposób, by otrzymać w tychże wspomnianych wyrazach potęgi położenia radialnego r o wykładnikach {{Formuła|<Math>\omega+i-2\;</MATH>}}, zatem: {{CentrujWzór|<MATH>\sum^{\infty}_{i=1}a_i\left(\omega+i\right)\left(\omega+i-1\right)r^{\omega+i-2}-2\gamma\sum^{\infty}_{i=2}a_{i-1}\left(\omega+i-1\right)r^{\omega+i-2}+\beta\sum^{\infty}_{i=2}a_{i-1}r^{\omega+i-2}-\left(l\left(l+1\right)-\alpha^2\right)\sum^{\infty}_{i=1}a_ir^{\omega+i-2}=0\;</MATH>|24.53}} W {{LinkWzór|24.53}} dokonajmy tam odpowiednich grupowań wyrazów względem tych samych współczynników o tych samych indeksach dla tych samych potęg przy r-ach: {{CentrujWzór|<MATH>-\sum^{\infty}_{i=2}a_{i-1}\left[2\gamma\left(\omega+i-1\right)-\beta \right] r^{\omega+i-2}+\sum_{i=2}^{\infty}a_ir^{\omega+i-2}\left[\left(\omega+i\right)\left(\omega+i-1\right)-\left(l\left(l+1\right)-\alpha^2\right)\right]+\;</MATH><br> <MATH>+a_1\left[\left(\omega+1\right)\left(\omega\right)-\left(l\left(l+1\right)-\alpha^2\right)\right]r^{\omega+i-2}=0\;</MATH>|24.54}} Ponieważ {{Formuła|<MATH>a_1\;</MATH>}} w {{LinkWzór|24.54}} powinno być dowolne, zatem współczynnik stojący przy tym współczynniku powinien być równy zero, a więc: {{CentrujWzór|<MATH>\left(\omega+1\right)\left(\omega\right)-\left(l\left(l+1\right)-\alpha^2\right)=0\Rightarrow\omega^2+\omega-l\left(l+1\right)+\alpha^2=0\;</MATH>|24.55}} Z którego wyróżnik trójmianu równania kwadratowego ostatniego wynikowego {{LinkWzór|24.55}} jest równy: {{CentrujWzór|<MATH>\Delta=1^2+4\left(l\left(l+1\right)-\alpha^2\right)=1+4l^2+4l-4\alpha^2=(1+2l)^2-4\alpha^2\;</MATH>|24.56}} Widzimy, że jest ona zależna od kwadratu stałej struktury subtelnej {{Formuła|<MATH>\alpha\;</MATH>}} ({{LinkWzór|24.38}}) i od orbitalnej liczby kwantowej l, która jest częścią wartości własnej operatora kwadratu momentu pędu. Stąd stała {{Formuła|<MATH>\omega\;</Math>}} jest rozwiązaniem {{LinkWzór|24.55}}: {{CentrujWzór|<MATH>\omega={{-1\pm\sqrt{\left(1+2l\right)^2-4\alpha^2}}\over{2}}\;</MATH>|24.57}} wybieramy wyrażenie {{Formuła|<MATH>\omega\;</MATH>}} ze znakiem plus a nie z minusem, ponieważ by szereg {{LinkWzór|24.54}} nie miał minusowych potęg, bo gdy by miał, to osobliwość występowała by dla r=0, czyli musi zachodzić {{Formuła|<MATH>\omega\geq -1\;</MATH>}}. Zatem sprawdźmy nasze przypuszczenia: {{CentrujWzór|<MATH>{{-1\pm\sqrt{\left(1+2l\right)^2-4\alpha^2}}\over{2}}\geq-1\Rightarrow \pm\sqrt{\left(1+2l\right)^2-4\alpha^2}\geq -1\Rightarrow \mp \sqrt{\left(1+2l\right)^2-4\alpha^2}\leq 1\;</MATH>}} Widzimy, że wyrażenie w {{LinkWzór|24.57}} wyrażenie z plusem spełnia nasz warunek dla dowolnych l, a z minusem: {{CentrujWzór|<MATH>\left(1+2l\right)^2-4\alpha^2\leq 1\Rightarrow 1+2l\leq \sqrt{1+4\alpha^2}\;</MATH>}} tylko dla l=0, zatem nasz wybór stał się trafny. Zatem wybieramy w {{LinkWzór|24.57}} rozwiązanie równania kwadratowego {{LinkWzór|24.55}} z plusem, czyli rozwiązanie w postaci: {{CentrujWzór|<MATH>\omega={{-1+\sqrt{\left(1+2l\right)^2-4\alpha^2}}\over{2}}\;</MATH>|24.58}} Podobnie jak mamy w mechanice nierelatywistycznej kwantowej przy opisie atomu wodoru, trzeba urwać tutaj na pewnym wyrazie, ponieważ rozwiązanie bez urwania dąży asyptotycznie do nieskończoności, a bez urwaniu dla dużych równanie {{LinkWzór|24.54}} ma się jako: {{CentrujWzór|<MATH>a_{i}=a_{i-1}{{2\gamma\left(\omega+i-1\right)-\beta}\over{\left(\omega+i\right)\left(\omega+i-1\right)-\left(l\left(l+1\right)-\alpha^2\right)}}\rightarrow a_i=a_{i-1}{{2\gamma}\over{i}}\Rightarrow a_n\sim {{\left(2\gamma\right)^n}\over{n!}}\;</MATH>|24.59}} Zatem współczynniki {{Formuła|<MATH>a_n\;</MATH>}} są to współczynniki rozwinięcia funkcji {{Formuła|<MATH>e^{2\gamma r}\;</MATH>}} co jest oczywiste, że dla r nieskończonych, ta funkcja dąży do nieskończoności, zatem należy urwać na pewnym {{Formuła|<MATH>i=\sigma+1\;</MaTh>}}, by nie było nieskończonych funkcji własnych czyli niecałkowalnych z kwadratem, zatem na podstawie {{LinkWzór|24.59}}, jeśli {{Formuła|<MATH>a_{\sigma}\neq 0\;</MATH>}} i {{Formuła|<MATH>a_{\sigma+1}=0\;</MATH>}} oraz następne współczynniki by były równe zero, licznik czynnika stojącego przy {{Formuła|<MATH>a_{\sigma}\;</MATH>}} musi być równy zero, to na podstawie tego zachodzi: {{CentrujWzór|<MATH>\beta-2\gamma\left(\omega+i-1\right)=0\Rightarrow\beta=2\gamma\left(\omega+i-1\right)\;</MATH>|24.60}} Teraz podstawiamy, za {{Formuła|<MATH>\omega\;</MATH>}} obliczonego wedle wzoru {{LinkWzór|24.58}} do tożsamości przedstawionej w {{LinkWzór|24.60}}: {{CentrujWzór|<MATH>\beta=2\gamma\left(-{{1}\over{2}}+\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}+i-1\right)\;</MATH>|24.61}} Ponieważ przyjeliśmy, że szereg {{LinkWzór|24.48}} urywa się na wyrazie {{Formuła|<MATH>\sigma>0\;</MATH>}}, bo jest spełniony warunek {{LinkWzór|24.60}}, czyli powinno zachodzić: {{CentrujWzór|<MATH>v\left(r\right)=\sum^{\sigma}_{i=1}a_i e^{\omega+i}\;</MATH>|24.62}} Zatem szereg się zeruje dla nie mniejszych niż {{Formuła|<MATH>i=\sigma+1\;</MATH>}}, dla którego wyrazy szeregu potegowego {{LinkWzór|24.48}} i na tej podstawie spełniony jest wzór {{LinkWzór|24.62}}, wedle tych dysput dostajemy wzór {{LinkWzór|24.61}} w bardziej zwartej postaci zapisanej wedle: {{CentrujWzór|<MATH>\beta=2\gamma\left(\sigma-{{1}\over{2}}+\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\right)\;</MATH>|24.63}} Wzory opisujące pewne stałe, czyli:{{LinkWzór|24.36}} (stała {{Formuła|<MAth>\gamma\;</MATH>}}), {{LinkWzór|24.37}} (stała {{Formuła|<mATH>\beta\;</MATH>}}) i {{LinkWzór|24.38}} (stała {{Formuła|<MAtH>\alpha\;</MATH>}}) podstawiamy do wyrażenia {{LinkWzór|24.63}} pod te omawiane stałe, wtedy dostajemy równoważne do poprzedniewgo równanie: {{CentrujWzór|<MATH>{{2Ee^2}\over{\hbar^2c^24\pi\epsilon_0}}=2{{\sqrt{m_0^2c^4-E^2}}\over{\hbar c }}\left(\sigma-{{1}\over{2}}+\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\right)\;</MATH>|24.64}} Podnieśmy obie strony tożsamości {{LinkWzór|24.64}} do kwadratu, by w nim zlikwidować wszystkie występujące pierwiastki i dlatego dokonujemy tejże operacji: {{CentrujWzór|<math>{{E^2e^4}\over{\hbar^4c^4\pi^2\epsilon_0^2}}= \left[{\left(m_0^2c^4-E^2\right)\over{h^2c^2}}\right] \left({\sigma-{{1}\over{2}}+\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}}\right)^2\;</MATH>|24.65}} Pomnóżmy obustronnie wyrażenie {{LinkWzór|24.65}} przez pewną stałą zależną od stałej kreślonej Plancka i prędkości światła {{Formuła|<MATH>\hbar^2 c^2\;</MATH>}}, ono przyjmuje kształt: {{CentrujWzór|<math>{{E^2e^4}\over{\hbar^2c^216\pi^2\epsilon_0^2}}=\left[{\left(m_0^2c^4-E^2\right)}\right]\left(\sigma-{{1}\over{2}}+\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\right)^2\;</MATH>|24.66}} Korzystajmy teraz z definicji {{Formuła|<MATH>\alpha\;</MATH>}} {{LinkWzór|24.38}} dla wyrażenia {{LinkWzór|24.66}}, owe równanie da się przedstawić wedle uproszczonego sposobu: {{CentrujWzór|<MATH>E^2\alpha^2=\left[m_0^2c^4-E^2\right]\left(\sigma-{{1}\over{2}}+ \sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\right)^2\;</MATH>|24.67}} Idąc dalej, obierzmy parametr {{Formuła|<maTH>\zeta\;</MATH>}}, który podstawimy do wzoru {{LinkWzór|24.67}} ułatwiający nam pewne określone późniejsze przekształcenia, który ten parametr jest zdefiniowany: {{CentrujWzór|<MATH>\zeta=\left(\sigma-{{1}\over{2}}+ \sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\right)^2\;</MATH>|24.68}} A zatem z {{LinkWzór|24.67}} według parametru zdefiniowanego w {{LinkWzór|24.68}}, otrzymujemy pewne wyrażenie z którego będziemy wyznaczać energię cząstki (elektronu): {{CentrujWzór|<MATH>E^2\alpha^2=\left(m_0^2c^4-E^2\right)\zeta\Rightarrow E^2\left(\alpha^2+\zeta\right)=m_0^2c^4\zeta\;</MATH>|24.69}} W ostatnim wynikowym równaniu {{LinkWzór|24.69}} wyznaczamy czemu jest równa energia cząstki relatywistycznej w zależności od masy spoczynkowej elektronu, kwadratu struktury subtelnej i parametru {{Formuła|<math>\zeta\;</Math>}} {{CentrujWzór|<MATH>E={{m_0c^2\sqrt{\zeta}}\over{\sqrt{\alpha^2+\zeta}}}\Rightarrow E={{m_0c^2}\over{{\sqrt{{{\alpha^2}\over{\zeta}}+1}}}}\;</MATH>|24.70}} Następnie wykorzystując definicję {{Formuła|<MATH>\zeta\;</MATH>}} napisaną wedle wzoru {{LinkWzór|24.68}} jako funkcję orbitalnej liczby kwantowej i parametru {{Formuła|<MATH>\sigma\;</MaTH>}}, biorąc to wszystko do równania {{LinkWzór|24.70}}, mamy: {{CentrujWzór|<MATH>E={{m_0c^2}\over{\sqrt{1+{{\alpha^2}\over{\left(\sigma-{{1}\over{2}}+ \sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\right)^2}}}}}\;</MATH>|24.71|Obramuj}} Dokonajmy przybliżeń w tym celu obierzmy stałą {{Formuła|<math>n^'\;</Math>}}, która jest zależna od kwantowej liczby orbitalnej, stałej struktury subtelnej i elementu {{Formuła|<MaTh>\sigma\;</Math>}}, który piszemy: {{CentrujWzór|<MATH>n'=\sigma-{{1}\over 2}+\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\;</MATH>|24.72}} Wzór {{LinkWzór|24.71}} po podstawieniu do niego wyrażenia na zmienną {{Formuła|<math>n^'\;</MATH>}} napisaną wedle wzoru {{LinkWzór|24.72}} ma się: {{CentrujWzór|<MATH>E={{m_0c^2}\over{\sqrt{1+{{\alpha^2}\over{n'^2}}}}}\;</MATH>|24.73}} Rozłóżmy wyrażenie {{LinkWzór|24.73}} w szereg Taylora względem parametru {{Formuła|<MatH>\alpha^2\;</MATH>}}, czyli kwadratu stałej strukury subtelnej. Wyrażenie {{LinkWzór|24.73}} przyjmuje wartość dla {{Formuła|<MATH>\alpha=0\;</MATH>}}: {{CentrujWzór|<MATH>E\left(\alpha=0\right)=m_0c^2\;</MATH>|24.74}} Pierwsza pochodna wyrażenie {{LinkWzór|24.73}} zapisujemy wedle sposobu licząc ją względem kwadratu struktury subtelnej: {{CentrujWzór|<MATH>{{dE}\over{d\alpha}}=-{{1}\over{2}}{{m_0c^2}\over{\left(1+{{\alpha^2}\over{n'^2}}\right)^{{3}\over{2}}}}{{\alpha^2}\over{n'^2}}=-{{1}\over{2}}m_0c^2\left(1+{{\alpha^2}\over{n'^2}}\right)^{-{{3}\over{2}}}{{1}\over{n'^2}}\;</MATH>|24.75}} Wartość pierwszej pochodnej {{LinkWzór|24.75}} wyrażenia {{LinkWzór|24.73}}, względem kwadratu struktury subtelnej dla parametru &alpha; równej zero, piszemy: {{CentrujWzór|<MATH>{{dE}\over{d \alpha}}\left(\alpha=0\right)=-{{1}\over{2}}m_0c^2{{1}\over{n'^2}}\;</MATH>|24.76}} Druga pochodna wyrażenia {{LinkWzór|24.73}} względem kwadratu struktury subtelnej, a więc pierwsza pochodna {{LinkWzór|24.75}} ma kształt: {{CentrujWzór|<MATH>{{d^2E}\over{d\alpha^2}}=\left(-{{1}\over{2}}\right)\left(-{{3}\over{2}}\right)m_0c^2{\left(1+{{\alpha^2}\over{n'^2}}\right)}^{-{5\over 2}}{{1}\over{n'^4}}\;</MATH>|24.77}} Wyrażenie {{LinkWzór|24.77}} jako druga pochodna względem wspomnianego parametru dla {{Formuła|<MATH>\alpha=0\;</MATH>}} przyjmuje postać: {{CentrujWzór|<MATH>{{d^2E}\over{d\left(\alpha^2\right)^2}}\left(\alpha=0\right)={{1 3}\over{2 2}}m_0c^2{{1}\over{n'^4}}\;</MATH>|24.78}} A zatem rozwinięcie {{LinkWzór|24.73}}, według {{LinkWzór|24.74}} (wartość funkcji dla stałej struktury subtelnej równej zero), {{LinkWzór|24.76}} (pierwsza pochodna względem kwadratu struktury subtelnej dla niej równej zero), {{LinkWzór|24.78}} (druga pochodna względem kwadratu struktury subtelnej dla niej równej zero), te nasze rozwinięcie z dokładnością do wyrazów drugiego rzędu: {{CentrujWzór|<MATH>E={m_0c^2}\left(1-{{1}\over{2}}{{\alpha^2}\over{n'^2}}+{{3}\over{8}}{{\alpha^4}\over{n'^4}}+...\right)\;</MATH>|24.79}} Wiemy, jednak że na podstawie definicji zmiennej {{Formuła|<MATH>n^'\;</MaTH>}} zdefiniowanej wedle równości {{LinkWzór|24.72}} i przybliżając ją względem małego parametru kwadratu struktury subtelnej, wtedy ten parametr piszemy: {{CentrujWzór|<MATH>n'=\sigma-{{1}\over{2}}+\left(l+{{1}\over{2}}\right) \sqrt{1-{{\alpha^2}\over{{\left(l+{{1}\over{2}}\right)^2}}}}\sigma-{{1}\over{2}}+\left(l+{{1}\over{2}}\right)\left\{ 1-{{1}\over{2}}{{\alpha^2}\over{\left(l+{{1}\over{2}}\right)^2}}-{{\alpha^4}\over{2\cdot4}}{{1}\over{\left(l+{{1}\over{2}}\right)^4}}+...\right\}\simeq\;</MATH><BR><MATH>\simeq\sigma-{{1}\over{2}}+l+{{1}\over{2}}-{{1}\over{2}}{{\alpha^2}\over{l+{{1}\over{2}}}}+ {{\alpha^4}\over{2\cdot4\left(l+{{1}\over{2}}\right)}}=\sigma+l-{{1}\over{2}}{{\alpha^2}\over{l+{{1}\over{2}}}}- {{\alpha^4}\over{8\left(l+{{1}\over{2}}\right)^3}}\;</MATH>|24.80}} Określmy {{Formuła|<MATH>n=\sigma+l\;</MATH>}}, zatem z definicji {{Formuła|<MATH>\sigma\;</MATH>}}, która jest większa niż jeden, zatem orbitalna liczba kwantowa przyjmuje takowe wartości skwantowane: {{CentrujWzór|<MATH>l=0,1,2,...,n-1\;</MATH>|24.81}} Ostatecznie wzór na zmienną {{Formuła|<MATH>n^'\;</math>}} napisany w sposób przybliżony względem małego parametru kwadratu struktury subtelnej, dla którego ta nasza zmienna jest zdefiniowana wedle wzoru {{LinkWzór|24.80}}, jest napisana: {{CentrujWzór|<MATH>n'\simeq n\left(1-{{1}\over{2}}{{\alpha^2}\over{n\left(l+{{1}\over{2}}\right)}}- {{\alpha^4}\over{8n\left(l+{{1}\over{2}}\right)^3}}\right)\;</MATH>|24.82}} Określmy odwrotność parametru {{Formuła|<Math>n^'\;</Math>}} napisaną w sposób przybliżony {{LinkWzór|24.82}}, dokonując dalszych przybliżeń dla małości wyrazów występujących w nawiasie wspomnianego wyrażenia występująca po jedynce: {{CentrujWzór|<MATH>{{1}\over{n'}}\simeq {{1}\over{n}}{{1}\over{1-{{\alpha^2}\over{2n\left(l+{{1}\over{2}}\right)}}- {{\alpha^4}\over{8n\left(l+{{1}\over{2}}\right)^3}}}}\simeq{{1}\over{n}}\left[1+{{\alpha^2}\over{2n\left(l+{{1}\over{2}}\right)}}\right]=\;</MATH>|24.83}} Dalej kwadrat odwrotności zmiennej {{Formuła|<math>n^'\;</Math>}} wyrażenia {{LinkWzór|24.82}}, pisać go z dokładnością do wyrazów kwadratowych wielkości &alpha;, bo w {{LinkWzór|24.79}} w drugim wyrazie w nawiasie występuje kwadrat tej wspomnianej wielkości: {{CentrujWzór|<MATH>{{1}\over{n'^2}}\simeq {{1}\over{n^2}}\left(1+{{1}\over{2}}{{\alpha^2}\over{\left(l+{{1}\over{2}}\right)}}\right)^2\simeq{{1}\over{n^2}}\left(1+{{\alpha^2}\over{l+{{1}\over{2}}}}\right)\;</MATH>|24.84}} Podstawiamy wzór {{LinkWzór|24.84}} (kwadrat odwrotności zmiennej {{Formuła|<math>n^'\;</MATH>}}) do {{LinkWzór|24.79}} będących rozwinięciem w szereg Taylora względem omawianego tam parametru do drugiego wyrazu w nawiasie, dostajemy: {{CentrujWzór|<MATH>E\simeq{m_0c^2}\left(1-{{\alpha^2}\over{2n^2}}\left(1+{{\alpha^2}\over{n\left(l+{{1}\over{2}}\right)}}\right)+{{3}\over{8}}{{\alpha^2}\over{n^4}}\right)={m_0c^2}\left[1-{{\alpha^2}\over{2n^2}}-{{\alpha^4}\over{2n^3\left(l+{{1}\over{2}}\right)}}+{{3}\over{8}}{{\alpha^4}\over{n^4}}\right]=\;</MATH><BR><MATH>=m_0c^2\left[1-{{\alpha^2}\over{2n^2}}-{{\alpha^4}\over{2n^3}}\left({{{1}\over{l+{{1}\over{2}}}}}-{{3}\over{4n}}\right)\right]\;</MATH>|24.85}} Wyrażenie na całkowitą energię elektronu w polu jadra atomowego wodoru, uwzględniając efekty relatywistyczne jest równy energii spoczynkowej elektronu, energii obliczonej wedle mechaniki kwantowej nierelatywistycznej i z poprawką zależną od orbitalnej liczby kwantowej, ale głównej w trzecim jego składniku, jest ona również zależna od czynnika struktury subtelnej {{Formuła|<MATH>\alpha\;</math>}}, która jest względnie mała i dlatego w teorii nierelatywistycznej ten trzeci składnik jest często pomijany, zatem ta nasza energia elektronu w polu jądra atomowego atomu wodoru jest równa: {{CentrujWzór|<MATH>E=m_0c^2+E_0+E_0{{\alpha^2}\over{n}}\left({{1}\over{l+{{1}\over{2}}}}-{{3}\over{4n}}\right)\;</MATH>|24.86|Obramuj}} *gdzie energia {{Formuła|<Math>E_0\;</Math>}}, którą jak udowodnimy jest energią obliczoną z nierelatywistycznej teorii kwantowej: {{CentrujWzór|<MATH>E_0=-m_0c^2{{\alpha^2}\over{2n^2}}=-m_0c^2{{e^4}\over{\hbar^2 c^2 16\pi^2\epsilon_0^2}}{{1}\over{2n^2}}=-{{m_0c^2 e^4}\over{\hbar^2c^2 32\pi^2\epsilon_0^2}}=-{{m_0e^4}\over{8h^2\epsilon_0 n^2}}\;</MATH>|24.87}} Policzmy skrajną różnicę poziomów dla ściśle określonego n między orbitalną liczbą kwantową l=0, a l=n-1, bo ta liczba przyjmuje wartości skwantowane wedle {{LinkWzór|24.81}}: {{CentrujWzór|<MATH>E_n\left(l=n-1\right)-E_n\left(l=0\right)=E_0{{\alpha^2}\over{n}}\left({{1}\over{n-{{1}\over{2}}}}- {{1}\over{{{1}\over{2}}}}\right)=E_0{{\alpha^2}\over{n\left(2n-1\right)}}\left(2-2\left(2n-1\right)\right)=E_0\alpha^2{{-4n+4}\over{n\left(2n-1\right)}}\simeq-2E_0{{\alpha^2}\over{n}}\;</MATH>|24.88}} Jak widać rozszczepienie jest rzędu {{Formuła|<MATH>10^{-4}\;</MATH>}}, jednak rozszczepienie przewidywane przez teorię Kleina-Gordona jest dwukrotnie większe niż uzyskano doświadczalnie. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> tp10tz2vf8xkqchhr55rsrzu07a8ohe Elektrodynamika klasyczna/Zasada wariacyjna w elektromagnetyzmie 0 18750 548289 470187 2026-07-25T13:00:22Z Persino 2851 548289 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> Będziemy tutaj wyprowadzać zasady elektromagnetyzmu z zasad wariacyjnych, na podstawie tego, aby funkcjonał S przyjmował wartość najmniejszą. == Zasada wariacyjna a równania tensorowe elektromagnetyzmu z definicją czteroprądu == Gęstość Lagrangianu w elektromagnetyzmie definiujemy przy pomocy tensora pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} i przy pomocy definicji czteroprądu objętościowego napisanej wedle schematu {{LinkWzór|26.5|Elektrodynamika_relatywistyczna}}. Zatem napiszmy dla obu sygntur tensora Minkowskiego szczególnej teorii względności (znak u góry sygnatura dodatnia, u dołu ujemna): {{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\;</MAth>|27.1}} Całką działania nazywamy wyrażenie zdefiniowane na podstawie definicji gęstości lagrangianu {{LinkWzór|27.1}} w postaci: {{CentrujWzór|<math>S=\int d^4x\mathfrak{L}=\int d^4x\left[-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\right]\;</MATH>|27.2}} Wariacji całki działania {{LinkWzór|27.2}} zakładamy, że ona jest równa zero, wtedy na podstawie tego powinniliśmy otrzymać tensorowe równanie Maxwella {{LinkWzór|26.12|Elektrodynamika_relatywistyczna}}, zatem sprawdźmy, czy o nam wyjdzie. {{CentrujWzór| <math>\delta S=\delta\int d^4x\left[-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\right]= \int d^4 x\left[-{{1}\over{4\mu_0}}F^{\mu\nu}\delta F_{\mu\nu}-{{1}\over{4\mu_0}}F_{\mu\nu}\delta F^{\mu\nu}\mp J^{\mu}\delta A_{\mu}\right]\;</MATH>|27.3}} W wariację funkcjonału S {{LinkWzór|27.2}}, czyli &delta;S {{LinkWzór|27.3}}, liczymy względem gęstości objętościowej czteroprądu {{LinkWzór|26.5|Elektrodynamika_relatywistyczna}} (J{{Sup|&mu;}}), czeropotencjału i tensora pola elektromagnetycznego. Idąc dalej wykorzystajmy wzór na tensor pola elektromagnetycznego wyznaczony w zależności od czteropotencjału, czyli wzoru {{LinkWzór|26.34|Elektrodynamika_relatywistyczna}}. {{CentrujWzór|<MATH>\delta S= \int d^4x\left[-{{1}\over{2\mu_0}}F_{\mu\nu}\delta F^{\mu\nu}\mp J^{\mu}\delta A_{\mu}\right]= \int d^4x\left[-{{1}\over{2\mu_0}}F_{\mu\nu}\left[\partial^{\nu}\left(\delta A^{\mu}\right)-\partial^{\mu}\left(\delta A^{\nu}\right)\right]\mp J^{\mu}\delta A_{\mu}\right]\;</MAth>|27.4}} W obliczeniach {{LinkWzór|27.4}} wykorzystujemy rozdzielność mnożenia względem dodawania, wiedząc że tensor pola elektromagnetycznego F{{Sup|&mu;&nu;}} {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} jest tensorem antysymetrycznym, tzn. przy zamianie wskaźników miejscami w tym wspomnianym tensorze przed tym tensorem pojawia się znak minus, czyli F{{Sup|&mu;&nu;}}=-F{{Sup|&nu;&mu;}}. {{CentrujWzór|<MAth>\delta S= \int d^4x\left[-{{1}\over{2\mu_0}}\left[F_{\mu\nu}\partial^{\nu}\left(\delta A^{\mu}\right)-F_{\mu\nu}\partial ^{\mu}\left(\delta A^{\nu}\right)\right]\mp J^{\mu}\delta A_{\mu}\right]=\int d^4x\left[-{{1}\over{\mu_0}}F_{\mu\nu}\partial^{\nu}\left(\delta A^{\mu}\right)\mp J^{\mu}\delta A_{\mu}\right]\;</MATh>|27.5}} Następnym krokiem jest wykorzystanie definicji pochodnej iloczynu dwóch funkcji do pierwszego wyrazu w obliczeniach {{LinkWzór|27.5}}, zatem w takim przypadku dostajemy równość: {{CentrujWzór|<MATH>\delta S= \int d^4x\left[-{{1}\over{\mu_0}}\partial ^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)+{{1}\over{\mu_0}}\partial^{\nu}F_{\mu\nu} \delta A^{\mu}\mp J^{\mu}\delta A_{\mu}\right]\;</Math>|27.6}} Dalszym krokiem jest rozdzielenie w wariacji {{LinkWzór|27.6}} na dwie osobne całki z twierdzenia na całkę sumy dwóch wyrażeń podcałkowych jako sumę całek, w których występują te wyrażenia podcałkowe, wtedy mamy wniosek: {{CentrujWzór|<MATh>\delta S= -{{1}\over{\mu_0}}\int d^4x\partial^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)+\int d^4x\left({{1}\over{\mu_0}}\partial_{\nu}F^{\mu\nu}\delta A_{\mu}\mp J^{\mu}\delta A_{\mu}\right)\;</MatH>|27.7}} Pierwsza całka w obliczeniach {{LinkWzór|27.7}} jest zawsze równa zero, ponieważ można go rozpisać względem całkowania po zmiennej x{{Sup|&mu;}}, i zakładamy, że wariancja czteropotencjału na końcach x{{Sup|&mu;}}{{Sub|2}} i x{{Sup|&mu;}}{{Sub|1}} jest równa zero, co możemy powiedzieć, że: {{CentrujWzór|<math>\int d^{4}x\partial^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)=\int dx^3F_{\mu\nu}\delta A^{\mu}\bigg|^{x^{\nu}_2}_{x^{\nu}_1}=0\;</Math>|27.8}} Jeśli wykorzystamy nasz warunek {{LinkWzór|27.8}} do wariacji &delta;S {{LinkWzór|27.7}}, zatem to samo wyrażenie możemy przepisać po wyzerowaniu się według przeprowadzonego naszego dowodu powyżej, zatem tą naszą wspomnianą tożsamość piszemy w postaci: {{CentrujWzór|<Math>\delta S=\int d^4x\left({{1}\over{\mu_0}}\partial _{\nu}F^{\mu\nu}\mp J^{\mu}\right)\delta A_{\mu}\;</MATH>|27.9}} Aby wariancja funkcjonału {{LinkWzór|27.9}} była równa zero dla dowolnej wariacji wielkości czteropotencjału A{{Sub|&mu;}}, to wyrażenie podcałkowe w ostatnim wniosku powinno być równa zero, zatem na tej podstawie powinna zachodzić tożsamość: {{CentrujWzór|<MATH>{{1}\over{\mu_0}}\partial _{\nu}F^{\mu\nu}\mp J^{\mu}=0\Rightarrow \partial _{\nu}F^{\mu\nu}=\pm\mu_0J^{\mu}\Rightarrow {F^{\mu\nu}}_{,\nu}=\pm \mu_0J^{\mu}\;</MATH>|27.10}} Widzimy, że równanie {{LinkWzór|27.10}} jest równoważne z równaniem {{LinkWzór|26.12|Elektrodynamika_relatywistyczna}}, zatem gęstość lagrangianu {{LinkWzór|27.1}} jest poprawnym Lagrangianem, czyli wzór {{LinkWzór|27.10}} jest poprawnym wzorem tensorowym z definicją tensora pola elektromagnetycznego napisanego wzorem {{LinkWzór|26.34|Elektrodynamika relatywistyczna}}. == Lagrangian relatywistyczny pola elektromagnetostatycznego == Lagrangian w elektrodynamice relatywistycznej definiujemy przy pomocy potencjału skalarnego &phi; i wektorowego {{Formuła|<Math>\vec{A}\;</MATH>}} przy prędkości cząstki równym {{Formuła|<MATH>\vec{v}\;</mAth>}} przy rozpatrywanej cząstce o ładunku o wartości q, przedstawiamy według: {{CentrujWzór|<MATH>L=-m_0c^2\sqrt{1-{{v^2}\over{c^2}}}-q\varphi+q\vec{v}\vec{A}\;</MATH>|27.11}} Pęd uogólniony w elektrodynamice jest napisany jako pochodna cząstkowa Lagrangianu {{LinkWzór|27.11}} względem wektora prędkości, mamy: {{CentrujWzór|<maTH>\vec{p}={{\partial L}\over{\partial\vec{v}}}={{m_0\vec{v}}\over{\sqrt{1-{{v^2}\over{c^2}}}}}+q\vec{A}=m\vec{v}+q\vec{A}\;</MATH>|27.12}} Pęd uogólniony w polu elektromagnetycznym jest równy sumie pędu klasycznego znanej ze szczególnej teorii względności i iloczynowi ładunku cząstki i potencjału wektorowego tego pola. Zatem dochodzimy do wniosku, że ten pęd to nie jest zwykły iloczyn masy relatywistycznej i prędkości cząstki, zachodzi tak tylko w polu bez potencjału wektorowego. Równanie wariacyjne Eulera-Lagrange'a dla lagrangianu {{LinkWzór|27.11}} jest dokładnie takie same w {{LinkWzór|5.12|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}. W tym wzorze w pierwszym wyrazie pod pochodną zupełną względem czasu występuje pęd uogólniony cząstki {{LinkWzór|27.12}}. Zatem rozważając prawie tak samo jak w tym rozdziale, w którym znajduje się ostatnio wspomniany wzór, wtedy dochodzimy do wzoru na równanie ruchu cząstki punktowej {{LinkWzór|5.21|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, tylko po lewej stronie wzoru występuje nie siła klasyczna Newtona według drugiej zasady dynamiki Newtona, tylko siła relatywistyczna Einsteina. Co kończy dowód, że z zasady najmniejszego działania przy definicji Lagragianu {{LinkWzór|27.11}} wynika dobrze nam znane równanie ruchu. == Lagrangian relatywistyczny cząstki, w przybliżeniu małych prędkości, dla pola elektromagnetostatycznego == Lagrangian relatywistyczny cząstki punktowej o ładunku q {{LinkWzór|27.11}} dla prędkości o wiele mniejszej od prędkości światła, czyli wtedy zachodzi {{Formuła|<MATH>{{v}\over{c}}<<1\;</MATH>}}, wtedy na podstawie tego pierwiastek w nim występujący można rozwinąć w szereg Taylora, wtedy dla tego przybliżenia dostajemy: {{CentrujWzór|<math>L=-m_0c^2\left(1-{{v^2}\over{2c^2}}+...\right)-q\varphi+q\vec{v}\vec{A}\simeq-m_0c^2+{{1}\over{2}}m_0\vec{v}\vec{v}-q\varphi+q\vec{v}\vec{A}\;</MATH>|27.13}} W wyrażeniu przybliżonym {{LinkWzór|27.13}} w stosunku do jej odpowiednika klasycznego {{LinkWzór|1.122b|Teoria funkcji lagrangianu|Szczególna teoria względności|STW}} różni się o stałą -m{{Sub|0}}c{{Sup|2}}, która w tym przypadku nie odgrywa żadnej roli, ponieważ w równaniu Eulera-Lagrange'a {{LinkWzór|5.12|Teoria funkcji lagrangianu|Szczególna teoria względności|STW}} występują pochodne cząstkowe i ta stała według twierdzenia o pochodnej sumy nic nie wnosi we końcowym wniosku. == Relatywistyczny hamiltonian dla pola elektromagnetostatycznego == Wyznaczmy relatywistyczny hamiltoniam dla cząstki w polu elektromagnetostatycznym, korzystając z definicji hamiltonianu dla cząstki relatywistycznej i Lagrangianu relatywistycznego {{LinkWzór|27.11}}, a także z definicji pędu uogólnionego {{LinkWzór|27.12}} dla pola elektromagnetostatycznego: {{CentrujWzór|<MATH>H=\vec{p}\vec{v}-L=(m\vec{v}+q\vec{A})\vec{v}+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi-q\vec{v}\vec{A}=m\vec{v}\vec{v}+q\vec{A}\vec{v}+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}v^2+\;</MATH>{{Br}}<MATH>+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\left(v^2+c^2\left(1-{{v^2}\over{c^2}}\right)\right)+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\left(v^2+c^2-v^2\right)+q\varphi={{m_0c^2}\over{\sqrt{1-{{v^2}\over{c^2}}}}}+q\varphi=\;</MATH>{{Br}}<MATH>=mc^2+q\varphi\Rightarrow H=mc^2+q\varphi</MAth>|27.14}} Widzimy, że wedle końcowych obliczeń przeprowadzonych w punkcie {{LinkWzór|27.14}} hamiltonian ładunku punktowego, to jest po prostu jego energia mechaniczna (całkowita), która jest sumą całkowitej energii relatywistycznej cząstki mc{{Sup|2}} i jego energii potencjalnej q&phi;. == Lagrangian a czterowektor potencjału i różniczki zmiany położenia cząstki w czasoprzestrzeni == Wykorzystując definicję czteropotencjału kowariantnego {{LinkWzór|26.33|Elektrodynamika_relatywistyczna}} i definicję położenia w czterowymiarowej czasoprzestrzeni, a także definicję różniczki interwału czasoprzestrzennego w szczególnej teorii względności, wtedy definicję Lagrangianu {{LinkWzór|27.11}} możemy zapisać w równoważnej postaci: {{CentrujWzór|<Math>L=-m_0c^2{{ds}\over{cdt}}-q\left({{\varphi}\over{c}},-\vec{A}\right)\left({{cdt}\over{dt}},{{dx^i}\over{dt}}\right)= -m_0c^2{{ds}\over{cdt}}\mp qA_{\mu}{{dx^{\mu}}\over{dt}}\;</MATH>|27.15}} Wedle przekazów z obliczeń przeprowadzonych w punkcie {{LinkWzór|27.15}} iloczyn wspomnianego Lagrangianu L i różniczki czasu, w której badamy ruch badanej cząstki jest wyrażony: {{CentrujWzór|<MATH>Ldt=-m_0cds\mp qA_{\mu}dx^{\mu}\;</MATH>|27.16}} Całka działania Lagrangianu {{LinkWzór|27.15}} jest całką naszego Lagrangianu względem czasu i na podstawie wzoru {{LinkWzór|27.16}} jest równa jego przedstawieniu: {{CentrujWzór|<MATH>S=\int Ldt=\int\left(-m_0cds\mp qA_{\mu}dx^{\mu}\right)\;</MATH>|27.17}} == Równanie ruchu w czteroprzestrzeni Minkowskiego == Zasada najmniejszego działania stwierdza, że względem funkcjonału {{LinkWzór|27.17}}, wariacja tegoż obiektu jest równa zero, tzn.: {{CentrujWzór|<MATH>\delta S=\delta \int_a^b\left(-m_0cds\mp qA_{\mu}dx^{\mu}\right)=0\;</MATH>|27.18}} Z definicji różniczki wariacji {{Formuła|<MATh>ds=\sqrt{dx_{\mu}dx^{\mu}}\;</MAth>}} wariację {{LinkWzór|27.18}} po jego działaniu na wnętrze jego nawiasu, stwierdzamy, że na pewno zachodzi: {{CentrujWzór|<MATH>\delta S=\int_a^b\left(\mp m_0c{{dx_{\mu}d\delta x^{\mu}}\over{ds}}\mp qA_{\mu}d\delta x^{\mu}\mp q\delta A_{\mu}dx^{\mu}\right)=0\Rightarrow \mp\int_a^b\left(m_0c{{dx_{\mu}d\delta x^{\mu}}\over{ds}}+qA_{\mu}d\delta x^{\mu}+ q\delta A_{\mu}dx^{\mu}\right)=0\;</MATH>|27.19}} We wzorze {{LinkWzór|27.19}} stosujemy definicję kowariantnego czterowektora prędkości {{Formuła|<MaTH>u_{\mu}={{dx_{\mu}}\over{ds}}\;</MATH>}}, a także całkujemy przez części jego pierwszy i drugi wyraz, dalej grupując odpowiednio wyrazy, otrzymujemy: {{CentrujWzór|<mAth>\int_a^b\left(m_0cdu_{\mu}\delta x^{\mu}+q\delta x^{\mu}dA_{\mu}-q\delta A_{\mu}dx^{\mu}\right)-\left(m_0cu_{\mu}+qA_{\mu}\right)\delta x^{\mu}\Bigg|_a^b=0\;</MATH>|27.20}} Drugi wyraz w {{LinkWzór|27.20}} jest równy zero, bo przy wariowaniu całki należy uwzględnić, że współrzędne mają ustalone wartości na końcach przedziału całkowania. Dalej należy uwzględnić tożsamości: {{ElastycznyWiersz|1={{CentrujWzór|<MATH>\delta A_{\mu}=A_{\mu,\nu}\delta x^{\nu}\;</MATH>|27.21}}|2={{CentrujWzór|<math>dA_{\mu}=A_{\mu,\nu}dx^{\nu}\;</MATH>|27.22}}}} Jeśli podstawimy tożsamości {{LinkWzór|27.21}} i {{LinkWzór|27.22}} do {{LinkWzór|27.20}}, to otrzymamy do tego ostatniego równoważny wzór: {{CentrujWzór|<MATH>\int_a^b\left(m_0cdu_{\mu}\delta x^{\mu}+qA_{\mu,\nu}\delta x^{\mu}dx^{\nu}-qA_{\mu,\nu}dx^{\mu}\delta x^{\nu}\right)=0\;</MatH>|27.23}} Ponieważ we wzorze {{LinkWzór|27.23}} wskaźniki &mu; i &nu; są wskaźnikami niemymi, więc w trzecim jego wyrazie pod całką {{LinkWzór|27.23}} zamieniamy miejscami te wskaźniki, a także dla wyrazu drugiego i trzeciego stosujemy wzór {{Formuła|<mATH>dx^{\mu}=u^{\mu}ds\;</MATH>}} wynikająca z defiicji kontrawariannej czteroprędkości, zatem na podstawie wyżej wymienionej tożsamości otrzymujemy wzór: {{CentrujWzór|<MATH>\int_a^b\left[m_0c{{du_{\mu}}\over{ds}}-q\left(A_{\nu,\mu}-A_{\mu,\nu}\right)u^{\nu}\right]\delta x^{\mu}ds=0\;</MATH>|27.24}} Ponieważ we wzorze {{LinkWzór|27.24}} rozpatrujemy dowolne wariacje zmiennej {{Sup|&mu;}}, dla której cała całka jest równa zero, wtedy wyrażenie podcałkowe musi być zawsze być równa zero, zatem: {{CentrujWzór|<math>m_0c{{du_{\mu}}\over{ds}}-q\left(A_{\nu,\mu}-A_{\mu,\nu}\right)u^{\nu}=0\;</MATH>|27.25}} Wykorzystujemy definicję tensora pola elektromagnetycznego podwójnie kowariantnego przy pomocy kowariantnego czteropotencjału {{LinkWzór|26.33|Elektrodynamika_relatywistyczna}}, czyli tożsamości fizycznej równoważnej do {{LinkWzór|26.34|Elektrodynamika_relatywistyczna}}, wtedy wzór {{LinkWzór|27.25}} przyjmuje bardziej uproszczoną postać: {{CentrujWzór|<math>m_0c{{du_{\mu}}\over{ds}}=qF_{\nu\mu}u^{\nu}\Rightarrow m_0c{{du^{\mu}}\over{ds}}=qF^{\nu\mu}u_{\nu}\;</MATH>|27.25a}} Jeśli wprowadzimy definicję czteropędu w szczególnej teorii względności we wzorze {{LinkWzór|27.25a}} i wykorzystamy definicję czterosiły znanej w szczególnej teorii względności i także wykorzystamy, że tensor pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} jest tensorem antysymetrycznym, wtedy mamy wniosek: {{CentrujWzór|<math>{{dp^{\mu}}\over{ds}}=qF^{\nu\mu}u_{\nu}\Rightarrow K^{\mu}=-qF^{\mu\nu}u_{\nu}\;</math>|27.26}} Ten sam wzór co {{LinkWzór|27.26}}, który otrzymaliśmy z zasady wariacyjnej, napisaliśmy w punkcie {{LinkWzór|26.61|Elektrodynamika_relatywistyczna}}, którego zgodność ze szczególną teorią względności i z definicja siły Lorentza {{LinkWzór|8.3|Magnetostatyka}} udowodniliśmy wykorzystując definicję tensora pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}}. Zatem te dwie metody prowadzą do takiej samej definicji czterowektora siły K{{Sup|&mu;}}. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> 9wdawu6vjwn3rv4jxz269f0bnla0rpr 548290 548289 2026-07-25T13:01:21Z Persino 2851 /* Lagrangian relatywistyczny cząstki, w przybliżeniu małych prędkości, dla pola elektromagnetostatycznego */ 548290 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> Będziemy tutaj wyprowadzać zasady elektromagnetyzmu z zasad wariacyjnych, na podstawie tego, aby funkcjonał S przyjmował wartość najmniejszą. == Zasada wariacyjna a równania tensorowe elektromagnetyzmu z definicją czteroprądu == Gęstość Lagrangianu w elektromagnetyzmie definiujemy przy pomocy tensora pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} i przy pomocy definicji czteroprądu objętościowego napisanej wedle schematu {{LinkWzór|26.5|Elektrodynamika_relatywistyczna}}. Zatem napiszmy dla obu sygntur tensora Minkowskiego szczególnej teorii względności (znak u góry sygnatura dodatnia, u dołu ujemna): {{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\;</MAth>|27.1}} Całką działania nazywamy wyrażenie zdefiniowane na podstawie definicji gęstości lagrangianu {{LinkWzór|27.1}} w postaci: {{CentrujWzór|<math>S=\int d^4x\mathfrak{L}=\int d^4x\left[-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\right]\;</MATH>|27.2}} Wariacji całki działania {{LinkWzór|27.2}} zakładamy, że ona jest równa zero, wtedy na podstawie tego powinniliśmy otrzymać tensorowe równanie Maxwella {{LinkWzór|26.12|Elektrodynamika_relatywistyczna}}, zatem sprawdźmy, czy o nam wyjdzie. {{CentrujWzór| <math>\delta S=\delta\int d^4x\left[-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\right]= \int d^4 x\left[-{{1}\over{4\mu_0}}F^{\mu\nu}\delta F_{\mu\nu}-{{1}\over{4\mu_0}}F_{\mu\nu}\delta F^{\mu\nu}\mp J^{\mu}\delta A_{\mu}\right]\;</MATH>|27.3}} W wariację funkcjonału S {{LinkWzór|27.2}}, czyli &delta;S {{LinkWzór|27.3}}, liczymy względem gęstości objętościowej czteroprądu {{LinkWzór|26.5|Elektrodynamika_relatywistyczna}} (J{{Sup|&mu;}}), czeropotencjału i tensora pola elektromagnetycznego. Idąc dalej wykorzystajmy wzór na tensor pola elektromagnetycznego wyznaczony w zależności od czteropotencjału, czyli wzoru {{LinkWzór|26.34|Elektrodynamika_relatywistyczna}}. {{CentrujWzór|<MATH>\delta S= \int d^4x\left[-{{1}\over{2\mu_0}}F_{\mu\nu}\delta F^{\mu\nu}\mp J^{\mu}\delta A_{\mu}\right]= \int d^4x\left[-{{1}\over{2\mu_0}}F_{\mu\nu}\left[\partial^{\nu}\left(\delta A^{\mu}\right)-\partial^{\mu}\left(\delta A^{\nu}\right)\right]\mp J^{\mu}\delta A_{\mu}\right]\;</MAth>|27.4}} W obliczeniach {{LinkWzór|27.4}} wykorzystujemy rozdzielność mnożenia względem dodawania, wiedząc że tensor pola elektromagnetycznego F{{Sup|&mu;&nu;}} {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} jest tensorem antysymetrycznym, tzn. przy zamianie wskaźników miejscami w tym wspomnianym tensorze przed tym tensorem pojawia się znak minus, czyli F{{Sup|&mu;&nu;}}=-F{{Sup|&nu;&mu;}}. {{CentrujWzór|<MAth>\delta S= \int d^4x\left[-{{1}\over{2\mu_0}}\left[F_{\mu\nu}\partial^{\nu}\left(\delta A^{\mu}\right)-F_{\mu\nu}\partial ^{\mu}\left(\delta A^{\nu}\right)\right]\mp J^{\mu}\delta A_{\mu}\right]=\int d^4x\left[-{{1}\over{\mu_0}}F_{\mu\nu}\partial^{\nu}\left(\delta A^{\mu}\right)\mp J^{\mu}\delta A_{\mu}\right]\;</MATh>|27.5}} Następnym krokiem jest wykorzystanie definicji pochodnej iloczynu dwóch funkcji do pierwszego wyrazu w obliczeniach {{LinkWzór|27.5}}, zatem w takim przypadku dostajemy równość: {{CentrujWzór|<MATH>\delta S= \int d^4x\left[-{{1}\over{\mu_0}}\partial ^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)+{{1}\over{\mu_0}}\partial^{\nu}F_{\mu\nu} \delta A^{\mu}\mp J^{\mu}\delta A_{\mu}\right]\;</Math>|27.6}} Dalszym krokiem jest rozdzielenie w wariacji {{LinkWzór|27.6}} na dwie osobne całki z twierdzenia na całkę sumy dwóch wyrażeń podcałkowych jako sumę całek, w których występują te wyrażenia podcałkowe, wtedy mamy wniosek: {{CentrujWzór|<MATh>\delta S= -{{1}\over{\mu_0}}\int d^4x\partial^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)+\int d^4x\left({{1}\over{\mu_0}}\partial_{\nu}F^{\mu\nu}\delta A_{\mu}\mp J^{\mu}\delta A_{\mu}\right)\;</MatH>|27.7}} Pierwsza całka w obliczeniach {{LinkWzór|27.7}} jest zawsze równa zero, ponieważ można go rozpisać względem całkowania po zmiennej x{{Sup|&mu;}}, i zakładamy, że wariancja czteropotencjału na końcach x{{Sup|&mu;}}{{Sub|2}} i x{{Sup|&mu;}}{{Sub|1}} jest równa zero, co możemy powiedzieć, że: {{CentrujWzór|<math>\int d^{4}x\partial^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)=\int dx^3F_{\mu\nu}\delta A^{\mu}\bigg|^{x^{\nu}_2}_{x^{\nu}_1}=0\;</Math>|27.8}} Jeśli wykorzystamy nasz warunek {{LinkWzór|27.8}} do wariacji &delta;S {{LinkWzór|27.7}}, zatem to samo wyrażenie możemy przepisać po wyzerowaniu się według przeprowadzonego naszego dowodu powyżej, zatem tą naszą wspomnianą tożsamość piszemy w postaci: {{CentrujWzór|<Math>\delta S=\int d^4x\left({{1}\over{\mu_0}}\partial _{\nu}F^{\mu\nu}\mp J^{\mu}\right)\delta A_{\mu}\;</MATH>|27.9}} Aby wariancja funkcjonału {{LinkWzór|27.9}} była równa zero dla dowolnej wariacji wielkości czteropotencjału A{{Sub|&mu;}}, to wyrażenie podcałkowe w ostatnim wniosku powinno być równa zero, zatem na tej podstawie powinna zachodzić tożsamość: {{CentrujWzór|<MATH>{{1}\over{\mu_0}}\partial _{\nu}F^{\mu\nu}\mp J^{\mu}=0\Rightarrow \partial _{\nu}F^{\mu\nu}=\pm\mu_0J^{\mu}\Rightarrow {F^{\mu\nu}}_{,\nu}=\pm \mu_0J^{\mu}\;</MATH>|27.10}} Widzimy, że równanie {{LinkWzór|27.10}} jest równoważne z równaniem {{LinkWzór|26.12|Elektrodynamika_relatywistyczna}}, zatem gęstość lagrangianu {{LinkWzór|27.1}} jest poprawnym Lagrangianem, czyli wzór {{LinkWzór|27.10}} jest poprawnym wzorem tensorowym z definicją tensora pola elektromagnetycznego napisanego wzorem {{LinkWzór|26.34|Elektrodynamika relatywistyczna}}. == Lagrangian relatywistyczny pola elektromagnetostatycznego == Lagrangian w elektrodynamice relatywistycznej definiujemy przy pomocy potencjału skalarnego &phi; i wektorowego {{Formuła|<Math>\vec{A}\;</MATH>}} przy prędkości cząstki równym {{Formuła|<MATH>\vec{v}\;</mAth>}} przy rozpatrywanej cząstce o ładunku o wartości q, przedstawiamy według: {{CentrujWzór|<MATH>L=-m_0c^2\sqrt{1-{{v^2}\over{c^2}}}-q\varphi+q\vec{v}\vec{A}\;</MATH>|27.11}} Pęd uogólniony w elektrodynamice jest napisany jako pochodna cząstkowa Lagrangianu {{LinkWzór|27.11}} względem wektora prędkości, mamy: {{CentrujWzór|<maTH>\vec{p}={{\partial L}\over{\partial\vec{v}}}={{m_0\vec{v}}\over{\sqrt{1-{{v^2}\over{c^2}}}}}+q\vec{A}=m\vec{v}+q\vec{A}\;</MATH>|27.12}} Pęd uogólniony w polu elektromagnetycznym jest równy sumie pędu klasycznego znanej ze szczególnej teorii względności i iloczynowi ładunku cząstki i potencjału wektorowego tego pola. Zatem dochodzimy do wniosku, że ten pęd to nie jest zwykły iloczyn masy relatywistycznej i prędkości cząstki, zachodzi tak tylko w polu bez potencjału wektorowego. Równanie wariacyjne Eulera-Lagrange'a dla lagrangianu {{LinkWzór|27.11}} jest dokładnie takie same w {{LinkWzór|5.12|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}. W tym wzorze w pierwszym wyrazie pod pochodną zupełną względem czasu występuje pęd uogólniony cząstki {{LinkWzór|27.12}}. Zatem rozważając prawie tak samo jak w tym rozdziale, w którym znajduje się ostatnio wspomniany wzór, wtedy dochodzimy do wzoru na równanie ruchu cząstki punktowej {{LinkWzór|5.21|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, tylko po lewej stronie wzoru występuje nie siła klasyczna Newtona według drugiej zasady dynamiki Newtona, tylko siła relatywistyczna Einsteina. Co kończy dowód, że z zasady najmniejszego działania przy definicji Lagragianu {{LinkWzór|27.11}} wynika dobrze nam znane równanie ruchu. == Lagrangian relatywistyczny cząstki, w przybliżeniu małych prędkości, dla pola elektromagnetostatycznego == Lagrangian relatywistyczny cząstki punktowej o ładunku q {{LinkWzór|27.11}} dla prędkości o wiele mniejszej od prędkości światła, czyli wtedy zachodzi {{Formuła|<MATH>{{v}\over{c}}<<1\;</MATH>}}, wtedy na podstawie tego pierwiastek w nim występujący można rozwinąć w szereg Taylora, wtedy dla tego przybliżenia dostajemy: {{CentrujWzór|<math>L=-m_0c^2\left(1-{{v^2}\over{2c^2}}+...\right)-q\varphi+q\vec{v}\vec{A}\simeq-m_0c^2+{{1}\over{2}}m_0\vec{v}\vec{v}-q\varphi+q\vec{v}\vec{A}\;</MATH>|27.13}} W wyrażeniu przybliżonym {{LinkWzór|27.13}} w stosunku do jej odpowiednika klasycznego {{LinkWzór|1.122b|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} różni się o stałą -m{{Sub|0}}c{{Sup|2}}, która w tym przypadku nie odgrywa żadnej roli, ponieważ w równaniu Eulera-Lagrange'a {{LinkWzór|5.12|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} występują pochodne cząstkowe i ta stała według twierdzenia o pochodnej sumy nic nie wnosi we końcowym wniosku. == Relatywistyczny hamiltonian dla pola elektromagnetostatycznego == Wyznaczmy relatywistyczny hamiltoniam dla cząstki w polu elektromagnetostatycznym, korzystając z definicji hamiltonianu dla cząstki relatywistycznej i Lagrangianu relatywistycznego {{LinkWzór|27.11}}, a także z definicji pędu uogólnionego {{LinkWzór|27.12}} dla pola elektromagnetostatycznego: {{CentrujWzór|<MATH>H=\vec{p}\vec{v}-L=(m\vec{v}+q\vec{A})\vec{v}+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi-q\vec{v}\vec{A}=m\vec{v}\vec{v}+q\vec{A}\vec{v}+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}v^2+\;</MATH>{{Br}}<MATH>+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\left(v^2+c^2\left(1-{{v^2}\over{c^2}}\right)\right)+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\left(v^2+c^2-v^2\right)+q\varphi={{m_0c^2}\over{\sqrt{1-{{v^2}\over{c^2}}}}}+q\varphi=\;</MATH>{{Br}}<MATH>=mc^2+q\varphi\Rightarrow H=mc^2+q\varphi</MAth>|27.14}} Widzimy, że wedle końcowych obliczeń przeprowadzonych w punkcie {{LinkWzór|27.14}} hamiltonian ładunku punktowego, to jest po prostu jego energia mechaniczna (całkowita), która jest sumą całkowitej energii relatywistycznej cząstki mc{{Sup|2}} i jego energii potencjalnej q&phi;. == Lagrangian a czterowektor potencjału i różniczki zmiany położenia cząstki w czasoprzestrzeni == Wykorzystując definicję czteropotencjału kowariantnego {{LinkWzór|26.33|Elektrodynamika_relatywistyczna}} i definicję położenia w czterowymiarowej czasoprzestrzeni, a także definicję różniczki interwału czasoprzestrzennego w szczególnej teorii względności, wtedy definicję Lagrangianu {{LinkWzór|27.11}} możemy zapisać w równoważnej postaci: {{CentrujWzór|<Math>L=-m_0c^2{{ds}\over{cdt}}-q\left({{\varphi}\over{c}},-\vec{A}\right)\left({{cdt}\over{dt}},{{dx^i}\over{dt}}\right)= -m_0c^2{{ds}\over{cdt}}\mp qA_{\mu}{{dx^{\mu}}\over{dt}}\;</MATH>|27.15}} Wedle przekazów z obliczeń przeprowadzonych w punkcie {{LinkWzór|27.15}} iloczyn wspomnianego Lagrangianu L i różniczki czasu, w której badamy ruch badanej cząstki jest wyrażony: {{CentrujWzór|<MATH>Ldt=-m_0cds\mp qA_{\mu}dx^{\mu}\;</MATH>|27.16}} Całka działania Lagrangianu {{LinkWzór|27.15}} jest całką naszego Lagrangianu względem czasu i na podstawie wzoru {{LinkWzór|27.16}} jest równa jego przedstawieniu: {{CentrujWzór|<MATH>S=\int Ldt=\int\left(-m_0cds\mp qA_{\mu}dx^{\mu}\right)\;</MATH>|27.17}} == Równanie ruchu w czteroprzestrzeni Minkowskiego == Zasada najmniejszego działania stwierdza, że względem funkcjonału {{LinkWzór|27.17}}, wariacja tegoż obiektu jest równa zero, tzn.: {{CentrujWzór|<MATH>\delta S=\delta \int_a^b\left(-m_0cds\mp qA_{\mu}dx^{\mu}\right)=0\;</MATH>|27.18}} Z definicji różniczki wariacji {{Formuła|<MATh>ds=\sqrt{dx_{\mu}dx^{\mu}}\;</MAth>}} wariację {{LinkWzór|27.18}} po jego działaniu na wnętrze jego nawiasu, stwierdzamy, że na pewno zachodzi: {{CentrujWzór|<MATH>\delta S=\int_a^b\left(\mp m_0c{{dx_{\mu}d\delta x^{\mu}}\over{ds}}\mp qA_{\mu}d\delta x^{\mu}\mp q\delta A_{\mu}dx^{\mu}\right)=0\Rightarrow \mp\int_a^b\left(m_0c{{dx_{\mu}d\delta x^{\mu}}\over{ds}}+qA_{\mu}d\delta x^{\mu}+ q\delta A_{\mu}dx^{\mu}\right)=0\;</MATH>|27.19}} We wzorze {{LinkWzór|27.19}} stosujemy definicję kowariantnego czterowektora prędkości {{Formuła|<MaTH>u_{\mu}={{dx_{\mu}}\over{ds}}\;</MATH>}}, a także całkujemy przez części jego pierwszy i drugi wyraz, dalej grupując odpowiednio wyrazy, otrzymujemy: {{CentrujWzór|<mAth>\int_a^b\left(m_0cdu_{\mu}\delta x^{\mu}+q\delta x^{\mu}dA_{\mu}-q\delta A_{\mu}dx^{\mu}\right)-\left(m_0cu_{\mu}+qA_{\mu}\right)\delta x^{\mu}\Bigg|_a^b=0\;</MATH>|27.20}} Drugi wyraz w {{LinkWzór|27.20}} jest równy zero, bo przy wariowaniu całki należy uwzględnić, że współrzędne mają ustalone wartości na końcach przedziału całkowania. Dalej należy uwzględnić tożsamości: {{ElastycznyWiersz|1={{CentrujWzór|<MATH>\delta A_{\mu}=A_{\mu,\nu}\delta x^{\nu}\;</MATH>|27.21}}|2={{CentrujWzór|<math>dA_{\mu}=A_{\mu,\nu}dx^{\nu}\;</MATH>|27.22}}}} Jeśli podstawimy tożsamości {{LinkWzór|27.21}} i {{LinkWzór|27.22}} do {{LinkWzór|27.20}}, to otrzymamy do tego ostatniego równoważny wzór: {{CentrujWzór|<MATH>\int_a^b\left(m_0cdu_{\mu}\delta x^{\mu}+qA_{\mu,\nu}\delta x^{\mu}dx^{\nu}-qA_{\mu,\nu}dx^{\mu}\delta x^{\nu}\right)=0\;</MatH>|27.23}} Ponieważ we wzorze {{LinkWzór|27.23}} wskaźniki &mu; i &nu; są wskaźnikami niemymi, więc w trzecim jego wyrazie pod całką {{LinkWzór|27.23}} zamieniamy miejscami te wskaźniki, a także dla wyrazu drugiego i trzeciego stosujemy wzór {{Formuła|<mATH>dx^{\mu}=u^{\mu}ds\;</MATH>}} wynikająca z defiicji kontrawariannej czteroprędkości, zatem na podstawie wyżej wymienionej tożsamości otrzymujemy wzór: {{CentrujWzór|<MATH>\int_a^b\left[m_0c{{du_{\mu}}\over{ds}}-q\left(A_{\nu,\mu}-A_{\mu,\nu}\right)u^{\nu}\right]\delta x^{\mu}ds=0\;</MATH>|27.24}} Ponieważ we wzorze {{LinkWzór|27.24}} rozpatrujemy dowolne wariacje zmiennej {{Sup|&mu;}}, dla której cała całka jest równa zero, wtedy wyrażenie podcałkowe musi być zawsze być równa zero, zatem: {{CentrujWzór|<math>m_0c{{du_{\mu}}\over{ds}}-q\left(A_{\nu,\mu}-A_{\mu,\nu}\right)u^{\nu}=0\;</MATH>|27.25}} Wykorzystujemy definicję tensora pola elektromagnetycznego podwójnie kowariantnego przy pomocy kowariantnego czteropotencjału {{LinkWzór|26.33|Elektrodynamika_relatywistyczna}}, czyli tożsamości fizycznej równoważnej do {{LinkWzór|26.34|Elektrodynamika_relatywistyczna}}, wtedy wzór {{LinkWzór|27.25}} przyjmuje bardziej uproszczoną postać: {{CentrujWzór|<math>m_0c{{du_{\mu}}\over{ds}}=qF_{\nu\mu}u^{\nu}\Rightarrow m_0c{{du^{\mu}}\over{ds}}=qF^{\nu\mu}u_{\nu}\;</MATH>|27.25a}} Jeśli wprowadzimy definicję czteropędu w szczególnej teorii względności we wzorze {{LinkWzór|27.25a}} i wykorzystamy definicję czterosiły znanej w szczególnej teorii względności i także wykorzystamy, że tensor pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} jest tensorem antysymetrycznym, wtedy mamy wniosek: {{CentrujWzór|<math>{{dp^{\mu}}\over{ds}}=qF^{\nu\mu}u_{\nu}\Rightarrow K^{\mu}=-qF^{\mu\nu}u_{\nu}\;</math>|27.26}} Ten sam wzór co {{LinkWzór|27.26}}, który otrzymaliśmy z zasady wariacyjnej, napisaliśmy w punkcie {{LinkWzór|26.61|Elektrodynamika_relatywistyczna}}, którego zgodność ze szczególną teorią względności i z definicja siły Lorentza {{LinkWzór|8.3|Magnetostatyka}} udowodniliśmy wykorzystując definicję tensora pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}}. Zatem te dwie metody prowadzą do takiej samej definicji czterowektora siły K{{Sup|&mu;}}. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> gxr9hdrfxa3tbzs5p72waxfycey5o4d Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności 0 19032 548296 548225 2026-07-25T13:35:05Z Persino 2851 548296 wikitext text/x-wiki <noinclude>{{Status|-100%|Astronomia i fizyka|typ=z fizyki|poziom=Studia}} {{UnikalnaStronaStart | nagłówek = {{Info|Książka wymaga poprawek językowych i stylistycznych.}} | nagłówek prawy = {{Wersja do czytania}}{{Kolekcja}} | stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{PierwszyArtykuł}}|{{OstatniArtykuł}}}} }}</noinclude> '''Szczególna teoria względności''' jest to dział fizyki zajmujących się przede wszystkim ruchem ciał poruszających się z prędkościami porównywalnymi z prędkością światła w próżni. == Spis treści == === Szczególna teoria względności === ==== Kinematyka ==== {{SpisTreści|Postulaty szczególnej teorii względności i rodzaje układów}} {{SpisTreści|Podstawy teorii względności}} {{SpisTreści|Przypomnienie o operatorach rzutowych}} {{SpisTreści|Przypomnienie transformacji Galileusza, właściwości operatorów transformacji}} {{SpisTreści|Wydłużenie podłużne a poprzeczne}} {{SpisTreści|Układy inercjalne i nieinercjalne}} {{SpisTreści|Transformacje prędkości - początek rozważań}} {{SpisTreści|Transformacje różniczek czasu i położenia}} {{SpisTreści|Transformacje prędkości - równania końcowe}} {{SpisTreści|Transformacje macierzy transformacji, układy globalnie (lokalnie) płaskie a słabozakrzywione - rozważania ogólne}} {{SpisTreści|Transformacje macierzy transformacji Einsteina i Newtona, układy globalnie (lokalnie) płaskie a słabozakrzywione}} {{SpisTreści|Istnienie dowolnych ogólnie nieprostokątnych układów odniesienia}} {{SpisTreści|Równoważności macierzy transformacji}} {{SpisTreści|Zestawienie transformacji w układach płaskich i słabozakrzywionych}} {{SpisTreści|Przechodniość macierzy transformacji}} {{SpisTreści|Tensor metryczny Minkowskiego i jego niezmienniczość interwału czasoprzestrzennego, a stożek światła}} {{SpisTreści|Baza odniesienia w mechanice Einsteina i Newtona}} <!--Własności czasoprzestrzeni--> {{SpisTreści|Własności czasoprzestrzeni}} ==== Dynamika ==== {{SpisTreści|Trzy zasady dynamiki Einsteina}} <!--Tensory--> {{SpisTreści|Tensory w czasoprzestrzeni}} {{SpisTreści|Konwencje Newtona i Einsteina - formułowanie drugiej zasady dynamiki Einsteina-Newtona}} {{SpisTreści|Tensorowy charakter różniczki położenia oraz tensora siły w mechanine Einsteina i wektora siły w mechanice Newtona}} {{SpisTreści|Formułowanie drugiej i trzeciej zasady dynamiki Einsteina-Newtona, zasada niezależności działania tensorów (wektorów) sił}} {{SpisTreści|Formułowanie zasad dynamiki ruchu obrotowego}} {{SpisTreści|Twierdzenie o środku mas w dynamice Einsteina-Newtona}} {{SpisTreści|Pewne prawa w układach globalnie (lokalnie) płaskich o globalnie (lokalnie) stałym tensorze (wektorze) prędkości}} <!--Lagrangian i gęstość lagrangianu, najmniejsza zasada działania--> {{SpisTreści|Pierwsza i druga zasada Lagrange'a}} {{SpisTreści|Teoria funkcji lagrangianu}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - wprowadzenie}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - szczególna teoria względności}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - mechanika Newtona}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - wnioski}} <!--Anolmalne układy tylko matematyczne--> {{SpisTreści|Anormalne układy, tylko matematyczne, a nie fizyczne}} <!--Praca,moc energia-pęd--> {{SpisTreści|Definicja masy i energii, spoczynkowej i relatywistycznej, i pędu}} {{SpisTreści|Niezmienniczość ciśnienia od układu odniesienia}} {{SpisTreści|Lokalna zachowawczość tensora gęstości energii(masy)-pędu}} {{SpisTreści|Lokalna zasada zachowania tensora pędu}} {{SpisTreści|Lokalna zasada zachowania energii(masy)-pędu z lokalnej zachowawczości tensora gęstości energii(masy)-pędu}} {{SpisTreści|Dyskretne i ciągłe równanie ruchu}} {{SpisTreści|Lokalna zasada zachowania energii(masy)-pędu z zasady zachowania energii(masy)-pędu}} <!--Teoria gęstości lagrangianu--> {{SpisTreści|Lokalna zachowawczość tensora gęstości energii(masy)-pędu z teorii gęstości lagrangianu}} {{SpisTreści|Lokalna zasada zachowania tensora pędu, z teorii gęstości lagrangianu}} {{SpisTreści|Lagrangian masowy kinematyczny w mechanice Einsteina i Newtona}} {{SpisTreści|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu}} === Ogólna teoria względności === {{SpisTreści|Gęstość lagrangianu i równanie Eulera-Lagrange'a, a paradoks niespełnienia zasady najmniejszego działania}} == Bibliografia == * [[Fizyka_teoretyczna/Bibliografia|Bibliografia]] {{Licencja|Autor=[[Wikipedysta:Persino|Mirosław Makowiecki]]|Ukończone szkoły=Absolwent UMCS Fizyki Komputerowej Uniwersytetu Marii Curie-Skłodowskiej w Lublinie|Email=miroslaw(kropka)makowiecki(małpa)gmail(kropka)pl}} <noinclude>{{UnikalnaStronaKoniec}}</noinclude> dxanbcld31ez5k9piguvtlsj7j0uziy 548298 548296 2026-07-25T13:44:55Z Persino 2851 /* Spis treści */ 548298 wikitext text/x-wiki <noinclude>{{Status|-100%|Astronomia i fizyka|typ=z fizyki|poziom=Studia}} {{UnikalnaStronaStart | nagłówek = {{Info|Książka wymaga poprawek językowych i stylistycznych.}} | nagłówek prawy = {{Wersja do czytania}}{{Kolekcja}} | stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{PierwszyArtykuł}}|{{OstatniArtykuł}}}} }}</noinclude> '''Szczególna teoria względności''' jest to dział fizyki zajmujących się przede wszystkim ruchem ciał poruszających się z prędkościami porównywalnymi z prędkością światła w próżni. == Spis treści == Przedstawione tutaj prawa są spełnione dla prędkości małych jak i prędkości relatywistycznych, w przweciwieństwie do teorii Netwona, która jest spełniona dla małych prędkości. Obie te teorie są w przybliżeniu zgodne dla małych prędkości. === Szczególna teoria względności === Przedstawimy tutaj wyprowadzenie szczególnej teorii względności. ==== Kinematyka ==== Będziemy tutaj przedstawiać transformacje i ruch ciał materialnych. {{SpisTreści|Postulaty szczególnej teorii względności i rodzaje układów}} {{SpisTreści|Podstawy teorii względności}} {{SpisTreści|Przypomnienie o operatorach rzutowych}} {{SpisTreści|Przypomnienie transformacji Galileusza, właściwości operatorów transformacji}} {{SpisTreści|Wydłużenie podłużne a poprzeczne}} {{SpisTreści|Układy inercjalne i nieinercjalne}} {{SpisTreści|Transformacje prędkości - początek rozważań}} {{SpisTreści|Transformacje różniczek czasu i położenia}} {{SpisTreści|Transformacje prędkości - równania końcowe}} {{SpisTreści|Transformacje macierzy transformacji, układy globalnie (lokalnie) płaskie a słabozakrzywione - rozważania ogólne}} {{SpisTreści|Transformacje macierzy transformacji Einsteina i Newtona, układy globalnie (lokalnie) płaskie a słabozakrzywione}} {{SpisTreści|Istnienie dowolnych ogólnie nieprostokątnych układów odniesienia}} {{SpisTreści|Równoważności macierzy transformacji}} {{SpisTreści|Zestawienie transformacji w układach płaskich i słabozakrzywionych}} {{SpisTreści|Przechodniość macierzy transformacji}} {{SpisTreści|Tensor metryczny Minkowskiego i jego niezmienniczość interwału czasoprzestrzennego, a stożek światła}} {{SpisTreści|Baza odniesienia w mechanice Einsteina i Newtona}} <!--Własności czasoprzestrzeni--> {{SpisTreści|Własności czasoprzestrzeni}} ==== Dynamika ==== Będziemy tutaj przedstawiać dlaczego ciało się poruszają. {{SpisTreści|Trzy zasady dynamiki Einsteina}} <!--Tensory--> {{SpisTreści|Tensory w czasoprzestrzeni}} {{SpisTreści|Konwencje Newtona i Einsteina - formułowanie drugiej zasady dynamiki Einsteina-Newtona}} {{SpisTreści|Tensorowy charakter różniczki położenia oraz tensora siły w mechanine Einsteina i wektora siły w mechanice Newtona}} {{SpisTreści|Formułowanie drugiej i trzeciej zasady dynamiki Einsteina-Newtona, zasada niezależności działania tensorów (wektorów) sił}} {{SpisTreści|Formułowanie zasad dynamiki ruchu obrotowego}} {{SpisTreści|Twierdzenie o środku mas w dynamice Einsteina-Newtona}} {{SpisTreści|Pewne prawa w układach globalnie (lokalnie) płaskich o globalnie (lokalnie) stałym tensorze (wektorze) prędkości}} <!--Lagrangian i gęstość lagrangianu, najmniejsza zasada działania--> {{SpisTreści|Pierwsza i druga zasada Lagrange'a}} {{SpisTreści|Teoria funkcji lagrangianu}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - wprowadzenie}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - szczególna teoria względności}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - mechanika Newtona}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - wnioski}} <!--Anolmalne układy tylko matematyczne--> {{SpisTreści|Anormalne układy, tylko matematyczne, a nie fizyczne}} <!--Praca,moc energia-pęd--> {{SpisTreści|Definicja masy i energii, spoczynkowej i relatywistycznej, i pędu}} {{SpisTreści|Niezmienniczość ciśnienia od układu odniesienia}} {{SpisTreści|Lokalna zachowawczość tensora gęstości energii(masy)-pędu}} {{SpisTreści|Lokalna zasada zachowania tensora pędu}} {{SpisTreści|Lokalna zasada zachowania energii(masy)-pędu z lokalnej zachowawczości tensora gęstości energii(masy)-pędu}} {{SpisTreści|Dyskretne i ciągłe równanie ruchu}} {{SpisTreści|Lokalna zasada zachowania energii(masy)-pędu z zasady zachowania energii(masy)-pędu}} <!--Teoria gęstości lagrangianu--> {{SpisTreści|Lokalna zachowawczość tensora gęstości energii(masy)-pędu z teorii gęstości lagrangianu}} {{SpisTreści|Lokalna zasada zachowania tensora pędu, z teorii gęstości lagrangianu}} {{SpisTreści|Lagrangian masowy kinematyczny w mechanice Einsteina i Newtona}} {{SpisTreści|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu}} === Ogólna teoria względności === Przedstawiać tutaj będziemy paradoksy ogólnej teorii względności. {{SpisTreści|Gęstość lagrangianu i równanie Eulera-Lagrange'a, a paradoks niespełnienia zasady najmniejszego działania}} == Bibliografia == * [[Fizyka_teoretyczna/Bibliografia|Bibliografia]] {{Licencja|Autor=[[Wikipedysta:Persino|Mirosław Makowiecki]]|Ukończone szkoły=Absolwent UMCS Fizyki Komputerowej Uniwersytetu Marii Curie-Skłodowskiej w Lublinie|Email=miroslaw(kropka)makowiecki(małpa)gmail(kropka)pl}} <noinclude>{{UnikalnaStronaKoniec}}</noinclude> cs1t455a9tleffbchzbx68jux4p2v9x 548299 548298 2026-07-25T13:46:15Z Persino 2851 /* Spis treści */ 548299 wikitext text/x-wiki <noinclude>{{Status|-100%|Astronomia i fizyka|typ=z fizyki|poziom=Studia}} {{UnikalnaStronaStart | nagłówek = {{Info|Książka wymaga poprawek językowych i stylistycznych.}} | nagłówek prawy = {{Wersja do czytania}}{{Kolekcja}} | stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{PierwszyArtykuł}}|{{OstatniArtykuł}}}} }}</noinclude> '''Szczególna teoria względności''' jest to dział fizyki zajmujących się przede wszystkim ruchem ciał poruszających się z prędkościami porównywalnymi z prędkością światła w próżni. == Spis treści == Przedstawione tutaj prawa są spełnione dla prędkości małych jak i prędkości relatywistycznych, w przeciwieństwie do teorii Netwona, która jest spełniona dla małych prędkości. Obie te teorie są w przybliżeniu zgodne dla małych prędkości. === Szczególna teoria względności === Przedstawimy tutaj wyprowadzenie szczególnej teorii względności. ==== Kinematyka ==== Będziemy tutaj przedstawiać transformacje i ruch ciał materialnych. {{SpisTreści|Postulaty szczególnej teorii względności i rodzaje układów}} {{SpisTreści|Podstawy teorii względności}} {{SpisTreści|Przypomnienie o operatorach rzutowych}} {{SpisTreści|Przypomnienie transformacji Galileusza, właściwości operatorów transformacji}} {{SpisTreści|Wydłużenie podłużne a poprzeczne}} {{SpisTreści|Układy inercjalne i nieinercjalne}} {{SpisTreści|Transformacje prędkości - początek rozważań}} {{SpisTreści|Transformacje różniczek czasu i położenia}} {{SpisTreści|Transformacje prędkości - równania końcowe}} {{SpisTreści|Transformacje macierzy transformacji, układy globalnie (lokalnie) płaskie a słabozakrzywione - rozważania ogólne}} {{SpisTreści|Transformacje macierzy transformacji Einsteina i Newtona, układy globalnie (lokalnie) płaskie a słabozakrzywione}} {{SpisTreści|Istnienie dowolnych ogólnie nieprostokątnych układów odniesienia}} {{SpisTreści|Równoważności macierzy transformacji}} {{SpisTreści|Zestawienie transformacji w układach płaskich i słabozakrzywionych}} {{SpisTreści|Przechodniość macierzy transformacji}} {{SpisTreści|Tensor metryczny Minkowskiego i jego niezmienniczość interwału czasoprzestrzennego, a stożek światła}} {{SpisTreści|Baza odniesienia w mechanice Einsteina i Newtona}} <!--Własności czasoprzestrzeni--> {{SpisTreści|Własności czasoprzestrzeni}} ==== Dynamika ==== Będziemy tutaj przedstawiać dlaczego ciało się poruszają. {{SpisTreści|Trzy zasady dynamiki Einsteina}} <!--Tensory--> {{SpisTreści|Tensory w czasoprzestrzeni}} {{SpisTreści|Konwencje Newtona i Einsteina - formułowanie drugiej zasady dynamiki Einsteina-Newtona}} {{SpisTreści|Tensorowy charakter różniczki położenia oraz tensora siły w mechanine Einsteina i wektora siły w mechanice Newtona}} {{SpisTreści|Formułowanie drugiej i trzeciej zasady dynamiki Einsteina-Newtona, zasada niezależności działania tensorów (wektorów) sił}} {{SpisTreści|Formułowanie zasad dynamiki ruchu obrotowego}} {{SpisTreści|Twierdzenie o środku mas w dynamice Einsteina-Newtona}} {{SpisTreści|Pewne prawa w układach globalnie (lokalnie) płaskich o globalnie (lokalnie) stałym tensorze (wektorze) prędkości}} <!--Lagrangian i gęstość lagrangianu, najmniejsza zasada działania--> {{SpisTreści|Pierwsza i druga zasada Lagrange'a}} {{SpisTreści|Teoria funkcji lagrangianu}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - wprowadzenie}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - szczególna teoria względności}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - mechanika Newtona}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - wnioski}} <!--Anolmalne układy tylko matematyczne--> {{SpisTreści|Anormalne układy, tylko matematyczne, a nie fizyczne}} <!--Praca,moc energia-pęd--> {{SpisTreści|Definicja masy i energii, spoczynkowej i relatywistycznej, i pędu}} {{SpisTreści|Niezmienniczość ciśnienia od układu odniesienia}} {{SpisTreści|Lokalna zachowawczość tensora gęstości energii(masy)-pędu}} {{SpisTreści|Lokalna zasada zachowania tensora pędu}} {{SpisTreści|Lokalna zasada zachowania energii(masy)-pędu z lokalnej zachowawczości tensora gęstości energii(masy)-pędu}} {{SpisTreści|Dyskretne i ciągłe równanie ruchu}} {{SpisTreści|Lokalna zasada zachowania energii(masy)-pędu z zasady zachowania energii(masy)-pędu}} <!--Teoria gęstości lagrangianu--> {{SpisTreści|Lokalna zachowawczość tensora gęstości energii(masy)-pędu z teorii gęstości lagrangianu}} {{SpisTreści|Lokalna zasada zachowania tensora pędu, z teorii gęstości lagrangianu}} {{SpisTreści|Lagrangian masowy kinematyczny w mechanice Einsteina i Newtona}} {{SpisTreści|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu}} === Ogólna teoria względności === Przedstawiać tutaj będziemy paradoksy ogólnej teorii względności. {{SpisTreści|Gęstość lagrangianu i równanie Eulera-Lagrange'a, a paradoks niespełnienia zasady najmniejszego działania}} == Bibliografia == * [[Fizyka_teoretyczna/Bibliografia|Bibliografia]] {{Licencja|Autor=[[Wikipedysta:Persino|Mirosław Makowiecki]]|Ukończone szkoły=Absolwent UMCS Fizyki Komputerowej Uniwersytetu Marii Curie-Skłodowskiej w Lublinie|Email=miroslaw(kropka)makowiecki(małpa)gmail(kropka)pl}} <noinclude>{{UnikalnaStronaKoniec}}</noinclude> sywya9mb5a1ter4ee7d4xbgnwu1uu2y 548300 548299 2026-07-25T13:50:49Z Persino 2851 548300 wikitext text/x-wiki <noinclude>{{Status|-100%|Astronomia i fizyka|typ=z fizyki|poziom=Studia}} {{UnikalnaStronaStart | nagłówek = {{Info|Książka wymaga poprawek językowych i stylistycznych.}} | nagłówek prawy = {{Wersja do czytania}}{{Kolekcja}} | stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{PierwszyArtykuł}}|{{OstatniArtykuł}}}} }}</noinclude> Będziemy tutaj próbowali podważyć szczególną i ogólną teorię względności. ; Paradoksy teorii względności{{nobold|, przedstawione teorie}}{{Dk}} * '''Szczególna teoria względności''' jest to dział fizyki zajmujących się przede wszystkim ruchem ciał poruszających się z prędkościami porównywalnymi z prędkością światła w próżni, * '''Ogólna teoria względności''' jest to dział fizyki opisujący grawitację ze strony zakrzywień czasoprzestrzeni, w przeciwieństwie do '''szczególnej teorii względności''', która jedynie opisuje układy inercjalne płaskie. Obie te teorie są zgodne dla małych zakrzywień czasoprzestrzeni. == Spis treści == Przedstawione tutaj prawa są spełnione dla prędkości małych jak i prędkości relatywistycznych, w przeciwieństwie do teorii Netwona, która jest spełniona dla małych prędkości. Obie te teorie są w przybliżeniu zgodne dla małych prędkości. === Szczególna teoria względności === Przedstawimy tutaj wyprowadzenie szczególnej teorii względności. ==== Kinematyka ==== Będziemy tutaj przedstawiać transformacje i ruch ciał materialnych. {{SpisTreści|Postulaty szczególnej teorii względności i rodzaje układów}} {{SpisTreści|Podstawy teorii względności}} {{SpisTreści|Przypomnienie o operatorach rzutowych}} {{SpisTreści|Przypomnienie transformacji Galileusza, właściwości operatorów transformacji}} {{SpisTreści|Wydłużenie podłużne a poprzeczne}} {{SpisTreści|Układy inercjalne i nieinercjalne}} {{SpisTreści|Transformacje prędkości - początek rozważań}} {{SpisTreści|Transformacje różniczek czasu i położenia}} {{SpisTreści|Transformacje prędkości - równania końcowe}} {{SpisTreści|Transformacje macierzy transformacji, układy globalnie (lokalnie) płaskie a słabozakrzywione - rozważania ogólne}} {{SpisTreści|Transformacje macierzy transformacji Einsteina i Newtona, układy globalnie (lokalnie) płaskie a słabozakrzywione}} {{SpisTreści|Istnienie dowolnych ogólnie nieprostokątnych układów odniesienia}} {{SpisTreści|Równoważności macierzy transformacji}} {{SpisTreści|Zestawienie transformacji w układach płaskich i słabozakrzywionych}} {{SpisTreści|Przechodniość macierzy transformacji}} {{SpisTreści|Tensor metryczny Minkowskiego i jego niezmienniczość interwału czasoprzestrzennego, a stożek światła}} {{SpisTreści|Baza odniesienia w mechanice Einsteina i Newtona}} <!--Własności czasoprzestrzeni--> {{SpisTreści|Własności czasoprzestrzeni}} ==== Dynamika ==== Będziemy tutaj przedstawiać dlaczego ciało się poruszają. {{SpisTreści|Trzy zasady dynamiki Einsteina}} <!--Tensory--> {{SpisTreści|Tensory w czasoprzestrzeni}} {{SpisTreści|Konwencje Newtona i Einsteina - formułowanie drugiej zasady dynamiki Einsteina-Newtona}} {{SpisTreści|Tensorowy charakter różniczki położenia oraz tensora siły w mechanine Einsteina i wektora siły w mechanice Newtona}} {{SpisTreści|Formułowanie drugiej i trzeciej zasady dynamiki Einsteina-Newtona, zasada niezależności działania tensorów (wektorów) sił}} {{SpisTreści|Formułowanie zasad dynamiki ruchu obrotowego}} {{SpisTreści|Twierdzenie o środku mas w dynamice Einsteina-Newtona}} {{SpisTreści|Pewne prawa w układach globalnie (lokalnie) płaskich o globalnie (lokalnie) stałym tensorze (wektorze) prędkości}} <!--Lagrangian i gęstość lagrangianu, najmniejsza zasada działania--> {{SpisTreści|Pierwsza i druga zasada Lagrange'a}} {{SpisTreści|Teoria funkcji lagrangianu}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - wprowadzenie}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - szczególna teoria względności}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - mechanika Newtona}} {{SpisTreści|Matematyczna, nie fizyczna, teoria najmniejszego działania - wnioski}} <!--Anolmalne układy tylko matematyczne--> {{SpisTreści|Anormalne układy, tylko matematyczne, a nie fizyczne}} <!--Praca,moc energia-pęd--> {{SpisTreści|Definicja masy i energii, spoczynkowej i relatywistycznej, i pędu}} {{SpisTreści|Niezmienniczość ciśnienia od układu odniesienia}} {{SpisTreści|Lokalna zachowawczość tensora gęstości energii(masy)-pędu}} {{SpisTreści|Lokalna zasada zachowania tensora pędu}} {{SpisTreści|Lokalna zasada zachowania energii(masy)-pędu z lokalnej zachowawczości tensora gęstości energii(masy)-pędu}} {{SpisTreści|Dyskretne i ciągłe równanie ruchu}} {{SpisTreści|Lokalna zasada zachowania energii(masy)-pędu z zasady zachowania energii(masy)-pędu}} <!--Teoria gęstości lagrangianu--> {{SpisTreści|Lokalna zachowawczość tensora gęstości energii(masy)-pędu z teorii gęstości lagrangianu}} {{SpisTreści|Lokalna zasada zachowania tensora pędu, z teorii gęstości lagrangianu}} {{SpisTreści|Lagrangian masowy kinematyczny w mechanice Einsteina i Newtona}} {{SpisTreści|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu}} === Ogólna teoria względności === Przedstawiać tutaj będziemy paradoksy ogólnej teorii względności. {{SpisTreści|Gęstość lagrangianu i równanie Eulera-Lagrange'a, a paradoks niespełnienia zasady najmniejszego działania}} == Bibliografia == * [[Fizyka_teoretyczna/Bibliografia|Bibliografia]] {{Licencja|Autor=[[Wikipedysta:Persino|Mirosław Makowiecki]]|Ukończone szkoły=Absolwent UMCS Fizyki Komputerowej Uniwersytetu Marii Curie-Skłodowskiej w Lublinie|Email=miroslaw(kropka)makowiecki(małpa)gmail(kropka)pl}} <noinclude>{{UnikalnaStronaKoniec}}</noinclude> 9gd1vy582y3zbm4ubfyehtx5pvhnfkg Fizyka teoretyczna/Koordynacja 0 19235 548281 470902 2026-07-25T12:37:44Z Persino 2851 /* Poprawki */ 548281 wikitext text/x-wiki == Wstęp == Aktualnie moduł ten zawiera tylko to spis artykułów podręcznika z zaznaczeniem, czy był sprawdzany pod względem językowym itp. (bez sprawdzania merytorycznego). W przyszłości można dodać dyskusję nt danych rozdziałów, jakieś listy "do zrobienia" i tym podobne. --[[Wikipedysta:Lethern|Lethern]] ([[Dyskusja Wikipedysty:Lethern|dyskusja]]) 18:01, 16 kwi 2010 (CEST) == Poprawki == Wszystkie wielkości (kB) są zawyżone - liczone z plików zapisanych w Unicode, przez co są 2x większe. * Do tej pory poprawiono ok. 300kB (z dezaktualizacją, niestety) z około 6800kB (4%) === [[Metody matematyczne fizyki]] === {| class="wikitable collapsible collapsed" ! (spis modułów aktualizowany 13.08.2010) (773kB) |- | * [[Metody matematyczne fizyki/Działania na wektorach|Działania na wektorach]] (33kB) : 100% poprawione, 16.07.2010 * [[Metody_matematyczne_fizyki/Rachunek_tensorowy|Rachunek tensorowy]] (97kB) : 100 % poprawione. [[Wikipedysta:Karol Dąbrowski|Karolus]] [[Dyskusja Wikipedysty:Karol Dąbrowski|(zaprasza do dyskusji)]] 17:45, 18 lip 2010 (CEST) * [[Metody_matematyczne_fizyki/Układ_współrzędnych|Układ współrzędnych]] (13kB) : 100 % sprawdzone. [[Wikipedysta:Karol Dąbrowski|Karolus]] [[Dyskusja Wikipedysty:Karol Dąbrowski|(zaprasza do dyskusji)]] 21:31, 11 sie 2010 (CEST) * [[Metody_matematyczne_fizyki/Obrót układu współrzędnych|Obrót układu współrzędnych]] (15kB) : 100 % sprawdzone [[Wikipedysta:Karol Dąbrowski|Karol Karolus Dąbrowski]] [[Dyskusja Wikipedysty:Karol Dąbrowski|(zaprasza do dyskusji)]] 11:35, 19 wrz 2010 (CEST) * [[Metody_matematyczne_fizyki/Całki i funkcje Eulera|Całki i funkcje Eulera]] (31kB) * [[Metody_matematyczne_fizyki/Kula_zanurzona_w_przestrzeni_n-wymiarowej|Kula zanurzona w przestrzeni n-wymiarowej]] (17kB) * [[Metody_matematyczne_fizyki/Operatory różniczkowe|Operatory różniczkowe]] (91kB) * [[Metody_matematyczne_fizyki/Wprowadzenie do funkcji zespolonej|Wprowadzenie do funkcji zespolonej]] (34kB) * [[Metody_matematyczne_fizyki/Wprowadzenie do wielomianów ortogonalnych|Wprowadzenie do wielomianów ortogonalnych]] (65kB) * [[Metody_matematyczne_fizyki/Funkcji sferyczne w matematyce|Funkcji sferyczne w matematyce]] (32kB) * [[Metody_matematyczne_fizyki/Funkcje Bessela|Funkcje Bessela]] (69kB) * [[Metody_matematyczne_fizyki/Dystrybucje jako funkcje uogólnione|Dystrybucje jako funkcje uogólnione]] (56kB) * [[Metody_matematyczne_fizyki/Szeregi Fouriera|Szeregi Fouriera]] (20kB) * [[Metody_matematyczne_fizyki/Wstęp do transformacji Fouriera|Wstęp do transformacji Fouriera]] (56kB) * [[Metody_matematyczne_fizyki/Wprowadzenie do teorii operatorów liniowych|Wprowadzenie do teorii operatorów liniowych]] (27kB) * [[Metody_matematyczne_fizyki/Grupy i ich reprezentacje|Grupy i ich reprezentacje]] (58kB) * [[Metody_matematyczne_fizyki/Rachunek wariacyjny|Rachunek wariacyjny]] (12kB) * [[Metody_matematyczne_fizyki/Transformacja Laplace'a|Transformacja Laplace'a]] (15kB) * [[Metody_matematyczne_fizyki/Równania różnicowe liniowe|Równania różnicowe liniowe]] (9kB) ** 100%, 25.08.2010 * [[Metody_matematyczne_fizyki/Funkcje Greena|Funkcje Greena]] (35kB) ** 50%, do <small>Definicja operatorowej funkcja Greena</small> 25.08.2010 |} === [[Statystyka matematyczna]] === {| class="wikitable collapsible collapsed" ! (spis modułów aktualizowany 13.08.2010) (467kB) |- | * [[Statystyka matematyczna/Średnie w matematyce statystycznej|Średnie w matematyce statystycznej]] (14kB) : ok. 100% sprawdzone, stare * [[Statystyka_matematyczna/Wprowadzenie_do_rozkładów_zmiennych_losowych|Wprowadzenie do rozkładów zmiennych losowych]] (63kB) : ok. 100% sprawdzone, stare * [[Statystyka_matematyczna/Momenty_statystyczne_ciągłe_i_dyskretne|Momenty statystyczne ciągłe i dyskretne]] (20kB) : ok. 100% sprawdzone, stare * [[Statystyka_matematyczna/Momenty_statystyczne_dla_funkcji_złożonej|Momenty statystyczne dla funkcji złożonej]] (29kB) : ok. 100% sprawdzone, stare * [[Statystyka_matematyczna/Momenty_statystyczne_w_działaniu|Momenty statystyczne w działaniu]] (34kB) : ok. 100% sprawdzone, stare * [[Statystyka_matematyczna/Pobieranie_próby|Pobieranie próby]] (41kB) : ok. 100% sprawdzone, stare * [[Statystyka_matematyczna/Metoda_największej_wiarygodności|Metoda największej wiarygodności]] (52kB) * [[Statystyka_matematyczna/Funkcje charakterystyczne|Funkcje charakterystyczne]] (16kB) * [[Statystyka_matematyczna/Ważniejsze rozkłady_statystyczne|Ważniejsze rozkłady statystyczne]] (6kB) ** [[Statystyka_matematyczna/Twierdzenie_o_rozkładzie_Bernoulliego|Twierdzenie o rozkładzie Bernoulliego]] (12kB) ** [[Statystyka_matematyczna/Twierdzenie_o_rozkładzie_wielomianowym|Twierdzenie o rozkładzie wielomianowym]] (13kB) ** [[Statystyka_matematyczna/Twierdzenie_o_rozkładzie_normalnym_jednowymiarowym|Twierdzenie o rozkładzie normalnym jednowymiarowym]] (67kB) ** [[Statystyka_matematyczna/Twierdzenie_o_rozkładzie_normalnym_wielowymiarowym|Twierdzenie o rozkładzie normalnym wielowymiarowym]] (25kB) ** [[Statystyka_matematyczna/Centralne_twierdzenie_graniczne|Centralne twierdzenie graniczne]] (22kB) ** [[Statystyka_matematyczna/Twierdzenie_o_rozkładzie_χ²|Twierdzenie o rozkładzie χ²]] (15kB) ** [[Statystyka_matematyczna/Twierdzenie_o_rozkładzie_hipergeometrycznym|Twierdzenie o rozkładzie hipergeometrycznym]] (19kB) ** [[Statystyka_matematyczna/Twierdzenie_o_rozkładzie_Poissona|Twierdzenie o rozkładzie Poissona]] (9kB) * [[Statystyka_matematyczna/Błędy_pomiarowe_w_fizyce|Błędy pomiarowe w fizyce]] (10kB) * [[Statystyka_matematyczna/Metoda_najmniejszych_kwadratów|Metoda najmniejszych kwadratów]] (8kB) |} === [[Fale]] === {| class="wikitable collapsible collapsed" ! (spis modułów aktualizowany 13.08.2010) (669kB) |- | * [[Fale/Układy fizyczne, a jego drgania swobodne|Układy fizyczne, a jego drgania swobodne]] (95kB) * [[Fale/Układy fizyczne, a jego drgania o wielu stopniach swobody|Układy fizyczne, a jego drgania o wielu stopniach swobody]] (74kB) * [[Fale/Drgania wymuszone układów harmonicznych|Drgania wymuszone układów harmonicznych]] (82kB) * [[Fale/Opis fal biegnących|Opis fal biegnących]] (59kB) * [[Fale/Odbicie fal klasycznych|Odbicie fal klasycznych]] (19kB) * [[Fale/Impulsy, paczki i modulacje fal|Impulsy, paczki i modulacje fal]] (40kB) * [[Fale/Fale dwu- i trójwymiarowe rozchodzące się w przestrzeni|Fale dwu- i trójwymiarowe rozchodzące się w przestrzeni]] (103kB) * [[Fale/Polaryzacja liniowa, kołowa, eliptyczna fal|Polaryzacja liniowa, kołowa, eliptyczna fal]] (32kB) * [[Fale/Dyfrakcja jako superpozycja bardzo dużej liczby fal|Dyfrakcja jako superpozycja bardzo dużej liczby fal]] (57kB) * [[Fale/Fale w mechanice kwantowej i elektrodynamice klasycznej|Fale w mechanice kwantowej i elektrodynamice klasycznej]] (115kB) |} === [[Mechanika teoretyczna]] === {| class="wikitable collapsible collapsed" ! (spis modułów aktualizowany 13.08.2010) (653 kB) |- | * [[Mechanika teoretyczna/Kinematyka i dynamika klasyczna opisu punktu materialnego|Kinematyka i dynamika klasyczna opisu punktu materialnego]] (130kB) * [[Mechanika teoretyczna/Problem zderzenia cząstek|Problem zderzenia cząstek]] (55kB) * [[Mechanika teoretyczna/Dynamika punktów masowych|Dynamika punktów masowych]] (19kB) * [[Mechanika teoretyczna/Ruch ciał ograniczonych więzami|Ruch ciał ograniczonych więzami]] (33kB) * [[Mechanika teoretyczna/Układ ciał ograniczonych więzami|Układ ciał ograniczonych więzami]] (19kB) * [[Mechanika teoretyczna/Równania Lagrange'a drugiego rodzaju i zasada Hamiltona|Równania Lagrange'a drugiego rodzaju i zasada Hamiltona]] (50kB) * [[Mechanika teoretyczna/Teoria ciała sztywnego i giroskopu|Teoria ciała sztywnego i giroskopu]] (39kB) * [[Mechanika teoretyczna/Kanoniczne metody mechaniki klasycznej|Kanoniczne metody mechaniki klasycznej]] (86kB) * [[Mechanika teoretyczna/Zdeformowane ciała i ich opis kinematyczny|Zdeformowane ciała i ich opis kinematyczny]] (59kB) * [[Mechanika teoretyczna/Zasady zachowania w mechanice materiałów|Zasady zachowania w mechanice materiałów]] (41kB) * [[Mechanika teoretyczna/Tensor napięć a w tym tensor tarcia, a prawo Hooke'a|Tensor napięć a w tym tensor tarcia, a prawo Hooke'a]] (25kB) * [[Mechanika teoretyczna/Teoria sprężystości w przestawieniu klasycznym|Teoria sprężystości w przestawieniu klasycznym]] (40kB) * [[Mechanika teoretyczna/Wprowadzenie do hydrodynamiki|Wprowadzenie do hydrodynamiki]] (63kB) |} === [[Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności]] === {| class="wikitable collapsible collapsed" ! (spis modułów aktualizowany 13.08.2010) (120kB) |- | * [[Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Wstęp do Szczególnej teoria względności|Wstęp do Szczególnej teoria względności]] (80kB) ** Kinematyka (nazwa w spisie treści) ** Dynamika ruchu (nazwa w spisie treści) * [[Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Czterowektory|Czterowektory]] (15kB) * [[Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Praca moc, energia|Praca moc, energia]] (12kB) * [[Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Własności czasoprzestrzeni|Własności czasoprzestrzeni]] (15kB) |} === [[Wstęp do fizyki jądra atomowego]] === {| class="wikitable collapsible collapsed" ! (spis modułów aktualizowany 13.08.2010) (94kB) |- | * [[Wstęp do fizyki jądra atomowego/Nukleony a budowa jądra atomowego|Nukleony a budowa jądra atomowego]] (60kB) *: 40%, do Odchylenie masy (mass excess) [[Wikipedysta:Lethern|Lethern]] ([[Dyskusja Wikipedysty:Lethern|dyskusja]]) 01:23, 25 lis 2010 (CET) * [[Wstęp do fizyki jądra atomowego/Najważniejsze parametry jądra atomowego|Najważniejsze parametry jądra atomowego]] (34kB) |} === [[Elektrodynamika klasyczna]] === {| class="wikitable collapsible collapsed" ! (spis modułów aktualizowany 13.08.2010) (1'110kB) |- | * [[Elektrodynamika klasyczna/Elektrostatyka|Elektrostatyka]] (11kB) ** [[Elektrodynamika klasyczna/Różniczkowe i całkowe prawa dla elektrostatyki|Różniczkowe i całkowe prawa dla elektrostatyki]] (22kB) ** [[Elektrodynamika klasyczna/Pole skalarne|Pole skalarne]] (31kB) ** [[Elektrodynamika klasyczna/Przewodniki|Przewodniki]] (13kB) ** [[Elektrodynamika klasyczna/Rozwinięcia kwadrupolowe|Rozwinięcia kwadrupolowe]] (28kB) ** [[Elektrodynamika klasyczna/Elementarne właściwości materii w polu elektrostatycznym|Elementarne właściwości materii w polu elektrostatycznym]] (17kB) ** [[Elektrodynamika klasyczna/Ciało spolaryzowane a jego pole|Ciało spolaryzowane a jego pole]] (61kB) * [[Elektrodynamika klasyczna/Magnetostatyka|Magnetostatyka]] (19kB) ** [[Elektrodynamika klasyczna/Wektor indukcji magnetycznej|Wektor indukcji magnetycznej]] (20kB) ** [[Elektrodynamika klasyczna/Magnetyczny potencjał wektorowy|Magnetyczny potencjał wektorowy]] (46kB) ** [[Elektrodynamika klasyczna/Elementarne właściwości materii w polu magnetycznym|Elementarne właściwości materii w polu magnetycznym]] (29kB) ** [[Elektrodynamika klasyczna/Prądy związane z polem namagnesowanego ciała|Prądy związane z polem namagnesowanego ciała]] (29kB) * [[Elektrodynamika klasyczna/Przewodnik z prądem elektrycznym|Przewodnik z prądem elektrycznym]] (19kB) * [[Elektrodynamika klasyczna/Indukcja elektromagnetyczna|Indukcja elektromagnetyczna]] (28kB) * [[Elektrodynamika klasyczna/Elektrodynamika Maxwella|Elektrodynamika Maxwella]] (56kB) * [[Elektrodynamika klasyczna/Zasady zachowania a twierdzenia o właściwościach pola elektromagnetycznego|Zasady zachowania a twierdzenia o właściwościach pola elektromagnetycznego]] (56kB) * [[Elektrodynamika klasyczna/Fale elektromagnetyczne w elektrodynamice Maxwella|Fale elektromagnetyczne w elektrodynamice Maxwella]] (99kB) * [[Elektrodynamika klasyczna/Absorpcja i dyspersja w materii|Absorpcja i dyspersja w materii]] (80kB) * [[Elektrodynamika klasyczna/Opis fal prowadzonych|Opis fal prowadzonych]] (73kB) * [[Elektrodynamika klasyczna/Pola skalarne i wektorowe a równania elektrodynamiki Maxwella|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella]] (19kB) * [[Elektrodynamika klasyczna/Rozkłady ciągłe gęstości ładunku i gęstości prądu objętościowego|Rozkłady ciągłe gęstości ładunku i gęstości prądu objętościowego]] (32kB) * [[Elektrodynamika klasyczna/Rozkłady dyskretne ładunków punktowych|Rozkłady dyskretne ładunków punktowych]] (69kB) * [[Elektrodynamika klasyczna/Promieniowanie elektromagnetyczne|Promieniowanie elektromagnetyczne]] (89kB) * [[Elektrodynamika klasyczna/Promieniowanie od ładunków punktowych|Promieniowanie od ładunków punktowych]] (46kB) * [[Elektrodynamika klasyczna/Oddziaływanie promieniowania na materię|Oddziaływanie promieniowania na materię]] (37kB) * [[Elektrodynamika klasyczna/Elektrodynamika relatywistyczna|Elektrodynamika relatywistyczna]] (94kB) * [[Elektrodynamika klasyczna/Zasada wariacyjna w elektromagnetyzmie|Zasada wariacyjna w elektromagnetyzmie]] (30kB) |} === [[Mechanika kwantowa]] === {| class="wikitable collapsible collapsed" ! (spis modułów aktualizowany 13.08.2010) (1'410kB) |- | * [[Mechanika kwantowa/Podstawy mechaniki kwantowej|Podstawy mechaniki kwantowej]] (60kB) * [[Mechanika kwantowa/Teoria atomu wodoru Bohra|Teoria atomu wodoru Bohra]] (21kB) * [[Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|Teoria atomu wodoru Sommerfelda]] (18kB) * [[Mechanika kwantowa/Zjawisko Comptona|Zjawisko Comptona]] (15kB) * Postulaty mechaniki kwantowej ** [[Mechanika kwantowa/Postulat zerowy mechaniki kwantowej|Postulat zerowy mechaniki kwantowej]] (0kB) ** [[Mechanika kwantowa/Postulat pierwszy mechaniki kwantowej|Postulat pierwszy mechaniki kwantowej]] (78kB) ** [[Mechanika kwantowa/Komutacja operatorów fizycznych|Komutacja operatorów fizycznych]] (26kB) ** [[Mechanika kwantowa/Postulat drugi mechaniki kwantowej|Postulat drugi mechaniki kwantowej]] (118kB) ** [[Mechanika kwantowa/Zaawansowane własności funkcji kulistych|Zaawansowane własności funkcji kulistych]] (24kB) ** [[Mechanika kwantowa/Postulat trzeci mechaniki kwantowej|Postulat trzeci mechaniki kwantowej]] (49kB) ** [[Mechanika kwantowa/Postulat czwarty mechaniki kwantowej|Postulat czwarty mechaniki kwantowej]] (55kB) * [[Mechanika kwantowa/Proste przykłady zagadnień kwantowomechanicznych|Proste przykłady zagadnień kwantowomechanicznych]] (96kB) * Wybrane zagadnienia kwantowej fizyki klasycznej dla Hamiltonianu niezależnego od czasu ** [[Mechanika kwantowa/Równanie Ehrenfesta|Równanie Ehrenfesta]] (10kB) ** [[Mechanika kwantowa/Gęstość prądu prawdopodobieństwa a równanie Schrödingera|Gęstość prądu prawdopodobieństwa a równanie Schrödingera]] (10kB) ** [[Mechanika kwantowa/Cząstki o spinie połówkowym|Cząstki o spinie połówkowym]] (37kB) ** [[Mechanika kwantowa/Zakaz Pauliego dla układu wielu cząstek|Zakaz Pauliego dla układu wielu cząstek]] (13kB) ** [[Mechanika kwantowa/Układ dwóch cząstek w mechanice kwantowej|Układ dwóch cząstek w mechanice kwantowej]] (15kB) ** [[Mechanika kwantowa/Kwantowy oscylator harmoniczny|Kwantowy oscylator harmoniczny]] (66kB) ** [[Mechanika kwantowa/Doświadczenie Sterna-Gerlacha i efekt Zeemana|Doświadczenie Sterna-Gerlacha i efekt Zeemana]] (11kB) ** [[Mechanika kwantowa/Rachunek zaburzeń dla równania Schrödingera niezależnego od czasu|Rachunek zaburzeń dla równania Schrödingera niezależnego od czasu]] (21kB) * [[Mechanika kwantowa/Wprowadzenie do teorii wektorów Diraca|Wprowadzenie do teorii wektorów Diraca]] (36kB) * [[Mechanika kwantowa/Kwantowa teoria całkowitego momentu pędu|Kwantowa teoria całkowitego momentu pędu]] (38kB) * [[Mechanika kwantowa/Wprowadzenie do interpretacji fizycznych operatorów|Wprowadzenie do interpretacji fizycznych operatorów]] (77kB) * [[Mechanika kwantowa/Symetrie a prawa zachowania wartości średniej|Symetrie a prawa zachowania wartości średniej]] (41kB) * [[Mechanika kwantowa/Relatywistyczna teoria kwantów Kleina-Gordona|Relatywistyczna teoria kwantów Kleina-Gordona]] (74kB) * [[Mechanika kwantowa/Relatywistyczna teoria kwantów Diraca|Relatywistyczna teoria kwantów Diraca]] (165kB) * [[Mechanika kwantowa/Teoria pola we wzorach Eulera-Lagrange'a|Teoria pola we wzorach Eulera-Lagrange'a]] (48kB) * [[Mechanika kwantowa/Symetria cechowania transformacji ładunkowej|Symetria cechowania transformacji ładunkowej]] (31kB) * [[Mechanika kwantowa/Funkcje Greena w teorii kwantów|Funkcje Greena w teorii kwantów]] (34kB) * [[Mechanika kwantowa/Asymptotyczne właściwości wektora własnego Hamiltonianu a jego przekroje|Asymptotyczne właściwości wektora własnego Hamiltonianu a jego przekroje]] (43kB) * [[Mechanika kwantowa/Wstęp do teorii promieniowania kwantów pola elektromagnetycznego|Wstęp do teorii promieniowania kwantów pola elektromagnetycznego]] (51kB) * [[Mechanika kwantowa/Zasada wariacyjna Schwingera|Zasada wariacyjna Schwingera]] (81kB) |} === [[Fizyka statystyczna]] === {| class="wikitable collapsible collapsed" ! (spis modułów aktualizowany 13.08.2010) (839kB) |- | * [[Fizyka statystyczna/Fizyka fenomenologiczna|Fizyka fenomenologiczna]] (12kB) * [[Fizyka statystyczna/Zasady termodynamiki fenomenologicznej|Zasady termodynamiki fenomenologicznej]] (29kB) ** [[Fizyka statystyczna/Potencjały termodynamiczne|Potencjały termodynamiczne]] (37kB) *** [[Fizyka statystyczna/Definicja różniczki entropii a jego zupełność|Definicja różniczki entropii a jego zupełność]] (21kB) ** [[Fizyka statystyczna/Związki fizyki fenomenologicznej|Związki fizyki fenomenologicznej]] (47kB) ** [[Fizyka statystyczna/Wstęp do fenomenologicznych równań stanu|Wstęp do fenomenologicznych równań stanu]] (11kB) ** [[Fizyka statystyczna/Gazy doskonałe|Gazy doskonałe]] (40kB) ** [[Fizyka statystyczna/Gazy van der Waalsa|Gazy van der Waalsa]] (30kB) ** [[Fizyka statystyczna/Fenomenologiczna teoria przejść fazowych|Fenomenologiczna teoria przejść fazowych]] (42kB) ** [[Fizyka statystyczna/Przemiany fazowe|Przemiany fazowe]] (7kB) ** [[Fizyka statystyczna/Cykle (obiegi) termodynamiczne|Cykle (obiegi) termodynamiczne]] (58kB) * [[Fizyka statystyczna/Wprowadzenie do fizyki statystycznej|Wprowadzenie do fizyki statystycznej]] (65kB) ** [[Fizyka statystyczna/Statystyczna termodynamika|Statystyczna termodynamika]] (18kB) ** [[Fizyka statystyczna/Rozkłady klasyczne w fizyce|Rozkłady klasyczne w fizyce]] (67kB) ** [[Fizyka statystyczna/Zespoły statystyczne w fizyce statystycznej klasycznej|Zespoły statystyczne w fizyce statystycznej klasycznej]] (5kB) *** [[Fizyka statystyczna/Zespół mikrokanoniczny|Zespół mikrokanoniczny]] (29kB) *** [[Fizyka statystyczna/Zespół kanoniczny|Zespół kanoniczny]] (41kB) *** [[Fizyka statystyczna/Wielki zespół kanoniczny|Wielki zespół kanoniczny]] (50kB) *** [[Fizyka statystyczna/Przykłady innych zespołów statystycznych kanonicznych w fizyce klasycznej|Przykłady innych zespołów statystycznych kanonicznych w fizyce klasycznej]] (26kB) ** [[Fizyka statystyczna/Zespoły statystyczne w fizyce statystycznej kwantowej|Zespoły statystyczne w fizyce statystycznej kwantowej]] (38kB) ** [[Fizyka statystyczna/Statystyki w fizyce kwantowej|Statystyki w fizyce kwantowej]] (26kB) ** [[Fizyka statystyczna/Statystyki Fermiego oraz Bosego|Statystyki Fermiego oraz Bosego]] (18kB) ** [[Fizyka statystyczna/Model sieci krystalicznej Debye'a|Model sieci krystalicznej Debye'a]] (14kB) ** [[Fizyka statystyczna/Cząstki o innych statystykach|Cząstki o innych statystykach]] (26kB) ** [[Fizyka statystyczna/Idealne gazy kwantowe |Idealne gazy kwantowe ]] (58kB) ** [[Fizyka statystyczna/Fluktuacje i ruchy Browna|Fluktuacje i ruchy Browna]] (40kB) |} === [[Ogólna teoria względności]] === {| class="wikitable collapsible collapsed" ! (spis modułów aktualizowany 13.08.2010) (758kB) |- | * [[Ogólna teoria względności/Wprowadzenie do ogólnej teorii względności|Wprowadzenie do ogólnej teorii względności]] (94kB) ** Elementy ogólnej teorii względności (nazwa w spisie treści) * [[Ogólna teoria względności/Tensor gęstości energii|Tensor gęstości energii]] (53kB) * [[Ogólna teoria względności/Właściwości skalaru tensora metrycznego|Właściwości skalaru tensora metrycznego]] (14kB) * [[Ogólna teoria względności/Zasada wariacyjna w ogólnej teorii względności|Zasada wariacyjna w ogólnej teorii względności]] (49kB) * [[Ogólna teoria względności/Słabe pola grawitacyjne|Słabe pola grawitacyjne]] (75kB) * [[Ogólna teoria względności/Fizyka w zakrzywionych czasoprzestrzeniach|Fizyka w zakrzywionych czasoprzestrzeniach]] (54kB) * [[Ogólna teoria względności/Promieniowanie grawitacyjne|Promieniowanie grawitacyjne]] (147kB) * [[Ogólna teoria względności/Statyczne rozwiązanie Schwarzschilda w kulistosymetrycznym polu grawitacyjnym|Statyczne rozwiązanie Schwarzschilda w kulistosymetrycznym polu grawitacyjnym]] (75kB) * [[Ogólna teoria względności/Ruch cząstki próbnej wokół masy statycznie sferycznej-rozwiązanie ogólne|Ruch cząstki próbnej wokół masy statycznie sferycznej-rozwiązanie ogólne]] (49kB) * [[Ogólna teoria względności/Geometria statycznych czasoprzestrzeni Schwarzschilda a czarne dziury|Geometria statycznych czasoprzestrzeni Schwarzschilda a czarne dziury]] (112kB) * Rodzaje współrzędnych stosowane w opisie pola kulistosymetrycznego ** [[Ogólna teoria względności/Współrzędne Kruskala-Szekeresa|Współrzędne Kruskala-Szekeresa]] (19kB) ** [[Ogólna teoria względności/Współrzędne Eddingtona-Finkelsteina|Współrzędne Eddingtona-Finkelsteina]] (18kB) ** [[Ogólna teoria względności/Współrzędne cylindryczne a tunel Einsteina-Rossena|Współrzędne cylindryczne a tunel Einsteina-Rossena]] (7kB) |} == Notatki == Miejscami dodałem <nowiki><!--POPRAW MNIE--></nowiki>, są to miejsca które trzeba napisać od początku etc. Moduły nie podlinkowane nigdzie: *[[Wikipedysta:Persino/Fizyka matematyczna/Analiza_matematyczna/Ciągi_w_matematyce]] *[[Wikipedysta:Persino/Fizyka matematyczna/Analiza_matematyczna/Równania_różniczkowe]] *[[Wikipedysta:Persino/Fizyka matematyczna/Analiza_matematyczna/Rozmaitości_liniowe_i_ich_właściwości]] *[[Wikipedysta:Persino/Fizyka matematyczna/Algebra/Macierze_i_wyznaczniki]] *[[Wikipedysta:Persino/Fizyka matematyczna/Analiza matematyczna/Funkcje uwikłane]] *[[Wikipedysta:Persino/Fizyka matematyczna/Teorie względności/Ogólna teoria względności/Równania pola elektromagnetycznego w geometrii zakrzywionej]] *[[Wikipedysta:Persino/Szczególna teoria względności/Mechanika relatywistyczna]] *[[Wikipedysta:Persino/Wyznaczniki funkcjonalne i ich własności]] *[[Wikipedysta:Persino/Pochodne n-tego rzędu]] 40kzi5iyyt0jgcfz1dbqje7csrltfz0 Wikipedysta:Persino/Mechanika relatywistyczna 2 20256 548282 404687 2026-07-25T12:39:24Z Persino 2851 548282 wikitext text/x-wiki <noinclude>{{UnikatowaStronaStart}}</noinclude> {{Status|-25%}} ==Zasada najmniejszego działania== Całką najmniejszego działania nazywamy całkę określoną wzorem poniżej, która jest zależna tylko od wartości prędkości cząstki: {{CentrujWzór|<MATH>S=\int_{t_1}^{t_2}Ldt=-\int_{t_1}^{t_2}m_0c^2\sqrt{1-{{v^2}\over{c^2}}}dt\;</MATH>|5.1}} Lagrangianem występującej w powyższym wzorze określamy przy pomocy zmiennej, która jest prędkością cząstki, a także przy pomocy masy spoczynkowej cząstki m<sub>0</sub>: {{CentrujWzór|<MATH>L=-m_0c^2\sqrt{1-{{v^2}\over{c^2}}}\;</MATH>|5.2}} Możemy rozwinąć w szereg Tayllora z dokładnością do zmiennej kwadratowy, gdy prędkość cząstki jest o wiele mniejsza od prędkości światła wedle sposobu: {{CentrujWzór|<MATH>L\simeq-m_0c^2\left(1-{{v^2}\over{2c^2}}\right)=-m_0c^2+{{m_0v^2}\over{2}}\;</MATH>|5.3}} Widzimy, że ona jest zależna od wartości prędkości i jest ona z dokładnością do stałej równa energii kinetycznej cząstki znanej z mechaniki klasycznej Newtona. ==Energia i pęd== Pędem cząstki nazywamy pochodną cząstkową lagrangianu {{linkWzór|5.2}} względem wektora prędkości cząstki, czyli wedle wzoru: {{CentrujWzór|<MATH>\vec{p}={{m_0\vec{v}}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\;</MATH>|5.4}} Wzory, w której prędkości cząstki się nie zmieniają co do modułu, lub gdy kierunek prędkości cząstki się nie zmieni, co w obu przypadkach siła jest wprost proporcjonalna do przyspieszenia cząstki. {|width=100%|- |{{CentrujWzór|<MATH>\vec{F}={{d\vec{p}}\over{dt}}={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}{{d\vec{v}}\over{dt}}\;</MATH>|5.5}} |{{CentrujWzór|<MATH>\vec{F}={{d\vec{p}}\over{dt}}={{m_0}\over{({1-{{v^2}\over{c^2}}}})^{{{3}\over{2}}}}{{d\vec{v}}\over{dt}}\;</MATH>|5.6}} |} Energią pędu definiujemy wzorem poniżej, z którego wyznaczymy energię cząstki, zatem w takim razie otrzymujemy wzór: {{CentrujWzór|<MATH>E=\vec{p}\vec{v}-L={{m_0v^2}\over{\sqrt{1-{{v^2}\over{c^2}}}}}+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\left(v^2+c^2\left(1-{{v^2}\over{c^2}}\right)\right)={{m_0c^2}\over{\sqrt{1-{{v^2}\over{c^2}}}}}</MATH>|5.7}} We wzorze {{linkWzór|5.7}}, została wyprowadzona w punkcie {{linkWzór|3.3|Szczególna_teoria_względności/Praca_moc,_energia}}, ale gdy natomiast gdy prędkość cząstki jest równa zero, to cząstka również ma energię zwaną energią spoczynkową, którą podamy we wzorze poniżej: {{CentrujWzór|<MATH>E=m_0c^2\;</MATH>|5.8}} Całkowitą energią relatywistyczną cząstki możemy rozłożyć w szereg Tayllora, co piszemy: {{CentrujWzór|<MATH>E={{m_0c^2}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\simeq m_0c^2\left(1-{{v^2}\over{2c^2}}\right)=m_0c^2+{{m_0v^2}\over{2}}\;</MATH>|5.9}} Widzimy, że według wzoru napisanego w punkcie {{linkWzór|5.9}} energia cząstki jest sumą energii spoczynkowej cząstki i jej energii kinetycznej. Patrząc na wzór na pęd cząstki {{linkWzór|5.4}} i na wzór na energię całkowitą cząstki {{linkWzór|5.7}}, zatem pęd cząstki wyrażamy wzorem w zależności od energii całkowitej cząstki i jego wektora, którą to wielkość wektora pędu w zależności od energii i prędkości cząstki piszemy wzorem: {{CentrujWzór|<MATH>\vec{p}={{E\vec{v}}\over{c^2}}\;</MATH>|5.10}} Z pooglądajmy sobie teraz na całkę działania {{linkWzór|5.1}}, którą można tez napisać spoglądając jeszcze na wzór na długość linii światła wedle {{linkWzór|1.69|Szczególna_teoria_względności/Szczególna_teoria_względności}}, zatem tą naszą całkę działania piszemy wedle wzoru: {{CentrujWzór|<MATH>S=\int_{a}^bds\;</MATH>|5.11}} Wtedy możemy napisać wzór na wariację całki działania {{linkWzór|5.11}}, które to działania piszemy wedle {{linkWzór|2.6|Szczególna_teoria_względności/Czterowektory_i_tensor_asymetryczny}}, zatem na podstawie tego piszemy wykorzystując przy tym całkowanie przez części poniższej całki, zatem: {{CentrujWzór|<MATH>\delta S=-m_0c\int_{a}^b\delta ds=-m_0c\int_{a}^b{{dx_{\alpha}\delta dx^{\alpha}}\over{ds}}=-m_0c\int_{a}^bu_{\alpha}d\delta x^{\alpha}=\;</MATH><BR><MATH>=-m_0cu_{\alpha}\delta x^{\alpha}\Bigg|^b_a+m_0c\int_{a}^b\delta x^{\alpha}{{du^{\alpha}}\over{ds}}ds\;</MATH>|5.12}} Ponieważ jest spełniona zasada najmniejszego działania, to pierwszy wyraz znajdujący się w punkcie {{linkWzór|5.12}} znika na podstawie, że wariacja funkcji x<sup>&alpha;</sup> w punktach zmiennej x<sup>&alpha;</sub>=a i x<sup>&alpha;</sub>=b jest równa zero, zatem jeśli założymy, że wariacja funkcji S jest zawsze równa zero, zatem na podstawie tego możemy powiedzieć, że pochodna elementu czterowektora prędkości względem interwału czasoprzestrzennego jest równa zero, zatem dla cząstki swobodnej czteropredkość jest wielkością niezmienną. Mając wzór na czteropęd, którą napisaliśmy w punkcie {{LinkWzór|2.11|Szczególna_teoria_względności/Czterowektory_i_tensor_asymetryczny}}, wtedy transformacja pędów przestrzennych i energii cząstki z jednego układu do drugiego korzystając z transformacji współrzędnych z jednego układu współrzędnych do drugiego piszemy wedle wzorów: {|width=100%|- |{{CentrujWzór|<MATH>p_x^'=\gamma\left(p_x-\beta{{E}\over{c}}\right)={{p_x-{{V}\over{c^2}}E}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\;</MATH>|5.13}} |{{CentrujWzór|<MATH>{{E^'}\over{c}}=\gamma\left({{E}\over{c}}+\beta p_x\right)\Rightarrow E^'={{E-Vp_x^'}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\;</MATH>|5.14}} |} Aby wykorzystać relatywistyczne równanie Hamiltona-Jacobiego {{linkWzór|7.66|Fizyka_matematyczna/Mechanika_teoretyczna/Analityczne_metody_mechaniki_klasycznej|MT}} dla hamiltonianu cząstki swobodnej , którego pierwszym argumentem są współrzędne uogólnionych położeń, a drugie współrzędne uogólnionego pędu zdefiniowanego w punkcie {{linkWzór|7.64|Fizyka_matematyczna/Mechanika_teoretyczna/Analityczne_metody_mechaniki_klasycznej|MT}} (przy czym tutaj S nie jest całką działania dla naszego niżej rozważanego równania), zatem to nasze równanie jest napisane równością: {{CentrujWzór|<MATH>{{1}\over{c^2}}\left({{\partial S}\over{\partial t}}\right)^2-\left({{\partial S}\over{\partial x}}\right)^2-\left({{\partial L}\over{\partial y}}\right)^2-\left({{\partial S}\over{\partial z}}\right)^2=m_0^2c^2\;</MATH>|5.15}} Jeśli napiszemy wzór na S w zależności od S', który to przestawiamy równaniem: {{CentrujWzór|<MATH>S=S^'-m_0c^2t\;</MATH>|5.16}} Po podstawieniu {{LinkWzór|5.16}} do {{LinkWzór|5.15}}, wtedy dostajemy równanie: {{CentrujWzór|<MATH>{{1}\over{c^2}}\left({{\partial S^'}\over{\partial t}}-m_0c^2\right)^2-\left({{\partial S^'}\over{\partial x}}\right)^2-\left({{\partial S^'}\over{\partial y}}\right)^2-\left({{\partial S^'}\over{\partial z}}\right)^2=m_0^2c^2\Rightarrow\;</MATH><BR><MATH> \Rightarrow{{1}\over{c^2}}\left[\left({{\partial S^'}\over{\partial t}}\right)^2+m_0^2c^4-2m_0c^2{{\partial S^'}\over{\partial t}}\right]-\left({{\partial S^'}\over{\partial x}}\right)^2-\left({{\partial S^'}\over{\partial y}}\right)^2-\left({{\partial S^'}\over{\partial z}}\right)^2=m^2_0c^2\Rightarrow</MATH><BR><MATH>\Rightarrow {{1}\over{2m_0c^2}}\left({{\partial S}\over{\partial t}}\right)^2-{{\partial S^'}\over{\partial t}}-{{1}\over{2m_0}}\left[\left({{\partial S^'}\over{\partial x}}\right)^2+\left({{\partial S^'}\over{\partial y}}\right)^2+\left({{\partial S^'}\over{\partial z}}\right)^2\right]=0 </MATH>|5.16}} Gdy prędkość światła dąży do nieskończoności, to wtedy równanie {{linkWzór|5.16}} przechodzi w równość Hamiltona-Jacobiego dla układu opisywanego przez hamiltonian klasyczny. ==Przekształcenie rozkładu funkcji prawdopodobieństwa== Wyliczmy czemu jest równa infinitezymalna objętość w nowym układzie odniesienia względem objętości w starym układzie odniesienia oraz korzystając z definicji transformacji pędów ze starego układu do nowego, które ta wspomniana objetość przestawiamy wzorem: {{CentrujWzór|<MATH>dp_xdp_ydp_z=|J|dp_x^'dp_y^'dp_z^'=\gamma dp_x^'dp_y^'dp_z^'\Rightarrow dpxdp_ydp_z={{E}\over{m_0c^2}}dp_x^'dp_y^'dp_z^'\Rightarrow</MATH><BR><MATH>\Rightarrow {{dp_xdp_ydp_z}\over{E}}={{dp_x^'dp^'dp_z}\over{m_0c^2}}\;</MATH>|5.17}} Na podstawie obliczeń przeprowadzonych w punkcie {{LinkWzór|5.17}}, dochodzimy do wniosku, że wielkość: {{CentrujWzór|<MATH>{{dp_xdp_ydp_z}\over{E}}\;</MATH>|5.18}} jest wielkością niezmienniczą, że względu na wybór układu współrzędnych, w których to liczymy naszą powyższe wyrażenie. Prawdopodobieństwo infinitezymalne, że układ będzie posiadał dany pęd jest określany wzorem: {{CentrujWzór|<MATH>f(\vec{p})dp_xdp_ydp_z=f(\vec{p})E{{dp_xdp_ydp_z}\over{E}}\;</MATH>|5.19}} Na podstawie tego, że wielkość {{linkWzór|5.18}} jest niezmiennicza, to wtedy zachodzi transformacja gęstości prawdopodobieństwa, że cząstka posiada pęd <MATH>\vec{p}\;</MATH>, zatem w takim przypadku możemy powiedzieć: {{CentrujWzór|<MATH>f^'(\vec{p})={{f(\vec{p})E}\over{E^'}}\;</MATH>|5.20}} Objętości w układzie według wzoru {{linkWzór|4.6|Szczególna_teoria_względności/Własności_czasoprzestrzeni}} transformują się według schematów: {|width=100%|- |{{CentrujWzór|<MATH>dV=dV_0\sqrt{1-{{v^2}\over{c^2}}}=dV_0{{m_0c^2}\over{E}}\;</MATH>|5.21}} |{{CentrujWzór|<MATH>dV^'=dV_0\sqrt{1-{{v'^2}\over{c^2}}}=dV_0{{m_0c^2}\over{E^'}}\;</MATH>|5.22}} |} Jeśli podzielimy obie strony wzorów {{linkWzór|5.21}} przez {{LinkWzór|5.22}} przez siebie, wtedy otrzymamy wzór: {{CentrujWzór|<MATH>{{dV}\over{dV^'}}={{E^'}\over{E}}\;</MATH>|5.23}} Obliczmy infinitezymalną objętość d&tau; w rozważanej przestrzeni fazowej, korzystając przy tym ze wzoru {{linkWzór|5.23}} i na niezmiennoczość wyrażanie {{linkWzór|5.18}} wedle schematu poniżej: {{CentrujWzór|<MATH>d\nu=dp^'_xdp^'_ydp^'_zdV'=E^'{{dp_xdp_ydp_zdV}\over{E}}{{E}\over{E^'}}=dp_xdp_ydp_z\;</MATH>|5.24}} Obliczenia {{LinkWzór|5.24}} wskazują na to, że infinitezymalne prawdopodobieństwo jest wielkością niezmienniczą, a także objętość infinitezymalna w przestrzeni fazowej (przestrzeń pędów i położeń) jest wielkością nieimienniczą, stąd dochodzimy do wniosku, że gęstość, że cząstka posiada pęd <MATH>\vec{p}\;</MATH> i położenie <MATH>\vec{r}\;</MATH>, którą posiada dana cząstka jest określana przez wzór poniżej i która też jest wielkością niezmienniczą: {{CentrujWzór|<MATH>f^'(\vec{r}^',\vec{p}^')=f(\vec{r},\vec{p})\;</MATH>|5.25}} ==Moment pędu== Teraz rozważmy nieskończenie mały obrót cząstki, tak by otrzymać nowe współrzędne kontrawariantne, zatem nasz wzór opisujący nasze przekształcenie piszemy w postaci tensorowej: {{CentrujWzór|<MATH>x^{'i}-x^i=x_k\delta \Omega^{ik}\;</MATH>|5.26}} Obrót o pewien kąt spełnia własność taką , że długość przetransformowanych wektorów nie zmieniają swej długości podczas tego przekształcenia tutaj rozważanego, i biorąc na uwadze, że x<sup>'i</sup> od x<sup>i</sub> praktycznie niczym się nie różnią, zatem na podstawie tych rozważań możemy napisać tożsamość: {{CentrujWzór|<MATH>x^{'i}x_i-x^ix_i=x_kx_j\delta\Omega^{ik}\Rightarrow x^ix^k\delta\Omega_{ik}=0\;</MATH>|5.27}} Końcowa równość {{linkWzór|5.27}} spełniona jest przy dowolnych x<sup>i</sup>, ale wiedząc, że tensor x<sup>i</sup>x<sup>k</sup> jest tensorem symetrycznym, ale ponieważ iloczyn tensora symetrycznego z tensorem antysymetrycznym &Omega;<sub>ik</sub> jest równe zero, zatem na podstawie tego możemy porysować: {{CentrujWzór|<MATH>\delta\Omega_{ik}=-\delta\Omega_{ki}\;</MATH>|5.28}} Patrząc na tą cześć wariacji pewnego funkcjonału {{linkWzór|5.12}}, czyli na pierwszy jego wyraz, którego to wariacja jest równa zero, zatem na tej podstawie możemy powiedzieć: {{CentrujWzór|<MATH>\delta S=-\sum p^i\delta x_i\Bigg|_a^b=0\;</MATH>|5.29}} Patrząc na wzór {{linkWzór|5.59}}, wtedy możemy powiedzie <MATH>\delta x_i=\delta\Omega_{ik}x^k\;</MATH>, zatem podstawiając ten wniosek do {{linkWzór|5.29}}, wtedy dostajemy wniosek: {{CentrujWzór|<MATH>\delta S=-\delta\Omega_{ik}\sum p^ix^k\Bigg|_a^b\;</MATH>|5.30}} Tensor <MATH>_{\sum p_ix^k}\;</MATH> możemy rozłożyć na część symetryczną i asymetryczną i który jest pomnożony przez tensor asymetrycznym, wtedy dochodzimy do wniosku: {{CentrujWzór|<MATH>\delta S=-{{1}\over{2}}\delta\Omega_{ik}\sum (p^ix^k+p^ix^k)\Bigg|_a^b=-\delta\Omega_{ik}{{1}\over{2}}\sum\left(p^ix^k-p^ix^i\right)\Bigg|^b_a\;</MATH>|5.31}} Ale ponieważ wariacja funkcjonału S jest równa zero, zatem na podstawie tego również współczynnik stojące przy &delta;&Omega;<sub>ik</sub> są równe zero, stąd otrzymujemy, że współczynniki stojące przy &delta;&Omega;<sub>i</sub> są równy zero, zatem na podstawie tego tensor podany poniżej M<sup>ik</sup> jest stała ruchu: {{CentrujWzór|<MATH>M^{ik}=\sum(x^ip^k-x^kp^i)\;</MATH>|5.32}} Współrzędne przestrzenne pokrywają się ze współrzędnymi zwykłego momentu pędu, tzn. że według <MATH>_{\vec{M}=\sum\vec{r}\times\vec{p}}\;</MATH> i według {{linkWzór|5.32}} i powracając jeszcze raz na początek zdania, wtedy dostajemy wnioski: {|width=100%|- |{{CentrujWzór|<MATH>M^{23}=M_x\;</MATH>|5.33}} |{{CentrujWzór|<MATH>-M^{13}=M_y\;</MATH>|5.34}} |{{CentrujWzór|<MATH>M^{12}=M_z\;</MATH>|5.35}} |} Określmy czemu jest równy elementy składowe tensora {{linkWzór|5.64}}, tzn. składowe <MATH>_{M^{01},M^{02},M^{03}}\;</MATH>, zatem na podstawie tego możemy napisać: {{CentrujWzór|<MATH>(M^{01},M^{02},M^{03})=c\sum(t\vec{p}-{{E\vec{r}}\over{c^2}})\;</MATH>|5.36}} Ogólnie składowe tensora M<sup>ik</sup> określamy na podstawie wzoru {{linkWzór|5.36}}, a także z tożsamości {{linkWzór|5.33}}, {{LinkWzór|5.34}} i na samym końcu {{linkWzór|5.35}}, a także z definicji tensora antysymetrycznego {{LinkWzór|2.21|Szczególna_teoria_względności/Czterowektory i tensor asymetryczny}}, przestawiamy tensor M<sup>ik</sup> wedle schematu jak w punkcie {{linkWzór|2.22|Szczególna_teoria_względności/Czterowektory i tensor asymetryczny}}, co jest przestawieniem symbolicznym wspomnianego tensora antysymetrycznego: {{CentrujWzór|<MATH>M^{ik}=\left(c\sum\left(t\vec{p}-{{E\vec{r}}\over{c^2}}\right),-\vec{M}\right)\;</MATH>|5.37}} Zajmijmy się teraz tensorem {{linkWzór|5.69}}, który jest wielkości stałą na podstawie {{LinkWzór|5.30}} i {{linkWzór|5.32}} i po podzieleniu tego przez przez całkowitą energię układu <MATH>_{\sum E}\;</MATH>, w takim razie dostajemy, który jest wielkością stałą: {{CentrujWzór|<MATH>{{\sum E\vec{r}}\over{\sum E}}-t{{c^2\sum \vec{p}}\over{\sum E}}=\operatorname{const}\;</MATH>|5.38}} Oznaczmy teraz jako wektor wodzący układu ciała w jako zależność położeń i energię poszczególnych ciał wchodzących w skład układu. {{CentrujWzór|<MATH>\vec{R}={{\sum E\vec{r}}\over{\sum E}}\;</MATH>|5.39}} Na podstawie przestawienia wektor wodzącego układu ciał, to wtedy wzór {{linkWzór|5.38}} określamy wzorem: {{CentrujWzór|<MATH>R-t{{c^2\sum\vec{p}}\over{\sum E}}=\operatorname{const}\;</MATH>|5.39}} Korzystając z zasady zachowania energii i pędu dochodzimy do wniosku, że czynnik stojący przy t jest wielkością stałą, zatem na podstawie tego możemy powiedzieć, że prędkość układu mas wyraża się wzorem: {{CentrujWzór|<MATH>\vec{V}={{c^2\sum\vec{p}}\over{\sum E}}\;</MATH>|5.40}} Gdy przyjmować będziemy, że w przypadku małych prędkości z porównaniu z prędkością światła, wtedy poszczególne energię E piszemy jako <MATH> E\simeq m_0c^2\;</MATH>, w takim przypadku możemy napisać równość {{linkWzór|5.39}}, a także {{linkWzór|5.40}} w postaci dla przypadku nierelatywistycznego: {|width=100%|- |{{CentrujWzór|<MATH>\vec{R}={{\sum E\vec{r}}\over{\sum E}}\simeq{{\sum m_0c^2\vec{r}}\over{\sum m_0c^2}}={{\sum m_0\vec{r}}\over{\sum m_0}}\;</MATH>|5.41}} |{{CentrujWzór|<MATH>\vec{V}={{c^2\sum m_0\vec{v}}\over{\sum m_0 c^2}}={{\sum m_0\vec{v}}\over{\sum m_0}}\;</MATH>|5.42}} |} Widzimy, że wzór {{linkWzór|5.41}} jest pochodną zupełną obu stron równania {{linkWzór|5.42}}, tak jak należało oczekiwać dla przypadku nierelatywistycznego. <noinclude>{{kreska nawigacja|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności||Własności czasoprzestrzeni}}</noinclude><noinclude>{{UnikatowaStronaKoniec}}</noinclude> 3yfrschsufh6ef3ps8gj3d8919xtzo1 Niemiecki/Słowotwórstwo/Zrostek/Tabela zrostków derywacyjnych 0 22422 548323 543834 2026-07-26T07:54:06Z EdytaT 2664 /* Sufixoidy (Suffixoide) */ 548323 wikitext text/x-wiki {{Podrozdział|[[Niemiecki|Język niemiecki]]<br>[[Niemiecki/Słowotwórstwo|Słowotwórstwo]]|Tabela zrostków derywacyjnych}} == Zrostki derywacyjne (''Derivationsaffixe'') w języku niemieckim == === Afiksy rzeczownikowe (''Nominalaffixe'') === {|class="wikitable" |+ ! Przedrostki (''Präfixe'') ! Przedrostki (''Präfixe'')<br> pochodzenia obcego ! Przyrostki (''Suffixe'') ! Przyrostki (''Suffixe'')<br> pochodzenia obcego |- | erz-, ge-, haupt-, [http://pl.wiktionary.org/wiki/miss- miss-], [http://pl.wiktionary.org/wiki/un- un-], [http://pl.wiktionary.org/wiki/ur- ur-] | a-/an-, anti-, de-/des-, dis-, ex- hyper-, in-, inter-, ko-/kon-, kom-, non-, prä-, pro-, re-, super-, trans-, ultra- | [http://pl.wiktionary.org/wiki/-bold -bold], [http://pl.wiktionary.org/wiki/-chen -chen], [http://pl.wiktionary.org/wiki/-de -de], [http://pl.wiktionary.org/wiki/-e -e], [http://pl.wiktionary.org/wiki/-ei -(er/el)ei], [http://pl.wiktionary.org/wiki/-er -er], [http://pl.wiktionary.org/wiki/-heit -heit], [http://pl.wiktionary.org/wiki/-keit -keit]/[http://pl.wiktionary.org/wiki/-igkeit -igkeit], [http://pl.wiktionary.org/wiki/-icht -icht], [http://pl.wiktionary.org/wiki/-ian -ian]/[http://pl.wiktionary.org/wiki/-jan -jan], [http://pl.wiktionary.org/wiki/-i -i], [http://pl.wiktionary.org/wiki/-in -in], [http://pl.wiktionary.org/wiki/-kein -kein], [http://pl.wiktionary.org/wiki/-ler -ler], [http://pl.wiktionary.org/wiki/-ling -ling], [http://pl.wiktionary.org/wiki/-ner -ner], [http://pl.wiktionary.org/wiki/-nis -nis], [http://pl.wiktionary.org/wiki/-or -or], [http://pl.wiktionary.org/wiki/-rich -rich], [http://pl.wiktionary.org/wiki/-s -s], [http://pl.wiktionary.org/wiki/-sal -sal], [http://pl.wiktionary.org/wiki/-schaft -schaft], [http://pl.wiktionary.org/wiki/-sel -sel], [http://pl.wiktionary.org/wiki/-t -t], [http://pl.wiktionary.org/wiki/-tel -tel], [http://pl.wiktionary.org/wiki/-tum -tum], [http://pl.wiktionary.org/wiki/-ung -ung], [http://pl.wiktionary.org/wiki/-wesen -wesen] | -ament/-ement, -ant/-ent, -anz/-enz, -age, -ar/-är, -arium, -at, -aille, -ade, -asmus/[http://pl.wiktionary.org/wiki/-de -ismus], -ee, -elle, -esse, -ette, -(er)ie, -eur, -ier, -iere, -ik, -iker, -ine, -(at/t/x)ion, [http://pl.wiktionary.org/wiki/-de -ist], -(i)tät, -(at/it)or, -ose, -ur |- |} === Afiksy przymiotnikowe (''Adjektivaffixe'') === {|class="wikitable" |+ ! Przedrostki (''Präfixe'') ! Przedrostki (''Präfixe'')<br> pochodzenia obcego ! Przyrostki (''Suffixe'') ! Przyrostki (''Suffixe'')<br> pochodzenia obcego |- | erz-, [http://pl.wiktionary.org/wiki/miss- miss-], [http://pl.wiktionary.org/wiki/un- un-], [http://pl.wiktionary.org/wiki/ur- ur-] | a-/an-, anti-, de-/des-, dis-, ex- hyper-, in-/il-/-im/-ir, inter-, ko-/kon-/kor-, non-, par-, post-, prä-, pro-, super-, trans-, ultra- | [http://pl.wiktionary.org/wiki/-bar -bar], [http://pl.wiktionary.org/wiki/-ern -e(r)n], [http://pl.wiktionary.org/wiki/-er -er], [http://pl.wiktionary.org/wiki/-fach -fach], [http://pl.wiktionary.org/wiki/-haft -haft], [http://pl.wiktionary.org/wiki/-icht -icht], [http://pl.wiktionary.org/wiki/-ig -ig], [http://pl.wiktionary.org/wiki/-isch -isch], [http://pl.wiktionary.org/wiki/-lich -lich], [http://pl.wiktionary.org/wiki/-los -los], [http://pl.wiktionary.org/wiki/-sam -sam], [http://pl.wiktionary.org/wiki/-voll -voll] | -abel/-ibel, -al/-ell, -ant/-ent, -ar/-är, -esk, -iv, -oid, -os/-õs |- |} === Afiksy czasownikowe (''Verbalaffixe'') === {|class="wikitable" |+ ! Przedrostki (''Präfixe'') ! Przedrostki (''Präfixe'')<br> pochodzenia obcego ! Przyrostki (''Suffixe'') ! Przyrostki (''Suffixe'')<br> pochodzenia obcego |- | [http://pl.wiktionary.org/wiki/ab- ab-], [http://pl.wiktionary.org/wiki/an- an-], [http://pl.wiktionary.org/wiki/auf- auf-], [http://pl.wiktionary.org/wiki/aus- aus-], [http://pl.wiktionary.org/wiki/be- be-], bei-, dar-, ein-, [http://pl.wiktionary.org/wiki/ent- ent-], er-, ge-, los-, [http://pl.wiktionary.org/wiki/miss- miss-], nach-, ob, über-, [http://pl.wiktionary.org/wiki/ver- ver-], vor-, weg-, wider-, zer-, zu- | de-/des-/dis-, in-, inter-, ko-/kom-/kon-/kor-/kol-, prä-, re-, trans- | -ig, -(is/ifiz)ier, -(e)l, -(e)r | |- |} === Afiksy przysłówkowe (''Adverbialaffixe'') === {|class="wikitable" |+ ! Przedrostki (''Präfixe'') ! Przedrostki (''Präfixe'')<br> pochodzenia obcego ! Przyrostki (''Suffixe'') ! Przyrostki (''Suffixe'')<br> pochodzenia obcego |- | | | -dings, -ens, -halben/-halber, hin-, lei, -lings, -mals, -maßen, -s, -wärts, -weg, -weise | |- |} === Sufixoidy (''Suffixoide'') === Sufixoidy (''Suffixoide''),należące do grupy półafiksów, to cząstki słowotwórcze, które stoją na pograniczu samodzielnego słowa i przyrostka. W nowym złożeniu zatracają swoje pierwotne znaczenie i pełnią funkcję cząstki tworzącej nowe słowo. * [http://pl.wiktionary.org/wiki/-artig -artig] * [http://pl.wiktionary.org/wiki/-arm -arm] * [http://pl.wiktionary.org/wiki/-feindlich -feindlich] * [http://pl.wiktionary.org/wiki/-fest -fest] * [http://pl.wiktionary.org/wiki/-förmig -förmig] * [http://pl.wiktionary.org/wiki/-frei -frei] * [http://pl.wiktionary.org/wiki/-freundlich -freundlich] * [http://pl.wiktionary.org/wiki/-gemäß -gemäß] * [http://pl.wiktionary.org/wiki/-haltig -haltig] * [http://pl.wiktionary.org/wiki/-krank -krank] * [http://pl.wiktionary.org/wiki/-los -los] * [http://pl.wiktionary.org/wiki/-mäßig -mäßig] * [http://pl.wiktionary.org/wiki/-reich -reich] * [http://pl.wiktionary.org/wiki/-teilig -teilig] * [http://pl.wiktionary.org/wiki/-voll -voll] * [http://pl.wiktionary.org/wiki/-werk -werk] * [http://pl.wiktionary.org/wiki/-wert -wert] {{Przypisy}} <!-- https://www.duden.de/sprachwissen/sprachratgeber/Die-Suffixe-los-und-weise --> o9ia5wndk4lom64p6dtxlhk3obeud8y Wstęp do fizyki cząstek elementarnych/Cząstki elementarne 0 24967 548291 513475 2026-07-25T13:05:43Z Persino 2851 548291 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> Zajmować się tutaj będziemy poziomem cząstek elementarnych, tzn. 1 TeV=10{{Sup|12}}eV, przypominając przy tym, że poziom atomowy jest o energii ~10-10{{Sup|4}} przy wielkości r~10{{Sup|-10}}, a poziom jądrowy jest przy energiach ~10{{Sup|6}}-10{{Sup|8}}eV przy odległościach r~10{{Sup|-15}}=1 fm (fermi). == Zdolność rozdzielcza wiązki padającej na badaną cząstkę == W fizyce cząstek elementarnych jeśli do badania cząstek elementarnych używa się dużych energii, co można policzyć dzięki jej zdolności rozdzielczej &lambda; równej &lambda;=h/p. Jeśli płaszczyzna padania cząstek o pędzie p jest pod kątem &theta;, wtedy zdolność rozdzielczą liczymy jako: {{CentrujWzór|<MATH>\Delta r\simeq{{\lambda}\over{\sin\theta}}={{h}\over{p\sin\theta}}\simeq{{h}\over{q}}\;</MATH>|1.1}} Gdzie q jest to pęd przekazywany cząstkom lub fotonom, gdy przekazywany jest pęd na badanym przedmiocie. W fizyce cząstek elementarnych cząstki uważa się za niepunktowe jeżeli inne cząstki do badania tej cząstki są o zdolności rozdzielnej <MATH>\Delta r\;</MATH> mniejszej od rozmiaru badanej cząstki. == Układ jednostek w fizyce cząstek elementarnych == W fizyce cząstek elementarnych rozmiary są rzędu 10{{Sup|-15}}, a masy nasza są rzedu 10{{Sup|-27}}, i dlatego używa się za jednostkę długości 1 fm równej 10{{Sup|-15}}, np. średnica protonu jest 0,8 fm. Jednostkami energii jest GeV, dlatego jednostką masy jest GeV/c{{Sup|2}}. Często w obliczeniach pojawia się wielkość {{Formuła|<MATH>\hbar=h/2\pi\;</MATH>}}. A jednostce czasu odpowiada odwrotność jego {{Formuła|<MATH>\hbar/GeV\;</MATH>}}. W fizyce cząstek elementarnych występuje następujące stałe: * '''długość''': 1 fm=10{{Sup|-15}} m, * '''energia''': 1 GeV=10{{Sup|9}}eV=1,602&middot;10{{Sup|-10}} J, * '''masa E/c{{Sup|2}}''': 1 GeV/c{{Sup|2}}=1,78&middot;10{{Sup|-27}} kg, * '''stała kreślona''': {{Formuła|<MATH>\hbar=h/2\pi</MATH>}}= 6,588&middot;10{{Sup|-25}} GeV&middot;s=1,055&middot;10{{Sup|-34}}J&middot;s, * '''c'''=2,998&middot;10{{Sup|23}}fm&middot;s{{Sup|-1}}=2,998&middot;10{{Sup|8}}m&middot;s{{Sup|-1}}, * {{Formuła|<MATH>\hbar c</MATH>}}=0,1975 GeV&middot;fm=3,162&middot;10{{Sup|-26}}J&middot;m. W fizyce wysokich energii stosuje się układ jednostek naturalne tzn. {{Formuła|<MATH>\hbar=c=1\;</MATH>}}. Stosując jednostki naturalne możemy powiedzieć, że zachodzi: * '''masa''': {{Formuła|<MATH>\hbar c/(Mc^2)=1 GeV\;</MATH>}}, * '''długość''': {{Formuła|<MATH>\hbar c/(mc^2)=1 GeV^{-1}=0,1975fm\;</MATH>}}, * '''czas''': {{Formuła|<MATH>\hbar c/(Mc^3)=1 GeV^-1=6,59\cdot6,59\cdot 10^{-25} s\;</MATH>}}. A także stosuje się jednostki Heaviside'a-Lorentza, tzn.: {{Formuła|<MATH>\epsilon_0=\mu_0=\hbar=c=1\;</MATH>}}. Stałą struktury subtelnej wyrażamy{{Formuła|<MATH>\alpha={{e^2}\over{4\pi}}\;</MATH>}}, jest ona równa {{Formuła|<MATH>{{1}\over{137,06}}\;</MATH>}}. Należy pamiętać przy doświadczeniach na wysokich energiach występują związki pomiędzy jednostkami energii pisane w sposób: * '''1 MeV'''=10{{Sup|6}} eV * '''1 GeV'''=10{{Sup|3}} MeV * '''1 TeV'''=10{{Sup|3}} GeV == Wprowadzenie do kinematyki relatywistycznej w fizyce wysokich energii == W fizyce relatywistycznej istnieje związek pomiędzy wektorem pędu <MATH>\vec{p}\;</MATH> w przestrzeni w czasoprzestrzeni a masą spoczynkową <MATH>m\;</MATH>, zatem: {{CentrujWzór|<MATH>E^2=\vec{p}c^2+m^2c^2\;</MATH>|1.2}} Jeżeli zastosujemy jednostki naturalne, tzn. c=1 wtedy: {{CentrujWzór|<MATH>E^2=\vec{p}^2+m^2\;</MATH>|1.3}} Współrzędne czteropędu od 1 do 4 piszemy jako * '''p{{Sub|1}}'''=p{{Sub|x}}, '''p{{Sub|2}}'''=p{{Sub|y}}, '''p{{Sub|3}}'''=p{{Sub|z}}, '''p{{Sub|4}}'''=iE. Suma kwadratów wielkości p{{Sub|i}} dla i od 1 do 4 którą nazywamy kwadratem czteropędu wygląda: {{CentrujWzór|<MATH>p^2=\sum_{\mu}p^2_{\mu}=p_1^2+p_2^2+p_3^2+p_4^2=\vec{p}^2-E^2=-m^2\;</MATH>|1.4}} Transformacje współrzędnych czteropędu z układu laboratoryjnego na inny układ odniesienia przedstawiamy jako sumę iloczynu tensora kowariantnego i współrzędnych czteropędu, które są tak jakby współczynnikami: {{CentrujWzór|<MATH>p^'_{\mu}=\sum_{\nu=1}^{4}\alpha_{\mu\nu}p_{\nu}\;</MATH>|1.5}} Współczynniki we wzorze {{LinkWzór|1.5}} na <MATH>p^'\;</MATH> piszemy przez: {{CentrujWzór|<MATH>\alpha_{\mu\nu}=\begin{vmatrix} \gamma&0&0&i\beta\gamma\\0&1&0&0\\0&0&1&0\\-i\beta\gamma&0&0&\gamma \end{vmatrix}\;</MATH>|1.6}} We wzorze {{LinkWzór|1.5}} występuje &gamma;, którą piszemy według: {{Formuła|<MATH>\gamma={{1}\over{\sqrt{1-\beta^2}}}\;</MATH>}}, stąd transformacje pędu z układu laboratoryjnego na inny układ odniesienia na podstawie {{LinkWzór|1.5}} i {{LinkWzór|1.6}} wyrażamy przez: {{Tabelka|opcje=width=100%|klasa=wikitable|<!-- -->{{Wiersz|<!-- -->{{Komórka|{{CentrujWzór|<MATH>p_1^'=\gamma p_1+i\beta\gamma p_4\;</MATH>|1.7}}}}<!-- -->{{Komórka|{{CentrujWzór|<MATH>p_2^'=p_2\;</MATH>|1.8}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{CentrujWzór|<MATH>p_3^'=p_3\;</MATH>|1.9}}}}<!-- -->{{Komórka|{{CentrujWzór|<MATH>p_4^'=p_4\;</MATH>|1.10}}}}<!-- -->}}<!-- -->}} Jeżeli zastosujemy związki {{LinkWzór|1.7}}, {{LinkWzór|1.8}}, {{LinkWzór|1.9}} i {{LinkWzór|1.10}} oraz własności co to są kolejne współrzędne czeropędu, co na tej podstawie własności transformacji współrzędnych przestrzennych i energii z układu z laboratoryjnego na inny układ odniesienia, co na tej podstawie: {{Tabelka|opcje=width=100%|klasa=wikitable|<!-- -->{{Wiersz|<!-- -->{{Komórka|{{CentrujWzór|<MATH>p_x^'=\gamma(p_x-\beta E)\;</MATH>|1.11}}}}<!-- -->{{Komórka|{{CentrujWzór|<MATH>p_y^'=p_y\;</MATH>|1.12}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{CentrujWzór|<MATH>p_z^'=p_z\;</MATH>|1.13}}}}<!-- -->{{Komórka|{{CentrujWzór|<MATH>E^'=\gamma(E-\beta p_x)\;</MATH>|1.14}}}}<!-- -->}}<!-- -->}} W fizyce występuje takie coś jak faza zdefiniowana: {{CentrujWzór|<MATH>faza=\vec{k}\cdot\vec{x}-\omega t=\vec{p}\cdot\vec{x}-Et=\sum p_{\mu}x_{\mu}\;</MATH>|1.15}} Kwadrat czteropędu jest wyrażamy wzorem {{LinkWzór|1.4}} i można ją przedstawić jako różnice kwadratu pędu przestrzennego i kwadratu energii. Jeżeli kwadrat czteropędu oznaczymy przez q{{Sup|2}}, wtedy wielkość q{{Sup|2}}>0 jest przestrzennopodobna, a w przypadku q{{Sup|2}}<0 jest to wielkość czasopodobna. == Czteropęd w fizyce cząstek elementarnych == Kwadrat czteropędu w fizyce cząstek elementarnych odpowiada wielkość {{LinkWzór|3.9|Definicja masy i energii, spoczynkowej i relatywistycznej, i pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}. Jeśli mamy cząstę o masie m{{Sub|A}} i energii E{{Sub|A}} i o pędzie <strong>p</strong>{{Sub|A}} i podobnie dla drugiej cząstki. {{CentrujWzór|<MATH>q^2=(\mathbf{p}_A+\mathbf{p}_B)^2-(E_A+E_B)^2/c^2=\mathbf{p}^2_A+\mathbf{p}^2_B+2\mathbf{p}_A\mathbf{p}_B-{{E_A^2+E_B^2+2E_AE_B}\over{c^2}}=\;</MATH>{{Br}}<MATH>=-m_A^2c^2-m_B^2c^2+2\mathbf{p}_A\mathbf{p}_B-E_AE_B/c^2\;</MATH>|1.16}} Jeśli cząstka tarczy spoczywa w układzie laboratoryjnym, to wtedy <strong>p</strong>{{Sub|B}}=0 i wtedy E{{Sub|B}}=m{{Sub|B}}c{{Sup|2}}, co na podstawie tego powiemy: {{CentrujWzór|<MATH>q^2=-m_A^2c^2-m_B^2c^2-2E_Am_B\;</MATH>|1.17}} Minus wielkość {{LinkWzór|1.17}} jest to kwadrat energii układu w układzie współrzędnych środka masy CM. Jeżeli we wzorze {{LinkWzór|1.16}} wielkości m{{Sub|A}}, m{{Sub|B}}<<E{{Sub|A}},E{{Sub|B}} i przymniemy, że cząstka tarczy porusza się przeciwnie do cząstki do niej padającej, wtedy wzór {{LinkWzór|1.16}} na podstawie wzoru {{LinkWzór|1.3}} przyjmuje postać: {{CentrujWzór|<MATH>q^2=-m_A^2-m_B^2+2(\vec{p}_A\vec{p}_B-E_AE_B)=-4E_AE_B\;</MATH>|1.18}} Kwadrat energii w układzie środka masy CM dla przypadku {{LinkWzór|1.18}} piszemy jak dla {{LinkWzór|1.17}}. == Fermiony w fizyce == Są to cząstki o spinie {{Formuła|<MATH>{{1}\over{2}}\;</MATH>}}, które to w modelu standardowym odpowiadają sześć kwarków i sześć leptonów. Leptony mają całkowity ładunek ujemny |e|, a zaś kwarki cześć ułamkową |e|. Elektron jest cząstką, która nie może się rozpaść wcale, dalszymi leptonami są &mu; i &tau;. Czas średni życia &mu;(mionu) jest 2,2&sdot; 10{{Sup|-6}}s, a (&tau;)taonu jest 2,9&sdot;10{{Sup|-13}}s. Każdej z tych cząstek odpowiada pewne neutrino o ładunku zerowym , której oznaczamy przez &nu;, a do jakiej cząstki odpowiada to neutrino jest wskazane jego prawym dolnym indeksem. Wyróżniamy kwarki u (kwarki górne),d (kwarki dolne), których ładunki to +2/3 |e| i dalej s ( kwarki dziwne), c (kwarki powabne) i na samym końcu b (kwarki piękne) i t(kwarki top), której ładunki to -1/2 |e|. Masa kwarków rośnie z lewej na prawą. Całkowity ładunek u, c, t jest 3&sdot;3&sdot;2/3=6, a kwarków d, s, b -3&sdot;3&sdot;1/3=-3, a leptony mają ładunek -3&sdot;1, a zatem całkowity ładunek leptonów jest zero. == Oddziaływania i pola w przyrodzie == Mamy cztery oddziaływania jądrowe, w tym: grawitacyjne, elektromagnetyczne, słabe, silne, podamy teraz ich stałą sprzężenia, zasięg i czas charakterystyczny: {{Tabelka|opcje=width=100%|klasa=wikitable|<!-- -->{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|}}<!-- -->{{Komórka|nagłówek=tak|Rodzaj oddziaływania}}<!-- -->{{Komórka|nagłówek=tak|Cząstka pośrednicząca}}<!-- -->{{Komórka|nagłówek=tak|Spin/Parzystość}}<!-- -->{{Komórka|nagłówek=tak|Stała sprzężenia}}<!-- -->{{Komórka|nagłówek=tak|zasięg [m]}}<!-- -->{{Komórka|nagłówek=tak|czas charakterystyczny [s]}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|1}}<!-- -->{{Komórka|Grawitacyjne}}<!-- -->{{Komórka|grawiton g}}<!-- -->{{Komórka|2{{Sup|+}}}}<!-- -->{{Komórka|10{{Sup|-38}}}}<!-- -->{{Komórka|∞}}<!-- -->{{Komórka|-}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|2}}<!-- -->{{Komórka|elektromagnetyczne}}<!-- -->{{Komórka|foton &gamma;}}<!-- -->{{Komórka|1{{Sup|-}}}}<!-- -->{{Komórka|{{Formuła|<MATH>{{1}\over{137}}\;</MATH>}}}}<!-- -->{{Komórka|∞}}<!-- -->{{Komórka|10{{Sup|-18}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|3}}<!-- -->{{Komórka|słabe}}<!-- -->{{Komórka|W{{Sup|±}},Z{{Sup|0}}}}<!-- -->{{Komórka|1{{Sup|-}},1{{Sup|+}}}}<!-- -->{{Komórka|10{{Sup|-7}}}}<!-- -->{{Komórka|10{{Sup|-18}}}}<!-- -->{{Komórka|10{{Sup|-10}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|4}}<!-- -->{{Komórka|silne}}<!-- -->{{Komórka|gluon G}}<!-- -->{{Komórka|1{{Sup|-}}}}<!-- -->{{Komórka|1}}<!-- -->{{Komórka|10{{Sup|-15}}}}<!-- -->{{Komórka|10{{Sup|-23}}}}<!-- -->}}<!-- -->}} == Fermiony i bozony w fizyce == Fermiony mają spin {{Formuła|<MATH>\left({{1}\over{2}}\hbar,{{3}\over{2}}\hbar,...\right)\;</MATH>}} i podlegają statystyce Fermiego-Diraca, natomiast cząstki o spinie całkowitej, tzn. {{Formuła|<MATH>(0,\hbar,2\hbar,...)\;</MATH>}}, są to bozony. Przestawienie pomiędzy bozonami nie zmienia wartości |&psi;|{{Sup|2}}, bo nasze te cząstki są nierozróżnialne w mechanice kwantowej. W przypadku fermionów dla jej funkcji falowej przy zamianie pomiędzy cząstkami pojawia się znak minus przed tą funkcją falową, a w przypadku bozonów takowy znak minus się nie pojawia. Składnikami materii są też fermiony o spinie połówkowym, ale zajmijmy się fermionami o spinie {{Formuła|<MATH>{{1}\over{2}}\;</MATH>}} wtedy mamy sześć kwarków i sześć leptonów. Tabelka przedstawiająca symbole kwarków i leptonów oraz ładunki co przedstawiamy je jako: {{Center|<!-- -->{{Tabelka|opcje=width=100%|klasa=wikitable|<!-- -->{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|Cząstka}}<!-- -->{{Komórka|nagłówek=tak|opcje=colspan=3|Symbol Cząstki}}<!-- -->{{Komórka|nagłówek=tak|Ładunek cząstki w jednostkach e}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|opcje=rowspan=2|Leptony}}<!-- -->{{Komórka|e}}<!-- -->{{Komórka|&mu;}}<!-- -->{{Komórka|&tau;}}<!-- -->{{Komórka|-1}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|&nu;{{Sub|e}}}}<!-- -->{{Komórka|&nu;{{Sub|&mu;}}}}<!-- -->{{Komórka|&nu;{{Sub|&tau;}}}}<!-- -->{{Komórka|0}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|opcje=rowspan=2|Kwarki}}<!-- -->{{Komórka|u}}<!-- -->{{Komórka|c}}<!-- -->{{Komórka|t}}<!-- -->{{Komórka|{{Formuła|<MATH>+{{2}\over{3}}\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|d}}<!-- -->{{Komórka|s}}<!-- -->{{Komórka|b}}<!-- -->{{Komórka|{{Formuła|<MATH>-{{1}\over{3}}</MATH>}}}}<!-- -->}}<!-- -->}}}} == Istnienie cząstek i ich odpowiedników antycząstek == Związek pomiędzy pędem cząstki a całkowitą energią cząstki jest napisany związkiem poniżej, co w tym samym punkcie podamy energię cząstki wynikającej z tego warunku: {{CentrujWzór|<MATH>E^2=(pc)^2+(m_0c^2)^2\Rightarrow E=\pm\sqrt{(p^2c)^2+(m_0c^2)^2}\;</MATH>|1.19}} Rozwiązanie dodatnie w {{LinkWzór|1.4}} odpowiada cząstce, a ujemnej antycząstce. Funkcja falowa, której odpowiada cząstką jest wyrażony poniżej, której energia w zależności od pędu jest przedstawiona: {{CentrujWzór|<MATH>\psi(x)=Ae^{i{(Et-px)\over{\hbar}}}\;</MATH>|1.20}} Prędkość falową cząstki, a także liczbę falową wyrażamy wzorami: {{Formuła|<MATH>\omega={{E}\over{\hbar}}\;</MATH>}}, {{Formuła|<MATH>k={{p}\over{\hbar}}\;</MATH>}}. Powyższy wzór dotyczy cząstki o pędzie p i energii E. A jeśli mamy pęd -p, i energię -E. Te pierwsze cząstki poruszają do przodu w czasie, a te drugie do tyły w czasie. == Równania w mechanice kwantowej opisującej cząstkę swobodną obdarzoną ułamkowym spinem == Równanie falowe pierwszego rzędu, w którym pochodne względem współrzędnych przestrzenne i czasu występuje są pierwszego rzędu przedstawiamy: {{CentrujWzór|<MATH>{{1}\over{c}}{{\partial\psi}\over{\partial t}}=\pm\left(\sigma_1{{\partial\psi}\over{\partial x}}+\sigma_2{{\partial\psi}\over{\partial y}}+\sigma_3{{\partial\psi}\over{\partial z}}\right)=\mathbf{\sigma}\cdot{{\partial\psi}\over{\partial\mathbf{r}}}\Rightarrow {{1}\over{c}}{{\partial\psi}\over{\partial t}}\mp\mathbf{\sigma}\cdot{{\partial\psi}\over{\partial\mathbf{r}}}=0\Rightarrow \left({{1}\over{c}}{{\partial}\over{\partial t}}\pm\mathbf{\sigma}{{\partial}\over{\partial\mathbf{r}}}\right)\psi=0\;</MATH>|1.21}} W którym poszczególne kwadraty macierze &sigma;{{Sub|i}} są równe macierzy jednostkowej, a wielkość &sigma;{{Sub|1}}&sigma;{{Sub|2}}+&sigma;{{Sub|2}}&sigma;{{Sub|1}}=0. Jeśli równanie {{LinkWzór|1.21}} pomnożymy przez operator {{Formuła|<MATH>{{1}\over{c}}{{\partial}\over{\partial t}}\mp\mathbf{\sigma}{{\partial}\over{\partial\mathbf{r}}}\;</MATH>}}, i zakładając, że pochodna jest równa zero, to wtedy otrzymamy równanie: {{CentrujWzór|<MATH>{{1}\over{c^2}}{{\partial^2\psi}\over{\partial t^2}}-\nabla^2={{m_0^2c^2}\over{\hbar^2}}\psi\;</MATH>|1.22}} dla m{{Sub|0}} równego zero. Równanie {{LinkWzór|1.21}} jest równaniem zależnym od czasu, a równanie własne na energię jest: {{ElastycznyWiersz |{{CentrujWzór|<MATH>E\phi=-\mathbf{\sigma}\cdot\mathbf{p}\phi\;</MATH>|1.23}} |{{CentrujWzór|<MATH>E\psi=+\mathbf{\sigma}\cdot\mathbf{p}\psi\;</MATH>|1.24}} }} Ponieważ fermion posiada człon masowy m{{Sub|0}}, to wtedy {{LinkWzór|1.21}} rozszerzony o człon masowy wyraża się równaniem: {{CentrujWzór|<MATH>E\psi=(\mathbf{\alpha}\cdot\mathbf{p}+\mathbf{\beta}m_0)\psi\;</MATH>|1.25}} wtedy powiemy, że zachodzi: {{ElastycznyWiersz |{{CentrujWzór|<MATH>\mathbf{\alpha}=\begin{pmatrix}0&\sigma\\ \sigma&0\end{pmatrix}\;</MATH>|1.26}} |{{CentrujWzór|<MATH>\mathbf{\beta}=\begin{pmatrix}1&0\\0&-1\end{pmatrix}\;</MATH>|1.27}} }} == Skrętność fermionu, a jego zachowanie == Dla dodatniej energii {{Formuła|<MATH>E=|\mathbf{p}|\;</MATH>}} skrętność równanie {{LinkWzór|1.24}} powiązana jest równaniem poniżej, jest ona ilorazem iloczynu wielkości {{Strong|&sigma;&sdot;p}} przez wielkość {{Strong|p}} pomnożonej przez wielkość |&phi;|, która jest równa z dokładnością do znaku funkcji falowej &phi;. {{CentrujWzór|<MATH>{{\mathbf{\sigma}\cdot\mathbf{p}}\over{|\mathbf{p}|}}\phi=-\phi\;</MATH>|1.28}} Patrząc na wzór {{LinkWzór|1.13}} ogólnie skrętność jest równa wartości bezwzględnej z jedynki, którą definiujemy przez: {{CentrujWzór|<MATH>\mathbf{H}={{\mathbf{\sigma}\cdot\mathbf{p}}\over{|\mathbf{p}|}}=-1\;</MATH>|1.29}} Jest to wielkość zetowa {{Formuła|<MATH>\pm{{1}\over{2}}\hbar\;</MATH>}} na oś zetową, ogólnie mamy H=±1, gdy H=+1 co odpowiada śrubie prawoskrętnej cząstki, a H=-1 śrubie lewoskrętnej cząstki. Dla cząstek jest Wielkością lorentzowską niezmienniczą wielkość dla cząstek nie posiadającej masy spoczynkowej, czyli zgodnie z ze szczególną teorią względności te cząstki poruszają się z prędkością światła. Gdy mamy doczynienia z możliwościami oddziaływań związanych z polami wektorowymi lub psełdowektorowymi, które w tych polach mamy do czynienia z wymianą bozonów wektorowych lub psełdowektorowych, oczywiste jest, że przy energiach relatywistycznych skrętność jest zachowana, natomiast oddziaływania skalarne nie zachowują skrętności. W równaniach człon reprezentujących człon masowy jest typu skalarnego. == Leptony naładowane i obojętne == Każdemu leptonowi naładowanemu odpowiada leptom obojętny neutrino, która jak się przypuszcza jest leptonem bezmasowym (o masie spoczynkowym równej zero). Podamy teraz tabelkę dotycząca ile wynoszą masy poszczególnych cząstek, które w tym w przypadku stanowią leptony. {{Tabelka|opcje=width="100%"|klasa=wikitable|<!-- -->{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|Zapach}}<!-- -->{{Komórka|nagłówek=tak|Masa leptonu (bez neutrin)}}<!-- -->{{Komórka|nagłówek=tak|J{{Sup|p}}}}<!-- -->{{Komórka|nagłówek=tak|Średni czas życia &tau;[s]}}<!-- -->{{Komórka|nagłówek=tak|Sposoby rozpadu}}<!-- -->{{Komórka|nagłówek=tak|Masa neutrinów}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|e}}<!-- -->{{Komórka|m{{Sub|e}}{{=}}0,511 MeV}}<!-- -->{{Komórka|{{Formuła|<MATH>{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|≥4,2&sdot;10{{Sup|24}}lat}}<!-- -->{{Komórka|}}<!-- -->{{Komórka|m{{Sub|&nu;{{Sub|e}}}}≤10 eV}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|opcje=rowspan="2"|&mu;{{Sup|&pm;}}}}<!-- -->{{Komórka|opcje=rowspan="2"|m{{Sub|&mu;}}{{=}}105,66 MeV}}<!-- -->{{Komórka|opcje=rowspan="2"|{{Formuła|<MATH>{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|opcje=rowspan="2"|&ge;2,197&sdot;10{{Sup|-6}}lat}}<!-- -->{{Komórka|{{Formuła|<MATH>\mu^-\rightarrow e^-+\tilde{\nu}_e+\nu_{\mu}\;</MATH>}}}}<!-- -->{{Komórka|opcje=rowspan="2"|m{{Sub|&nu;{{Sub|&mu;}}}}≤0,16 MeV}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>\mu^+\rightarrow e^++\nu_e+\tilde{\nu}_{\mu}\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|opcje=rowspan="2"|&tau;{{Sup|&pm;}}}}<!-- -->{{Komórka|opcje=rowspan="2"|m{{Sub|&tau;}}{{=}}1777 MeV}}<!-- -->{{Komórka|opcje=rowspan="2"|{{Formuła|<MATH>{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|opcje=rowspan="2"|&ge;2,906&sdot;10{{Sup|-13}}lat}}<!-- -->{{Komórka|{{Formuła|<MATH>\tau^-\rightarrow e^-+\tilde{\nu}_{e}+\nu_{\tau}\;</MATH>}}}}<!-- -->{{Komórka|opcje=rowspan="2"|m{{Sub|&nu;{{Sub|&tau;}}}}&le;18 MeV}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>\tau^+\rightarrow e^++\nu_{e}+\tilde{\nu}_{\tau}\;</MATH>}}}}<!-- -->}}<!-- -->}} Są też takie liczby jak liczby leptonowe L{{Sub|e}}, L{{Sub|&mu;}}, L{{Sub|&tau;}}, ta wielkość jest równa jeden gdy ona dotyczy neutrina lub cząstki o danym zapachu, o którym jest mowa w indeksie w L. Oczywiste jest, że antycząstki mają wartości -1 analogicznie. Elektrony, miony i taony oddziaływują elektromagnetycznie i słabo, a neutrina tylko słabo. Neutrina są lewoskrętne H=-1, a antyneutrina dla zupełności są prawoskrętne H=+1. == Kwarki, bariony i mezony czyli hadrony == Istnieje sześć zapachów kwarków, które podamy w tabelce poniżej: {{Tabelka|opcje=width=100%|klasa=wikitable|<!-- -->{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|Zapach}}<!-- -->{{Komórka|nagłówek=tak|Liczba kwantowa}}<!-- -->{{Komórka|nagłówek=tak|Masa spoczynkowa GeV/c{{Sup|2}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|górny (u), dolny (d)}}<!-- -->{{Komórka|-}}<!-- -->{{Komórka|m{{Sub|u}}≈m{{Sub|d}}≈0,31}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|dziwny (s)}}<!-- -->{{komórka|S{{=}}-1}}<!-- -->{{Komórka|m{{Sub|s}}≈0,50}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|powabny (c)}}<!-- -->{{Komórka|C{{=}}+1}}<!-- -->{{Komórka|m{{Sub|c}}≈1,6}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|piękny (b)}}<!-- -->{{Komórka|B{{=}}-1}}<!-- -->{{Komórka|m{{Sub|b}}≈4,6}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|top (t)}}<!-- -->{{Komórka|T{{=}}+1}}<!-- -->{{Komórka|m{{Sub|t}}≈180}}<!-- -->}}<!-- -->}} Bariony są to cząstki zbudowane z trzech kwarków QQQ, ale istnieje też układ kwark-antykwark <MATH>Q\overline{Q}</MATH> zwanych mezonami, te kwarki ogólnie są zwane hadronami, opis oddziaływań pomiędzy kwarkami jest opisywany przez chromodynamikę kwantową. '''Mezony''' o liczbie barionowej równej zero (B=0): {{Tabelka|opcje=width="100%"|klasa=wikitable|<!-- -->{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|Cząstka}}<!-- -->{{Komórka|nagłówek=tak|Masa [MeV/c{{Sup|2}}]}}<!-- -->{{Komórka|nagłówek=tak|S}}<!-- -->{{Komórka|nagłówek=tak|J{{Sup|p}}}}<!-- -->{{Komórka|nagłówek=tak|I}}<!-- -->{{Komórka|nagłówek=tak|Średni czas życia &tau;[s]}}<!-- -->{{Komórka|nagłówek=tak|Sposoby rozpadu}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|opcje=rowspan="2"|{{Formuła|<MATH>\pi^{\pm}\;</MATH>}}}}<!-- -->{{Komórka|opcje=rowspan="2"|139,57}}<!-- -->{{Komórka|opcje=rowspan="2"|0}}<!-- -->{{Komórka|opcje=rowspan="2"|0{{Sup|-}}}}<!-- -->{{Komórka|opcje=rowspan="2"|1}}<!-- -->{{Komórka|opcje=rowspan="2"|2,60&sdot;10{{Sup|-8}}}}<!-- -->{{Komórka|{{Formuła|<MATH>\pi^+\rightarrow\mu^++\nu_{\mu}\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>\pi^-\rightarrow\mu^-\tilde{\nu}_{\mu}\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>\pi^0\;</MATH>}}}}<!-- -->{{Komórka|134,98}}<!-- -->{{Komórka|0}}<!-- -->{{Komórka|0{{Sup|-}}}}<!-- -->{{Komórka|1}}<!-- -->{{Komórka|8,4&sdot;10{{Sup|-17}}}}<!-- -->{{Komórka|{{Formuła|<MATH>\pi^0\rightarrow 2\gamma\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|opcje=rowspan="3"|K{{Sup|&pm;}}}}<!-- -->{{Komórka|opcje=rowspan="3"|493,68}}<!-- -->{{Komórka|opcje=rowspan="3"|&pm;1}}<!-- -->{{Komórka|opcje=rowspan="3"|0{{Sup|-}}}}<!-- -->{{Komórka|opcje=rowspan="3"|{{Formuła|<MATH>{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|opcje=rowspan="3"|1,24&sdot;10{{Sup|-8}}}}<!-- -->{{Komórka|{{Formuła|<MATH>K^+\rightarrow\pi^++\pi^++\pi^-\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>K^+\rightarrow\pi^++\pi^0+\pi^0\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>K^+\rightarrow \pi^-+\pi^-+\pi^+\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|opcje=rowspan="2"|{{Formuła|<MATH>K^0_S</MATH>}}}}<!-- -->{{Komórka|opcje=rowspan="2"|497,67}}<!-- -->{{Komórka|opcje=rowspan="2"|&pm;1}}<!-- -->{{Komórka|opcje=rowspan="2"|0{{Sup|-}}}}<!-- -->{{Komórka|opcje=rowspan="2"|{{Formuła|<MATH>{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|opcje=rowspan="2"|8,94&sdot;10{{Sup|-11}}}}<!-- -->{{Komórka|{{Formuła|<MATH>K^0_S\rightarrow\pi^++\pi^-\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>K^0_S\rightarrow \pi^0+\pi^0\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|opcje=rowspan="5"|{{Formuła|<MATH>K^0_L</MATH>}}}}<!-- -->{{Komórka|opcje=rowspan="5"|}}<!-- -->{{Komórka|opcje=rowspan="5"|}}<!-- -->{{Komórka|opcje=rowspan="5"|}}<!-- -->{{Komórka|opcje=rowspan="5"|}}<!-- -->{{Komórka|opcje=rowspan="5"|5,17&sdot;10{{Sup|-8}}}}<!-- -->{{Komórka|{{Formuła|<MATH>K^0_L\rightarrow 3\pi^0\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>K^0_L\rightarrow \pi^++\pi^-+\pi^0\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>K^0_L\rightarrow\pi^++\mu^-+\tilde{\nu}_{\mu}\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>K^0_L\rightarrow\pi^{+}+e^-+\tilde{\nu}_e\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>K^0_L\rightarrow\pi^{-}+e^{+}+\nu_e\;</MATH>}}}}<!-- -->}}<!-- -->}} '''Bariony''' o liczbie barionowej równej jeden (B=1): {{Tabelka|opcje=width="100%"|klasa=wikitable|<!-- -->{{Wiersz|<!-- -->{{Komórka|nagłówek=tak|Cząstka}}<!-- -->{{Komórka|nagłówek=tak|Masa [MeV/c{{Sup|2}}]}}<!-- -->{{Komórka|nagłówek=tak|S}}<!-- -->{{Komórka|nagłówek=tak|J{{Sup|p}}}}<!-- -->{{Komórka|nagłówek=tak|I}}<!-- -->{{Komórka|nagłówek=tak|Y}}<!-- -->{{Komórka|nagłówek=tak|&langle;q&rangle;}}<!-- -->{{Komórka|nagłówek=tak|Średni czas życia &tau;[s]}}<!-- -->{{Komórka|nagłówek=tak|Sposoby rozpadu}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|p}}<!-- -->{{Komórka|938,27}}<!-- -->{{Komórka|0}}<!-- -->{{Komórka|{{Formuła|<MATH>{{1}\over{2}}^+\;</MATH>}}}}<!-- -->{{Komórka|{{Formuła|<MATH>{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|1}}<!-- -->{{Komórka|{{Formuła|<MATH>+{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|&ge;10{{Sup|32}} lat}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|n}}<!-- -->{{Komórka|939,57}}<!-- -->{{Komórka|0}}<!-- -->{{Komórka|{{Formuła|<MATH>{{1}\over{2}}^+\;</MATH>}}}}<!-- -->{{Komórka|{{Formuła|<MATH>{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|1}}<!-- -->{{Komórka|{{Formuła|<MATH>+{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|886,7}}<!-- -->{{Komórka|{{Formuła|<MATH>n\rightarrow p+e^-+\tilde{\nu}_e\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|opcje=rowspan="2"|&Lambda;}}<!-- -->{{Komórka|opcje=rowspan="2"|1115,68}}<!-- -->{{Komórka|opcje=rowspan="2"|-1}}<!-- -->{{Komórka|opcje=rowspan="2"|{{Formuła|<MATH>{{1}\over{2}}^+\;</MATH>}}}}<!-- -->{{Komórka|opcje=rowspan="2"|0}}<!-- -->{{Komórka|opcje=rowspan="2"|0}}<!-- -->{{Komórka|opcje=rowspan="2"|0}}<!-- -->{{Komórka|opcje=rowspan="2"|2,63&sdot;10{{Sup|-10}}}}<!-- -->{{Komórka|{{Formuła|<MATH>\Lambda\rightarrow p+\pi^-\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>\Lambda\rightarrow n+\pi^0\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|opcje=rowspan="2"|Σ;{{Sup|+}}}}<!-- -->{{Komórka|opcje=rowspan="2"|1189,37}}<!-- -->{{Komórka|opcje=rowspan="2"|-1}}<!-- -->{{Komórka|opcje=rowspan="2"|{{Formuła|<MATH>{{1}\over{2}}^+\;</MATH>}}}}<!-- -->{{Komórka|opcje=rowspan="2"|1}}<!-- -->{{Komórka|opcje=rowspan="2"|0}}<!-- -->{{Komórka|opcje=rowspan="2"|0}}<!-- -->{{Komórka|opcje=rowspan="2"|8,02&sdot;10{{Sup|-11}}}}<!-- -->{{Komórka|{{Formuła|<MATH>\Sigma^+\rightarrow p+\pi^0\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>\Sigma^+\rightarrow n+\pi^+\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|Σ{{Sup|0}}}}<!-- -->{{Komórka|1192,64}}<!-- -->{{Komórka|-1}}<!-- -->{{Komórka|{{Formuła|<MATH>{{1}\over{2}}^+\;</MATH>}}}}<!-- -->{{Komórka|1}}<!-- -->{{Komórka|0}}<!-- -->{{Komórka|0}}<!-- -->{{Komórka|7,4&sdot;10{{Sup|-20}}}}<!-- -->{{Komórka|{{Formuła|<MATH>\Sigma^0\rightarrow\Lambda+\gamma\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|Σ{{Sup|-}}}}<!-- -->{{Komórka|1197,45}}<!-- -->{{Komórka|-1}}<!-- -->{{Komórka|{{Formuła|<MATH>{{1}\over{2}}^+\;</MATH>}}}}<!-- -->{{Komórka|1}}<!-- -->{{Komórka|0}}<!-- -->{{Komórka|0}}<!-- -->{{Komórka|1,48&sdot;10{{Sup|-10}}}}<!-- -->{{Komórka|{{Formuła|<MATH>\Sigma^-\rightarrow n+\pi^-\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|Ξ{{Sup|0}}}}<!-- -->{{Komórka|1314,83}}<!-- -->{{Komórka|-2}}<!-- -->{{Komórka|{{Formuła|<MATH>{{1}\over{2}}^+\;</MATH>}}}}<!-- -->{{Komórka|{{Formuła|<MATH>{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|-1}}<!-- -->{{Komórka|{{Formuła|<MATH>-{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|2,90&sdot;10{{Sup|-10}}}}<!-- -->{{Komórka|{{Formuła|<MATH>\Xi^-\rightarrow \Lambda+\pi^0\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|Ξ{{Sup|-}}}}<!-- -->{{Komórka|1321,31}}<!-- -->{{Komórka|-2}}<!-- -->{{Komórka|{{Formuła|<MATH>{{1}\over{2}}^+\;</MATH>}}}}<!-- -->{{Komórka|{{Formuła|<MATH>{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|-1}}<!-- -->{{Komórka|{{Formuła|<MATH>-{{1}\over{2}}\;</MATH>}}}}<!-- -->{{Komórka|1,64&sdot;10{{Sup|-10}}}}<!-- -->{{Komórka|{{Formuła|<MATH>\Xi^-\rightarrow\Lambda+\pi^-\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|opcje=rowspan="3"|&Omega;{{Sup|-}}}}<!-- -->{{Komórka|opcje=rowspan="3"|1672,45}}<!-- -->{{Komórka|opcje=rowspan="3"|-3}}<!-- -->{{Komórka|opcje=rowspan="3"|{{Formuła|<MATH>{{3}\over{2}}^+\;</MATH>}}}}<!-- -->{{Komórka|opcje=rowspan="3"|0}}<!-- -->{{Komórka|opcje=rowspan="3"|-2}}<!-- -->{{Komórka|opcje=rowspan="3"|-1}}<!-- -->{{Komórka|opcje=rowspan="3"|8,21&sdot;10{{Sup|-11}}}}<!-- -->{{Komórka|{{Formuła|<MATH>\Omega^-\rightarrow\Lambda+K^-\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>\Omega^-\rightarrow\Xi^0+\pi^-\;</MATH>}}}}<!-- -->}}{{Wiersz|<!-- -->{{Komórka|{{Formuła|<MATH>\Omega^-\rightarrow\Xi^-+\pi^0\;</MATH>}}}}<!-- -->}}<!-- -->}} == Cząstki elementarne w kosmologii == Przyjmuje się, że wszechświat ma wiek 10-15 mld lat. Na samym początku ekspansji wszechświata temperatura w zależności od czasu i pewnej bliżej nieokreślonej stałej zmieniała się według wzoru: {{CentrujWzór|<MATH>k_BT=\operatorname{const}\cdot{{1 MeV}\over{t^{{{1}\over{2}}}}}\;</MATH>|1.30}} Aspekty potwierdzające Wielki Wybuch jest hipoteza Hubble'a wysunięta w roku 1929 roku, co ona mówi, że prędkość oddalania się dwóch obiektów jest wprost proporcjonalna do odległości tych obiektów od siebie. Stała występująca we wzorze {{LinkWzór|1.15}} jest stałą bliską jedności, co zależy od liczby podstawowych kwarków i leptonów. Wszystkie leptony nie licząc elektronu nie odgrywają już dziś wielkiej roli w skali kosmicznej. Na początku wybuchu wszechświata temperatura była na tyle wysoka by wytworzyć wszystkie dzisiaj obserwowane cząstki elementarne w laboratoriach fizycznych. Promieniowanie zbudowane z fotonów były w równowadze z tamtymi fotonami. Pozostałością po Wielkim Wybuchu jest promieniowanie reliktowe i jest ono izotropowe i spełnia rozkład ciała doskonale czarnego o temperaturze 2,7 K. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> 2ztsegexr3vd93eqpk0iuh2q4g2fqhd Szablon:Zintegrowany/opis 10 33002 548285 517077 2026-07-25T12:50:18Z Persino 2851 548285 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Skomplikowany}} {{Lua|Ramka|Pudełko|Lang|Wiki}} <!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY --> == Użycie == Ten szablon służy zaznaczeniu, że dana strona została {{lpp|Integracja|zintegrowana}} z inną stroną, który nadal istnieje, ale został przekształcony np. na {{lpp|przekierowanie|przekierowanie}} lub {{lpr|Strona ujednoznaczniająca|stronę ujednoznaczniającą}}. Działanie takie jest dozwolone pod warunkiem podania listy autorów. Należy wówczas wstawić szablon na stronę dyskusji strony B. Nazwy stron podajemy bez nazwy przestrzeni, jeżeli strony, które integrujemy ze stroną, w której jest umieszczony ten szablon są w takiej samej przestrzeni, a jeżeli, któraś strona jest w innej przestrzeni, to go poprzedzamy nazwą przestrzeni z dwukropkiem na samym początku. Ten szablon powinien być wstawiany '''na górze strony dyskusji''' strony. === Opis parametrów dodatkowych === {{Szablonowy opis pudełka | opis parametrów szablonu = tak | nazwa szablonu = Zintegrowany }} === Przykłady użycia, błędnego, szablonu === {{Szablonowy opis pudełka | nazwa szablonu = Zintegrowany }} === Wersja najprostsza (dla początkujących) === {{Pre|{{s|Zintegrowany|Ogólna teoria względności/Wprowadzenie do ogólnej teorii względności}}}} Efekt: {{Zintegrowany|Ogólna teoria względności/Wprowadzenie do ogólnej teorii względności|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona}} === Wersja zalecana === Ponieważ hasła w Wikibooks zmieniają się dynamicznie, '''zaleca się podać numer wersji artykułu''', którą wykorzystano do kopiowania: {{Pre|{{s|Zintegrowany|/Teoria funkcji lagrangianu|wersja{{=}}338449}}}} Efekt: {{Zintegrowany|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja=338449|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona}} Nr wersji można odczytać jako parametr typu <code>oldid='''338449'''</code> na pasku adresu przeglądarki po otwarciu hasła przez kliknięcie na odpowiednią godzinę+datę na stronie jego historii. Jeśli korzystasz z najnowszej wersji hasła, jej numer możesz zobaczyć klikając na "Link do tej wersji" w panelu bocznym (sekcja "narzędzia"). ---- {{Small|Szablon zawiera też parametr "link", który ma obecnie znaczenie tylko historyczne i nie należy go stosować (daje ten sam efekt co parametr "wersja", a może prowadzić do zerwania szyfrowanego połączenia). Wbrew wcześniejszej (błędnej) wersji dokumentacji, parametr ten nie służy do podawania historii zmian artykułu, z którego nastąpiło przeniesienie.}} === Wersja wielu jednostek bez podania wersji === W sytuacji, gdy nasza strona został zintegrowany nie z jednym, ale z wieloma innymi stronami w Wikibooks: {{Pre|{{s|Zintegrowany|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|Mechanika teoretyczna|Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|Statystyka matematyczna/Średnie w matematyce statystycznej|Ogólna teoria względności}}}} Efekt: {{Zintegrowany|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|Mechanika teoretyczna|Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|Statystyka matematyczna/Średnie w matematyce statystycznej|Ogólna teoria względności|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona}} Szablon pozwala na umieszczenie w niej dowolnej liczby nazw stron. === Wersja wielu jednostek z podawaniem wersji === Oczywiście do każdych z tych stron można dodać wersję, na podstawie której nastąpiła integracja. {{Pre|{{s|Zintegrowany|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja 1{{=}}338449|Mechanika teoretyczna|wersja 2{{=}}253467|Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|wersja 3{{=}}250873|Statystyka matematyczna/Średnie w matematyce statystycznej|wersja 4{{=}}260021|Ogólna teoria względności|wersja 5{{=}}323173}}}} Efekt: {{Zintegrowany|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja 1=338449|Mechanika teoretyczna|wersja 2=253467|Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|wersja 3=250873|Statystyka matematyczna/Średnie w matematyce statystycznej|wersja 4=260021|Ogólna teoria względności|wersja 5=323173|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona}} Szablon pozwala na umieszczenie w niej dowolnej liczby nazw stron. === Wersja z podaniem parametru link i jego pokrewnych === Wersje można także dodawać używając parametrów <code>link (link 1), link 2,...,link 10</code>, jednak wówczas należy skopiować całą zawartość paska adresu: {{Pre|{{s|Zintegrowany|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|link{{=}}//pl.wikibooks.org/w/index.php?title{{=}}Wyprowadzenie_i_próba_podważenia,_praw:_szczególnej_i_ogólnej_teorii_względności/Teoria_funkcji_lagrangianu&oldid{{=}}338449}}}} Efekt: {{Zintegrowany|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|link=//pl.wikibooks.org/w/index.php?title=Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria_funkcji_lagrangianu&oldid=338449|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona}} Zaczęcie linku bez nazwy protokołu (http/https) umożliwi automatyczne dobranie protokołu {{lr|Secure server|szyfrowanego połączenia|k=en:w}} w zależności od tego, na jakim czytelnik będzie zalogowany. W innym przypadku przeglądarka może próbować się łączyć przez podany protokół. Jeśli na przykład Ty korzystasz z normalnego serwera (<nowiki>http://pl.wikipedia.org/cośtam</nowiki>), a na Twój link kliknie ktoś korzystający z bezpiecznego serwera, obsługującego szyfrowane połączenie (<nowiki>https://pl.wikipedia.org/cośtam</nowiki>), to wówczas zostanie on przeniesiony na normalny serwer - a tam może on nie być zalogowany. Więcej o tym {{lr|secure server#Local links|tutaj|klucz projektu=en:w}}. == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Zobacz też == * {{S|Przetłumaczony}} * {{S|Wydzielony}} {{Szablony integracji i podziału}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII --> {{Kategorie | Szablony integracji i podziału | Szablony stron dyskusji | Szablony zasad i zaleceń Wikibooks }}</includeonly> epwep5rclvtl3peb2xk7qln472ynjsb Szablon:Wydzielony/opis 10 33012 548283 517085 2026-07-25T12:46:11Z Persino 2851 548283 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Skomplikowany}} {{Lua|Ramka|Pudełko|Lang|Wiki}} <!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY --> == Użycie == Ten szablon służy zaznaczeniu, że dana strona zawiera treści skopiowane z innej istniejącej w Wikibooks strony. Np. z artykułu A zostaje wycięta dana sekcja i przeniesiona do nowego artykułu B. Działanie takie jest dozwolone pod warunkiem podania listy autorów (poprawne wydzielanie części tekstu do oddzielnej strony opisane jest {{lpr|<!-- Wikipedia na przełaj -->Wydzielanie|tutaj}}). Należy wówczas wstawić niniejszy szablon na stronę dyskusji artykułu B. Ten szablon powinien być wstawiany '''na górze strony dyskusji''' strony. ===Opis parametrów dodatkowych=== {{Szablonowy opis pudełka | opis parametrów szablonu = tak | nazwa szablonu = Wydzielony }} ===Przykłady użycia, błędnego, szablonu=== {{Szablonowy opis pudełka | nazwa szablonu = Wydzielony }} === Wersja najprostsza (dla początkujących) === {{Pre|{{s|Wydzielony|Ogólna teoria względności/Wprowadzenie do ogólnej teorii względności}}}} Efekt: {{Wydzielony|Ogólna teoria względności/Wprowadzenie do ogólnej teorii względności|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona}} === Wersja zalecana === Ponieważ hasła w Wikibooks zmieniają się dynamicznie, '''zaleca się podać numer wersji artykułu''', którą wykorzystano do kopiowania: {{Pre|{{s|Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja{{=}}338449}}}} Efekt: {{Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja=338449|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona}} Nr wersji można odczytać jako parametr typu <code>oldid='''338449'''</code> na pasku adresu przeglądarki po otwarciu hasła przez kliknięcie na odpowiednią godzinę+datę na stronie jego historii. Jeśli korzystasz z najnowszej wersji hasła, jej numer możesz zobaczyć klikając na "Link do tej wersji" w panelu bocznym (sekcja "narzędzia"). ---- {{Small|Szablon zawiera też parametr "link", który ma obecnie znaczenie tylko historyczne i nie należy go stosować (daje ten sam efekt co parametr "wersja", a może prowadzić do zerwania szyfrowanego połączenia). Wbrew wcześniejszej (błędnej) wersji dokumentacji, parametr ten nie służy do podawania historii zmian artykułu, z którego nastąpiło przeniesienie.}} === Wersja wielu jednostek bez podania wersji === W sytuacji, gdy nasza strona został zintegrowany nie z jednym, ale z wieloma innymi stronami w Wikibooks: {{Pre|{{s|Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|Mechanika teoretyczna|Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|Statystyka matematyczna/Średnie w matematyce statystycznej|Ogólna teoria względności}}}} Efekt: {{Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|Mechanika teoretyczna|Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|Statystyka matematyczna/Średnie w matematyce statystycznej|Ogólna teoria względności|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona}} Szablon pozwala na umieszczenie w niej dowolnej liczby nazw stron. === Wersja wielu jednostek z podawaniem wersji === Oczywiście do każdych z tych stron można dodać wersję, na podstawie której nastąpiła integracja. {{Pre|{{s|Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja 1{{=}}338449|Mechanika teoretyczna|wersja 2{{=}}253467|Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|wersja 3{{=}}250873|Statystyka matematyczna/Średnie w matematyce statystycznej|wersja 4{{=}}260021|Ogólna teoria względności|wersja 5{{=}}323173}}}} Efekt: {{Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja 1=338449|Mechanika teoretyczna|wersja 2=253467|Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|wersja 3=250873|Statystyka matematyczna/Średnie w matematyce statystycznej|wersja 4=260021|Ogólna teoria względności|wersja 5=323173|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona}} Szablon pozwala na umieszczenie w niej dowolnej liczby nazw stron. === Wersja z podaniem parametru link i jego pokrewnych === Wersje można także dodawać używając parametrów <code>link (link 1), link 2,...,link 10</code>, jednak wówczas należy skopiować całą zawartość paska adresu: {{Pre|{{s|Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|link{{=}}//pl.wikibooks.org/w/index.php?title{{=}}Szczególna_teoria_względności/Teoria_funkcji_lagrangianu&oldid{{=}}338449}}}} Efekt: {{Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|link=//pl.wikibooks.org/w/index.php?title=Szczególna_teoria_względności/Teoria_funkcji_lagrangianu&oldid=338449|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona}} Zaczęcie linku bez nazwy protokołu (http/https) umożliwi automatyczne dobranie protokołu {{lr|secure server|szyfrowanego połączenia|klucz projektu=en:w}} w zależności od tego, na jakim czytelnik będzie zalogowany. W innym przypadku przeglądarka może próbować się łączyć przez podany protokół. Jeśli na przykład Ty korzystasz z normalnego serwera (<nowiki>http://pl.wikipedia.org/cośtam</nowiki>), a na Twój link kliknie ktoś korzystający z bezpiecznego serwera, obsługującego szyfrowane połączenie (<nowiki>https://pl.wikipedia.org/cośtam</nowiki>), to wówczas zostanie on przeniesiony na normalny serwer - a tam może on nie być zalogowany. Więcej o tym {{lr|secure server#Local links|tutaj|klucz projektu=en:w}}. == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Zobacz też == * {{S|Przetłumaczony}} * {{S|Zintegrowany}} {{Szablony integracji i podziału}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII --> {{Kategorie | Szablony integracji i podziału | Szablony stron dyskusji | Szablony zasad i zaleceń Wikibooks }}</includeonly> tbzb2lx4mvjjmjeig2a6lyr2118lvoj 548284 548283 2026-07-25T12:48:23Z Persino 2851 548284 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Skomplikowany}} {{Lua|Ramka|Pudełko|Lang|Wiki}} <!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY --> == Użycie == Ten szablon służy zaznaczeniu, że dana strona zawiera treści skopiowane z innej istniejącej w Wikibooks strony. Np. z artykułu A zostaje wycięta dana sekcja i przeniesiona do nowego artykułu B. Działanie takie jest dozwolone pod warunkiem podania listy autorów (poprawne wydzielanie części tekstu do oddzielnej strony opisane jest {{lpr|<!-- Wikipedia na przełaj -->Wydzielanie|tutaj}}). Należy wówczas wstawić niniejszy szablon na stronę dyskusji artykułu B. Ten szablon powinien być wstawiany '''na górze strony dyskusji''' strony. ===Opis parametrów dodatkowych=== {{Szablonowy opis pudełka | opis parametrów szablonu = tak | nazwa szablonu = Wydzielony }} ===Przykłady użycia, błędnego, szablonu=== {{Szablonowy opis pudełka | nazwa szablonu = Wydzielony }} === Wersja najprostsza (dla początkujących) === {{Pre|{{s|Wydzielony|Ogólna teoria względności/Wprowadzenie do ogólnej teorii względności}}}} Efekt: {{Wydzielony|Ogólna teoria względności/Wprowadzenie do ogólnej teorii względności|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona}} === Wersja zalecana === Ponieważ hasła w Wikibooks zmieniają się dynamicznie, '''zaleca się podać numer wersji artykułu''', którą wykorzystano do kopiowania: {{Pre|{{s|Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja{{=}}338449}}}} Efekt: {{Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja=338449|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona}} Nr wersji można odczytać jako parametr typu <code>oldid='''338449'''</code> na pasku adresu przeglądarki po otwarciu hasła przez kliknięcie na odpowiednią godzinę+datę na stronie jego historii. Jeśli korzystasz z najnowszej wersji hasła, jej numer możesz zobaczyć klikając na "Link do tej wersji" w panelu bocznym (sekcja "narzędzia"). ---- {{Small|Szablon zawiera też parametr "link", który ma obecnie znaczenie tylko historyczne i nie należy go stosować (daje ten sam efekt co parametr "wersja", a może prowadzić do zerwania szyfrowanego połączenia). Wbrew wcześniejszej (błędnej) wersji dokumentacji, parametr ten nie służy do podawania historii zmian artykułu, z którego nastąpiło przeniesienie.}} === Wersja wielu jednostek bez podania wersji === W sytuacji, gdy nasza strona został zintegrowany nie z jednym, ale z wieloma innymi stronami w Wikibooks: {{Pre|{{s|Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|Mechanika teoretyczna|Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|Statystyka matematyczna/Średnie w matematyce statystycznej|Ogólna teoria względności}}}} Efekt: {{Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|Mechanika teoretyczna|Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|Statystyka matematyczna/Średnie w matematyce statystycznej|Ogólna teoria względności|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona}} Szablon pozwala na umieszczenie w niej dowolnej liczby nazw stron. === Wersja wielu jednostek z podawaniem wersji === Oczywiście do każdych z tych stron można dodać wersję, na podstawie której nastąpiła integracja. {{Pre|{{s|Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja 1{{=}}338449|Mechanika teoretyczna|wersja 2{{=}}253467|Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|wersja 3{{=}}250873|Statystyka matematyczna/Średnie w matematyce statystycznej|wersja 4{{=}}260021|Ogólna teoria względności|wersja 5{{=}}323173}}}} Efekt: {{Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|wersja 1=338449|Mechanika teoretyczna|wersja 2=253467|Mechanika kwantowa/Teoria atomu wodoru Sommerfelda|wersja 3=250873|Statystyka matematyczna/Średnie w matematyce statystycznej|wersja 4=260021|Ogólna teoria względności|wersja 5=323173|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona}} Szablon pozwala na umieszczenie w niej dowolnej liczby nazw stron. === Wersja z podaniem parametru link i jego pokrewnych === Wersje można także dodawać używając parametrów <code>link (link 1), link 2,...,link 10</code>, jednak wówczas należy skopiować całą zawartość paska adresu: {{Pre|{{s|Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|link{{=}}//pl.wikibooks.org/w/index.php?title{{=}}/Teoria_funkcji_lagrangianu&oldid{{=}}338449}}}} Efekt: {{Wydzielony|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Teoria funkcji lagrangianu|link=//pl.wikibooks.org/w/index.php?title=Wyprowadzenie_i_próba_podważenia,_praw:_szczególnej_i_ogólnej_teorii_względności/Teoria_funkcji_lagrangianu&oldid=338449|nazwa przestrzeni nazw=(main)|nazwa jednostki=Strona/Podstrona}} Zaczęcie linku bez nazwy protokołu (http/https) umożliwi automatyczne dobranie protokołu {{lr|secure server|szyfrowanego połączenia|klucz projektu=en:w}} w zależności od tego, na jakim czytelnik będzie zalogowany. W innym przypadku przeglądarka może próbować się łączyć przez podany protokół. Jeśli na przykład Ty korzystasz z normalnego serwera (<nowiki>http://pl.wikipedia.org/cośtam</nowiki>), a na Twój link kliknie ktoś korzystający z bezpiecznego serwera, obsługującego szyfrowane połączenie (<nowiki>https://pl.wikipedia.org/cośtam</nowiki>), to wówczas zostanie on przeniesiony na normalny serwer - a tam może on nie być zalogowany. Więcej o tym {{lr|secure server#Local links|tutaj|klucz projektu=en:w}}. == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Zobacz też == * {{S|Przetłumaczony}} * {{S|Zintegrowany}} {{Szablony integracji i podziału}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII --> {{Kategorie | Szablony integracji i podziału | Szablony stron dyskusji | Szablony zasad i zaleceń Wikibooks }}</includeonly> o56d2nxobabaxxcy0juycvp9uvg7c4m Szablon:SkomplikowanaStronaStart/opis 10 33321 548280 532240 2026-07-25T12:19:11Z Persino 2851 548280 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|StronicowyParser|Ramka}} {{Wysokie ryzyko|częste użycie}} {{Wysokie ryzyko|skomplikowany}} {{Szablony stronicowe (otwierające i zamykające)}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Jest to szablon stronicowy {{#switch:{{ROOTPAGENAME}}|SkomplikowanaStronaStart=otwierający|SkomplikowanaStronaKoniec=zamykający|#default=otwierający}} stronę. Szablon {{s|SkomplikowanaStronaStart}} jest używany z szablonem {{s|SkomplikowanaStronaKoniec}}. Służy nadaniu kolumnie pierwszej od lewej rozmiaru 800 pikseli (licząc bez marginesów wewnętrznych i obramowania, z tymi to 822 pikseli), a po prawej jest wyświetlane sformatowane menu z własnym bocznym: nazwą artykułu w książce, licencją (który na stronie głównej jest podany w postaci wywołania szablonu {{s|Licencja}}), wykaz modułów w książce i spis treści modułu, w którym jest on użyty. Szablon formatuje wszystko, co się znajduje się pomiędzy wspomnianymi szablonami. == Opis parametrów == Szablony {{s|SkomplikowanaStronaStart}} i {{s|SkomplikowanaStronaKoniec}} są używane bez żadnych argumentów. ---- Co do wstępów, zakończeń, nagłówków i stopek, to opis tych parametrów jest opisany na stronie szablonu {{s|StronaStart}}. == Przykład == Na samym początku modułu piszemy: {{Pre|{{Span|styl=color:green|'''<nowiki><noinclude></nowiki>'''}}{{s|SkomplikowanaStronaStart}}{{Span|styl=color:green|'''<nowiki></noinclude></nowiki>'''}}}} a na samym jego końcu: {{Pre|{{Span|styl=color:green|'''<nowiki><noinclude></nowiki>'''}}{{s|SkomplikowanaStronaKoniec}}{{Span|styl=color:green|'''<nowiki></noinclude></nowiki>'''}}}} ---- ---- ; Przykład ---- ; Na stronie głównej książki umieszczamy szablon na samym dole książki pod jego spisem treści: {{Pre| <nowiki>== Licencja == </nowiki> {{s|Licencja | Autor {{=}} <nowiki>[[Wikipedysta:Persino|Mirosław Makowiecki]]</nowiki> | Ukończone szkoły {{=}} Absolwent UMCS Fizyki Komputerowej Uniwersytetu Marii Curie-Skłodowskiej w Lublinie | Email {{=}} miroslaw(kropka)makowiecki(małpa)gmail(kropka)pl }} }} ---- ; Strona książki {{Pre| {{Span|styl=color:green|'''<nowiki><noinclude></nowiki>'''}}{{s|SkomplikowanaStronaStart}}{{Span|styl=color:green|'''<nowiki></noinclude></nowiki>'''}} {{s|ArtykułSubst}} {{Span|styl=color:green|'''<nowiki><noinclude></nowiki>'''}}{{s|Kreska nawigacja|{{s|AktualnaKsiążka}}|{{s|NastępnyArtykuł}}|{{s|PoprzedniArtykuł}}}}{{Span|styl=color:green|'''<nowiki></noinclude></nowiki>'''}} {{Span|styl=color:green|'''<nowiki><noinclude></nowiki>'''}}{{s|SkomplikowanaStronaKoniec}}{{Span|styl=color:green|'''<nowiki></noinclude></nowiki>'''}} }} ---- Na stronie {{ls2|Podręcznik/Ustawienia/Szablon:SkomplikowanaStronaStart/config}} są zmienne, by załadować odpowiedni artykuł. Ten szablon ustawień wygląda następująco: {{ŹródłoKodu|{{LuaSubst|Szablon:Podręcznik/Ustawienia/Szablon:StronaStart/config|inkludowana=tak}}}} Parametr {{Code|książka}}, czyli {{Parametr|książka|{{PobierzUstawienia|Podręcznik/Ustawienia/Szablon:SkomplikowanaStronaStart|książka}}}} jest nazw książki, a {{Code|artykuł}}, czyli {{Parametr|artykuł|{{PobierzUstawienia|Podręcznik/Ustawienia/Szablon:SkomplikowanaStronaStart|artykuł}}}}, jest nazwą artykułu. Ten szablon ustawień jest przekierowaniem do szablonu: {{ls2|Podręcznik/Ustawienia/Szablon:StronaStart/config}}. Szablon {{s|PobierzUstawienia}} pobiera ustawienia, jaki artykuł i książkę ma symulować, zobacz dokumentację tego szablonu, tzn. {{s|PobierzUstawienia/opis}}. Zmienna {{Code|tytuł}}, czyli {{Parametr|tytuł|{{PobierzUstawienia|Podręcznik/Ustawienia/Szablon:SkomplikowanaStronaStart|tytuł}}}}, przedstawia tytuł podręcznika, używany przez szablon {{s|Podręcznik}}. ----- ----- ; Wynik ---- ; Na stronie głównej książki pod jego spisem treści {{OpakujKategorieZeSortowaniem|1={{DivLinia}} == Licencja == {{Licencja | Autor = [[Wikipedysta:Persino|Mirosław Makowiecki]] | Ukończone szkoły = Absolwent UMCS Fizyki Komputerowej Uniwersytetu Marii Curie-Skłodowskiej w Lublinie | Email = miroslaw(kropka)makowiecki(małpa)gmail(kropka)pl }}}} ----- ; Strona książki {{SkomplikowanaStronaStart}} {{ArtykułSubst}} {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}} {{SkomplikowanaStronaKoniec}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "wstęp": { "description": "Nagłówek szablonowy na główną częścią strony, części podręcznikowej, w tej samej kolumnie.", "type": "unbalanced-wikitext" }, "zakończenie": { "description": "Stopka szablonowa pod główną częścią strony, części podręcznikowej, w tej samej kolumnie.", "type": "unbalanced-wikitext" }, "nagłówek": { "description": "Nagłówek nad główną częścią podręcznikową, w danym wierszu", "type": "unbalanced-wikitext" }, "stopka": { "description": "Stopka pod główną częścią podręcznikową, w danym wierszu.", "type": "unbalanced-wikitext" }, "nagłówek strony": { "description": "Nagłówek w części, na górze, głównej podręcznikowej.", "type": "unbalanced-wikitext" }, "stopka strony": { "description": "Stopka w części, na dole, głównej podręcznikowej.", "type": "unbalanced-wikitext" }, "nagłówek lewy": { "description": "Nagłówek w przestrzeni lewej, na górze, wolnej części strony.", "type": "unbalanced-wikitext" }, "stopka lewa": { "description": "Stopka w przestrzeni lewej, na dole, wolnej części strony.", "type": "unbalanced-wikitext" }, "nagłówek prawy": { "description": "Nagłówek w przestrzeni prawej, na górze, wolnej części strony.", "type": "unbalanced-wikitext" }, "stopka prawa": { "description": "Stopka w przestrzeni prawej, na dole, wolnej części strony.", "type": "unbalanced-wikitext" } }, "description": "Opis parametrów dla szablonu stronicowego otwierającego {{SkomplikowanaStronaStart}}, i zamykającego {{SkomplikowanaStronaKoniec}}." } </templatedata> == Zobacz też == ; Szablony konieczne * {{s|SkomplikowanaStronaStart}} i {{s|SkomplikowanaStronaKoniec}} - szablon stronicowy, kolejno otwierający i zamykający, do tego szablonu. ; Szablony wykorzystywane bezpośrednio przez ten szablon * Szablon spisu treści w artykule, tzn. {{s|TOC}}, przeciwnie niż w artykule głównym książki: {{s|SpisTreści}}. * {{s|HNumer}} - szablon, jak również {{s|SpisTreści}}, uwzględnia nagłówki i rozdziały od jeden wzwyż (a w szczególności od siedem wzwyż). {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony stronicowe (otwierające i zamykające)}} </includeonly> slfgs11p1avf85w34w91xlbzp2m7oyd Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności 0 58146 548278 548255 2026-07-25T12:09:53Z Persino 2851 Konto Persino przeniosło stronę [[Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Szczególna teoria względności]] do [[Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności]], bez pozostawienia przekierowania pod starym tytułem 545089 wikitext text/x-wiki <noinclude><!-- -->{{Czytanie porada}}<!-- -->{{SkomplikowanaStronaStart}}<!-- --></noinclude> {{KsiążkaSubst}} <noinclude>{{StopkaSpisTreści}}{{SkomplikowanaStronaKoniec}}</noinclude> d45tze8svomvrxawljnntk17o40f6u9 Ogólna teoria względności/Zasada wariacyjna a grawitacja i pole elektromagnetyczne 0 60071 548294 470269 2026-07-25T13:16:10Z Persino 2851 548294 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> == Wyznaczanie całkowitego tensora gęstości energii-pędu z uwzględnieniem pola elektromagnetycznego == Wyprowadzimy tutaj czemu jest równa gęstość lagrangianu pola elektromagnetycznego i jego tensor gęstości energii-pędu, a także całkowita gęstość lagrangianu masowego w obecności pola elektromagnetycznego i jego tensor gęstości energii-pędu, a także gęstość lagrangianu będziemy pisać uwzględniając zakrzywienie czasoprzestrzeni uwzględniając jego człony przestrzenne. ==== Gęstość lagrangianu i tensor gęstości energii-pędu ==== Lagrangian pola elektromagnetycznego, który jest zależny od tensora pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna|Elektrodynamika_klasyczna|EK}} i to przepiszemy używając definicji tensora metrycznego, a także z postulatu, że lagrangian pola elektromagnetycznego {{LinkWzór|27.1|Zasada_wariacyjna_w_elektromagnetyzmie|Elektrodynamika_klasyczna|EK}} jest słuszna również dla zakrzywionej czasoprzestrzeni, i zakładając, że w przestrzeni istnieje ogólnie niestałe pole elektromagnetyczne, zatem na podstawie tego możemy powiedzieć: {{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{4\mu_0}}F_{\omega\gamma}F^{\omega\gamma}\mp J^{\mu}A_{\mu}=-{{1}\over{4\mu_0}}F^{\omega\gamma}g_{\omega\alpha}g_{\gamma\beta}F^{\alpha\beta}\mp A^{\mu}g_{\mu\nu}J^{\nu}\;</MATH>|14.1}} Gęstość lagrangianu {{LinkWzór|14.1}} jest słuszna, bo udowodniliśmy, że {{Formuła|<MATH>r=0\;</MATH>}} w {{LinkWzór|T11|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, a jeżeli {{Formuła|<MATH>g\neq 0\;</MATH>}}, to {{LinkWzór|H12|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} przyjmuje wartość nieskończoną z dokładnością do znaku w mechanice Newtona (jest ona spełniona przy {{Formuła|<MATH>g^{\mu\nu}\simeq\eta^{\mu\nu}\;</MATH>}}, bo układy słabozakrzywione) przy przejściu {{Formuła|<MATH>c\rightarrow \infty\;</MATH>}}, a więc wtedy {{LinkWzór|T20|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} jest niespełnione, stąd {{Formuła|<MATH>r=0\;</MATH>}} w gęstości lagrangianu {{LinkWzór|T1|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, zatem postać gęstości lagrangianu rozważana w tym punkcie jest spełniona, a ona posłuży do wyliczenia jednego tylko tensora gęstości energii-pędu odpowiedzialnej tylko za oddziaływanie elektromagnetyczne. Następnym krokiem jest wyznaczenie tensora energii-pędu wykorzystując przy tym wzór {{LinkWzór|4.36|Zasada_wariacyjna_w_ogólnej_teorii_względności}}, zatem w takim razie możemy powiedzieć, że licząc najpierw pierwszy wyraz tego tensora gęstości energii-pędu: {{CentrujWzór|<MATH>\mp 2{{\partial\mathfrak{L}_o}\over{\partial g_{\mu\nu}}}=\pm 2{{\partial}\over{\partial g_{\mu\nu}}}\left[{{1}\over{4\mu_0}}F^{\omega\gamma}g_{\omega\alpha}g_{\gamma\beta}F^{\alpha\beta}\right]+2A^{\mu}J^{\nu}= \pm 2{{1}\over{4\mu_0}}\left[F^{\mu\gamma}g_{\gamma\beta}F^{\nu\beta}+F^{\omega\mu}g_{\omega\alpha}F^{\alpha\nu}\right]+2A^{\mu}J^{\nu} =\;</MATH>{{Br}}<MATH>=\pm {{1}\over{2\mu_0}}\left[{F^{\mu}}_{\beta}F^{\nu\beta}+{F_{\alpha}}^{\mu}F^{\alpha\nu}\right]+2A^{\mu}J^{\nu}=\pm{{1}\over{\mu_0}}{F^{\mu}}_{\beta}F^{\nu\beta}+2A^{\mu}J^{\nu} </MATH>|14.2}} Wtedy całe wyrażenie na tensor energii-pędu przyjmuje następującą postać matematyczną na podstawie wzoru {{LinkWzór|4.36|Zasada wariacyjna w ogólnej teorii względności}} wykorzystując wyliczony fakt {{LinkWzór|14.2}}, zatem wtedy dochodzimy do wniosku: {{CentrujWzór|<MATH>T^{(p)\mu\nu}=\pm{{1}\over{\mu_0}}{F^{\mu}}_{\beta}F^{\nu\beta}+2A^{\mu}J^{\nu}\mp g^{\mu\nu}\left({{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\pm J^{\alpha}A_{\alpha}\right)\;</MATH>|14.3}} Tensor energii-pędu {{LinkWzór|14.3}}, jest z oczywistych powodów symetryczny na przestawienie czynników. Policzmy ślad tensora gęstości energii pędu: {{CentrujWzór|<MATH>{T^{(p)\mu}}_{\mu}=T\!^{(p)}\!_{\mu}\!^{\mu}=\pm {{1}\over{\mu_0}}F^{\mu\beta}F_{\mu\beta}+2A^{\mu}J_{\mu}\mp{\delta^{\mu}}_{\mu}\left({{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\pm J^{\alpha}A_{\alpha}\right)=\pm {{1}\over{\mu_0}}\left[F^{\mu\beta}F_{\mu\beta}-{{n+1}\over{4}}F_{\alpha\beta}F^{\alpha\beta}\right]+2J^{\mu}A_{\mu}+\;</MATH>{{Br}}<MATH>-(n+1)J^{\mu}J_{\mu}=\mp{{n-3}\over{4\mu_0}}F^{\mu\beta}F_{\mu\beta}-(n-1)J^{\mu}A_{\mu}\;</MATH>|14.4}} A jeżeli w danym punkcie nie płyną prądy to według {{LinkWzór|14.4}} ślad tensora gęstości energii pędu {{LinkWzór|14.3}} jest równy zero w czasoprzestrzeni czterowymiarowej, bo wtedy {{Formuła|<MATH>n=3\;</MATH>}}. ==== Zachowawczość tensora gęstości energii-pędu w układach lokalnie płaskich według szczególnej teorii względności ==== Napiszmy zachowawczość tensora gęstości energii-pędu w układzie lokalnie płaskim. Tensor napięć-energii w postaci kontrawariantno-kowariantnego piszemy w postaci matematycznej wychodząc od końcowego wzoru {{LinkWzór|14.3}} wedle następującego sposobu: {{CentrujWzór|<MATH>T\!^{(p)}\!_{\mu}\!^{\nu}={{1}\over{\mu_0}}\left[\pm F^{\nu\beta}F_{\mu\beta}\mp{{1}\over{4}}{\delta_{\mu}}^{\nu}F_{\alpha\beta}F^{\alpha\beta}\right]+2A_{\mu}J^{\nu}-{\delta_{\mu}}^{\nu}A^{\alpha}J_{\alpha}\;</MATH>|14.5}} Zróżniczkujmy wyrażenie napisane wzorem {{LinkWzór|14.5}} względem współrzędnej kowariantnej, i korzystając z twierdzenia o pochodnej iloczynu, zatem wtedy dochodzimy do następującego wniosku: {{CentrujWzór|<MATH>T\!^{(p)}\!_{\mu}\!^{\nu}\!_{,\nu}={{1}\over{\mu_0}}\left[\mp{{1}\over{2}}F^{\alpha\beta}F_{\alpha\beta,\mu}\pm{F^{\nu\beta}}_{,\nu}F_{\mu\beta}\pm F^{\nu\beta}F_{\mu\beta,\nu}\right]+2A_{\mu,\nu}J^{\nu}+2A_{\mu}{J^{\nu}}_{,\nu}-{\delta_{\mu}}^{\nu}{J^{\alpha}}_{,\nu}A_{\alpha}-{\delta_{\mu}}^{\nu}J^{\alpha}A_{\alpha,\nu}=\;</MATH>{{Br}}<MATH>={{1}\over{\mu_0}}\left[\mp{{1}\over{2}}F^{\alpha\beta}F_{\alpha\beta,\mu}\pm{F^{\nu\beta}}_{,\nu}F_{\mu\beta}\pm F^{\nu\beta}F_{\mu\beta,\nu}\right]+2A_{\mu,\nu}J^{\nu}-{\delta_{\mu}}^{\nu}{J^{\alpha}}_{,\nu}A_{\alpha}-{\delta_{\mu}}^{\nu}J^{\alpha}A_{\alpha,\nu}=</MATH>{{Br}}<MATH>={{1}\over{\mu_0}}\left[\mp{{1}\over{2}}F^{\alpha\beta}F_{\alpha\beta,\mu}\pm{F^{\nu\beta}}_{,\nu}F_{\mu\beta}\pm F^{\nu\beta}F_{\mu\beta,\nu}\right]+2A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}-J^{\alpha}A_{\alpha,\mu}\;</MATH>|14.6}} Następnie należy skorzystać ze wzoru {{LinkWzór|26.94|Elektrodynamika_relatywistyczna|Elektrodynamika_klasyczna|EK}} i ze wzoru {{LinkWzór|26.14|Elektrodynamika_relatywistyczna|Elektrodynamika_klasyczna|EK}}, czyli są to związki zapisane wzorami wedle poniższych schematów: {{ElastycznyWiersz|1={{CentrujWzór|<MATH>{F^{\beta\nu}}_{,\nu}=\pm\mu_0J^{\beta}\;</MATH>|14.7}}|2={{CentrujWzór|<MATH>F_{\alpha\beta,\mu}=-F_{\mu\alpha,\beta}-F_{\beta\mu,\alpha}\;</MATH>|14.8}}}} Możemy wykorzystać związki na tensorowe równanie Maxwella {{LinkWzór|14.7}} i tożsamości {{LinkWzór|14.8}} i w ten sposób korzystając ze wzoru {{LinkWzór|14.6}} i wykorzystując te związki dochodzimy do następującego wniosku matematycznego: {{CentrujWzór|<MATH>T\!^{(p)}\!_{\mu}\!^{\nu}\!_{,\nu}={{1}\over{\mu_0}}\left[\pm {{1}\over{2}}\left(F^{\alpha\beta}F_{\mu\alpha,\beta}+F^{\alpha\beta}F_{\beta\mu,\alpha}\right)-\mu_0J^{\beta}F_{\mu\beta}\pm F^{\nu\beta}F_{\mu\beta,\nu}\right]+2A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\gamma}A_{\alpha}-J^{\alpha}A_{\alpha,\gamma}\;</MATH>|14.9}} Można udowodnić, że zmieniając rolami wskaźniki we wzorze {{LinkWzór|14.9}}, że pierwszy, drugi i czwarty wyraz się ze sobą redukują do zera, wtedy na podstawie tego możemy napisać, że wspomniana tożsamość: {{CentrujWzór|<MATH>T\!^{(p)}\!_{\mu}\!^{\nu}\!_{,\nu}=-F_{\mu\beta}J^{\beta}+2A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}-J^{\alpha}A_{\alpha,\mu}=-F_{\mu\beta}J^{\beta}+A_{\mu,\nu}J^{\nu}+A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}-J^{\alpha}A_{\alpha,\mu}=\;</MATH>{{Br}}<MATH>=-F_{\mu\beta}J^{\beta}+A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}+J^{\beta}(A_{\mu,\beta}-A_{\beta,\mu})=-F_{\gamma\beta}J^{\beta}+A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}+F_{\mu\beta}J^{\beta}=A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}=0\;</MATH>|14.10}} Dlatego {{Formuła|<MATH>T\!^{(p)}\!_{\mu}\!^{\nu}\!_{,\nu}=0\;</MATH>}}, bo mamy układ lokalnie płaski o glokalnie stałym tensorze prędkości, w którym gęstość prądu jest wielkością lokalnie stałą, a potencjał tensorowy elektromagnetyczny jest lokalnie stały, czyli zachodzi: {{Formuła|<MATH>A_{\gamma,\omega}=0\;</MATH>}} i {{Formuła|<MATH>{J^{\omega}}_{,\gamma}=0\;</MATH>}}, stąd zachowawczość tensora gęstości energii-pędu na podstawie {{LinkWzór|14.10}} jest w tych układach spełniona i zachodzi: {{CentrujWzór|<MATH>T\!^{(p)}\!_{\mu}\!^{\nu}\!_{,\nu}=0</MATH>|14.11}} Ale ponieważ z definicji tensora gęstości siły dla ładunku w polu elektromagnetycznym przedstawiamy wzorem {{LinkWzór|26.61|Elektrodynamika_relatywistyczna|Elektrodynamika_klasyczna|EK}}, stąd zachowawczość tensora energii-pędu tego pola jest równa: {{CentrujWzór|<MATH>dK^{\mu}=-dqF^{\mu\nu}u_{\nu}=-{{\gamma}\over{c}}F^{\mu\nu}J_{\nu}dV\Rightarrow {{dK^{\mu}}\over{dV}}=-{{\gamma}\over{c}}{T^{\mu\nu}}_{,\nu}\Rightarrow{T^{\mu\nu}}_{,\nu}=F^{\mu\nu}J_{\nu}\;</MATH>|14.11a}} Łącząc wzory {{LinkWzór|14.11a}} i {{LinkWzór|14.10}} oraz przechodząc od układów lokalnie płaskich do zakrzywionych mamy: {{CentrujWzór|<MATH>A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}=F_{\mu\nu}J^{\nu}\Rightarrow -F_{\mu\nu}J^{\nu}+A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}=0\Rightarrow-F_{\mu\nu}J^{\nu}+A_{\mu;\nu}J^{\nu}-{J^{\alpha}}_{;\mu}A_{\alpha}=0\;</MATH>|14.11b}} Ostatnie równanie w {{LinkWzór|14.11b}} jest równaniem na cechowanie w polu elektromagnetycznym w układach zakrzywionych. To cechowanie dla układów zakrzywionych jest bardzo podobne do cechowania {{LinkWzór|M014|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} dla układów słabozakrzywionych, tylko zamiast średnika tam są przecinki. ==== Całkowita gęstość lagrangianu i pędu ==== Wyznaczymy tutaj całkowitą gęstość lagrangianu i pędu znając gęstość lagrangianu mechanicznego i elektromagnetycznego. ===== Całkowita gęstość lagrangianu masowego ===== Całkowity lagrangian masowy jest sumą lagrangianu mechanicznego {{LinkWzór|4.360b|Zasada wariacyjna w ogólnej teorii względności}} i elektromagnetycznego {{LinkWzór|14.1}}: {{CentrujWzór|<MATH>\mathfrak{L}_{m}=\mathfrak{L}_{mech}+\mathfrak{L}_{em}=\mp\rho_0 c^2u^{\alpha}u_{\alpha}-{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\mp J^{\alpha}A_{\alpha}\;</MATH>|14.12}} ===== Całkowita gęstość lagrangianu ===== Całkowita gęstość lagrangianu jest sumą lagrangianu przestrzennego i masowego, stąd: {{CentrujWzór|<MATH>\mathfrak{L}=\mathfrak{L}_{m}+\mathfrak{L}_g=\mp\rho_0c^2u^{\alpha}u_{\alpha}-{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\mp J^{\alpha}A_{\alpha}+{{1}\over{2\kappa}}(R-2\Lambda)\;</MATH>|14.12a}} ===== Całkowita gęstość pędu ===== Wyznaczmy gęstość tensora pędu uogólnionego, wiedząc, że mamy {{LinkWzór|8.1|Kanoniczne metody mechaniki klasycznej|Mechanika teoretyczna|MT}}, znając wzór na całkowitą gęstość lagrangianu {{LinkWzór|14.12}}: {{CentrujWzór|<MATH>\mathfrak{p}^{i}={{1}\over{dV^'}}{{\partial(\mathfrak{L}dV^')}\over{\partial v_{i}}}=\rho v^{i}+\mathfrak{q}A^{i}\;</math>|14.12ba}} ==== Całkowity lagrangian i pęd ==== Wyznaczymy tutaj całkowity lagrangian i pęd z ich odpowiedników, które są całkowitymi gęstościami lagrangianu i pędu. ===== Całkowity lagrangian masowy ===== We wzorze {{LinkWzór|14.12}} aby otrzymać całkowity lagrangian z całkowitej gęstości lagrangianu należy go scałkować w sposób: {{CentrujWzór|<MATH>L_m=\int\mathfrak{L}_md^3x^'=\int d^3x^'\left(\mp\rho_0c^2u^{\alpha}u_{\alpha}-{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\mp J^{\alpha}A_{\alpha}\right)</MATH>|14.12b}} ===== Całkowity lagrangian ===== We wzorze {{LinkWzór|14.12b}} aby otrzymać całkowity lagrangian z całkowitej gęstości lagrangianu masowego należy dodać tam człon związany z gęstością lagrangianu przestrzennego w sposób: {{CentrujWzór|<MATH>L=\int\mathfrak{L}d^3x^'=\int(\mathfrak{L}_m+\mathfrak{L}_g)d^3x^'=\int d^3x^'\left(\mp\rho_0c^2u^{\alpha}u_{\alpha}-{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\mp J^{\alpha}A_{\alpha}+{{1}\over{2\kappa}}(R-2\Lambda)\right)\;</MATH>|14.12c}} ===== Pęd uogólniony ładunku punktowego ===== A pęd uogólniony można otrzymać całkując gęstość pędu uogólnionego {{LinkWzór|14.12ba}} zakładając, że ładunek jest punktowy: {{CentrujWzór|<MATH>p^{i}=\int\mathfrak{p}^{i}d^3x^'=m_0cu^{i}+qA^{i}\;</math>|14.12c1}} ==== Gęstość hamiltonianu masowego ==== Wyznaczmy gęstość hamiltonianu, wiedząc że definicja hamiltonianu jest w punkcie {{LinkWzór|8.4|Kanoniczne metody mechaniki klasycznej|Mechanika teoretyczna|MT}}, znając gęstość lagrangianu {{LinkWzór|14.12}} i gęstość pędu {{LinkWzór|14.12ba}}, zatem: {{CentrujWzór|<MATH>\mathfrak{H}_m=v_{i}\mathfrak{p}^{i}-\mathfrak{L}=\rho v^iv^i+\mathfrak{\rho}_qA^{i}v^{i}+\left(\rho v^{\alpha}v_{\alpha}+{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}+J^{\alpha}A_{\alpha}\right)=\rho c^2+{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}+\mathfrak{\rho}_q\varphi\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\mathfrak{H}_m=\rho c^2+{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}+\mathfrak{\rho}_q\varphi</MATH>|14.12a2}} Hamiltonian {{LinkWzór|14.12}} jest to hamiltonian masowy w elektromagnetyzmie. ==== Całkowita gęstość hamiltonianu ==== Widzimy, gdy we wzorze {{LinkWzór|14.12}} na gęstość lagrangianu masowego uwzględnimy gęstość lagrangianu przestrzennego to gęstość pędu się nie zmienia, a więc zgodnie z definicją gęstości hamiltonianu {{LinkWzór|14.12a}} piszemy w formie: {{CentrujWzór|<MATH>\mathfrak{H}=\rho c^2+{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}+\mathfrak{\rho}_q\varphi-{{1}\over{2\kappa}}(R-2\Lambda)\;</MATH>|14.12b3}} Widzimy, że w {{LinkWzór|14.12b3}} hamiltonian zależy od skalarów krzywizny Ricciego {{Formuła|<MATH>R\;</MATH>}} {{LinkWzór|2.130|Rachunek tensorowy|Metody matematyczne fizyki|MMF}}. ====Całkowity tensor gęstości energii-pędu==== Całkowity tensor gęstości energii-pędu jest sumą tensora gęstości energii-pędu kinematycznego {{LinkWzór|4.36b|Zasada wariacyjna w ogólnej teorii względności}} i tensora gęstości gęstości energii-pędu elektromagnetycznego {{LinkWzór|14.3}}, wtedy: {{CentrujWzór|<MATH>T^{\mu\nu}=T^{(k)\mu\nu}+T^{(p)\mu\nu}=(\rho_0c^2+p)u^{\mu}u^{\nu}\mp pg^{\mu\nu}+\left[\pm{{1}\over{\mu_0}}F^{\mu\beta}{F^{\nu}}_{\beta}+2A^{\mu}J^{\nu}\mp g^{\mu\nu}\left({{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\pm A^{\alpha}J_{\alpha}\right)\right]\;</MATH>|14.13}} Zachowawczość lokalną tensora gęstości energii-pędu {{LinkWzór|14.13}} piszemy w skrócie w układach lokalnie płaskich: {{CentrujWzór|<MATH>{T^{\omega\gamma}}_{,\gamma}=0\;</MATH>|14.14}} W równaniu {{LinkWzór|14.14}} zawarte jest zachowanie energii i pędu w elektrodynamice dla układów lokalnie płaskich, które jest słuszne również dla układów zakrzywionych po zamienieniu przecinka średnikiem. ==== Równania dla elektromagnetyzmu dla ciał rozciągłych dla układów zakrzywionych ==== Jeżeli jest spełniona własność {{LinkWzór|14.14}} (zachowawczość tensora gęstości energii-pędu) przy tensorze gęstości energii-pędu {{LinkWzór|14.13}} dla układów lokalnie płaskich, to dla układów zakrzywionych: {{CentrujWzór|<MATH>{T^{\mu\nu}}_{;\gamma}=0\;</MATH>|O10}} jest spełniona własność dla czasoprzestrzeni zakrzywionej na tensor pola elektromagnetycznego: {{CentrujWzór|<MATH>F_{\mu\nu}=A_{\mu;\nu}-A_{\nu;\mu}=A_{\mu,\nu}-A_{\alpha}{\Gamma^{\alpha}}_{\mu\nu}-A_{\nu,\mu}+A_{\alpha}{\Gamma^{\alpha}}_{\nu\mu}=A_{\mu,\nu}-A_{\nu,\mu}\Rightarrow F_{\mu\nu}=A_{\mu,\nu}-A_{\nu,\mu}\;</MATH>|O1a}} Równania pola przy tensorze pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika relatywistyczna|Elektrodynamika klasyczna|EK}} i tensorze dualnym {{LinkWzór|26.11|Elektrodynamika relatywistyczna|Elektrodynamika klasyczna|EK}} według spełnionych równań w układach lokalnie płaskich {{LinkWzór|26.12|Elektrodynamika relatywistyczna|Elektrodynamika klasyczna|EK}} i {{LinkWzór|26.13|Elektrodynamika relatywistyczna|Elektrodynamika klasyczna|EK}} są: {{ElastycznyWiersz|1={{CentrujWzór|<MATH>{F^{\mu\nu}}_{;\nu}=\pm \mu_0J^{\mu}\;</MATH>|O1b}}|2={{CentrujWzór|<MATH>{G^{\mu\nu}}_{;\nu}=0\;</MATH>|O1c}}}} Jest również spełnione cechowanie Lorentza na podstawie cechowania Lorentza {{LinkWzór|26.58|Elektrodynamika relatywistyczna|Elektrodynamika klasyczna|EK}} w układach lokalnie płaskich: {{CentrujWzór|<MATH>{A^{\mu}}_{;\mu}=0\;</MATH>|O1d}} A także uwzględniając równanie ciągłości na podstawie równania ciągłości {{LinkWzór|26.8|Elektrodynamika relatywistyczna|Elektrodynamika klasyczna|EK}} w układach lokalnie płaskich: {{CentrujWzór|<MATH>{J^{\mu}}_{;\mu}=0\;</MATH>|O1e}} Na tym skończyliśmy wykład podstawowych równań elektrodynamiki dla czasoprzestrzeni zakrzywionych. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> 8nyp7uahdi55lvhla543kh5l4rkexce Ogólna teoria względności/Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi 0 60090 548279 470262 2026-07-25T12:15:33Z Persino 2851 548279 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> == Równania ruchu, a linie geodezyjne w ogólnej teorii względności == Mając już policzona metrykę czasoprzestrzeni poprzez równania Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}} lub mając niezerową stałą kosmologiczną, to wtedy liczymy z równania {{LinkWzór|1.58|Wprowadzenie do ogólnej teorii względności}}, zatem na podstawie tegoż równania liczymy już wspomnianą metrykę poprzez policzone już elementy tensora metrycznego. Na podstawie tego liczymy elementy tensora Christoffela i w ten sposób wyznaczamy następne położenie cząstki masowej w ogólnej teorii względności. Już mając następne położenie wyznaczamy znów metrykę przy nowym położeniu cząstek masowych i te kroki powtarzamy w nieskończoność do chwili, do której interesuje nas badanie układu relatywistycznego. W przestrzeni euklidesowej linia prosta jest to krzywa, której przenosi swój własny wektor prędkości w sposób równoległy do tej krzywej w danym jej punkcie, w przestrzeni nieuklidesowej mamy jakąś krzywą, która jest prostą w tym naszym układzie, i aby nasz wektor był przenoszony równolegle to musi być styczna do tej prostej, czyli wielkość zdefiniowana {{Formuła|<MaTH>U^{\mu}={{dx^{\mu}}\over{d\lambda}}\;</MATH>}} musi spełniać warunek: {{CentrujWzór|<MATH>{U^{\mu}}_{;{\beta}}=0\;\;</MATH>|1.70}} aby cały czas wektor U{{Sup|&mu;}} był styczny do naszej prostej w tej naszej przestrzeni absolutnej. Oczywiste jest, że wektor U{{Sup|&mu;}}, aby był czterowektorem prędkości {{LinkWzór|1.6|Wprowadzenie do ogólnej teorii względności}}, tzn. U{{Sup|&mu;}}=u{{Sup|&mu;}}, to musi zachodzić &lambda;=s, czyli nasz parametr byłby wtedy interwałem czasoprzestrzennym. Ale dla ogólności rozważań lepiej przyjąć dowolny parametr &lambda;, bo zmiana interwału czasoprzestrzennego dla bezmasowych cząstek (m{{Sub|0}}) jest równy zero wedle {{LinkWzór|1.3|Wprowadzenie do ogólnej teorii względności}}, wtedy czterowektor prędkości jest nieokreślony. Jeśli &lambda;=s, ale lepiej jest, gdy to jest dowolny parametr, ze względu na fotony pędzące z prędkościa światła {{Formuła|<MATH>c\;</MATH>}}, wtedy {{Formuła|<MATH>ds=0\;</MATH>}}, ale nie ogólnie {{Formuła|<MATH>d\lambda=0\;</MATH>}}, to równanie {{LinkWzór|1.70}} jest spełnione, gdy w układzie badanym nie występują siły niegrawitacyjne, występuje tylko grawitacja z zaniedbywalnym ciśnieniem, którego od niej gęstość siły jest bardzo mała, lub według zasady niezależności działania tensorów sił, jeśli rozpratrujemy tylko ruch pochodzący od grawitacji, wtedy równanie {{LinkWzór|1.70}} jest dokładnie spełnione. Normalnie dla całkowitego tensora sił dla ciała punktowego z uwzględniem innych tensorów sił równanie {{LinkWzór|1.70}} przy tej definicji &lambda; uogólniamy do: {{CentrujWzór|<MATH>m_0c{U^{\mu}}_{;\nu}U^{\nu}=K^{\mu}\;</MATH>|1.70a}} Gdy {{Formuła|<MATH>K^{\mu}_c=0\;</MATH>}}, to równość {{LinkWzór|1.70a}} przechodzi w {{LinkWzór|1.70}}. W czasoprzestrzeni lokalnie płaskiej wzór {{LinkWzór|1.70a}}, wtedy możemy zamienić przecinek średnikiem, bo symbole Christoffela są tam równe zero, przechodzi w: {{CentrujWzór|<MATH>m_0c {U^{\mu}}_{,\nu}U^{\nu}=K^{\mu}_c=K^{\mu}\Rightarrow m_0c{{dU^{\mu}}\over{d\lambda}}=K^{\mu}_c\Rightarrow {{dP^{\mu}}\over{d\lambda}}=K^{\mu}_c\wedge P^{\mu}=m_0cU^{\mu}\;</MATH>|1.70b}} Równanie {{LinkWzór|1.70b}} jest to tensorowe równanie dynamiki Einsteina szczególnej teorii względności, napisane w {{LinkWzór|2.18|Tensory w czasoprzestrzeni|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, przy {{Formuła|<MATH>\lambda=s\;</MATH>}}, wtedy {{Formuła|<MATH>U^{\mu}=u^{\mu}\;</MATH>}}, czyli jest spełniona na pewno silna zasada równoważności. Równanie {{LinkWzór|1.70a}} dla układów rozciągłych wygląda następująco: {{CentrujWzór|<MATH>dm_0c{U^{\mu}}_{;\nu}U^{\nu}=dK^{\mu}\Rightarrow\rho_0c{U^{\mu}}_{;\nu}U^{\nu}={{dK^{\mu}}\over{dV_0}}\Rightarrow\sqrt{-g}\rho_0\gamma c{U^{\mu}}_{;\nu}U^{\nu}={{dK^{\mu}}\over{dV}}\;</MATH>|1.70ab}} *Twierdzenia dla układów rozciągłych przedstawiamy zastępując w twierdzeniach dla układów dyskretnych w obliczeniach według {{Formuła|<MATH>m_0\rightarrow dm_0\;</MATH>}} i {{Formuła|<MATH>K^{\mu}\rightarrow dK^{\mu}\;</MATH>}}, jak np. przechodząc od {{LinkWzór|1.70a}} do {{LinkWzór|1.70ab}}, i wiedząc, że czas jako współrzędna jest taki sam jak w układzie inercjalnym, wtedy: {{Formuła|<MATH>\sqrt{-g}d^4x=d^4x^'\Rightarrow\sqrt{-g}dVdct=dV_pdct\Rightarrow\sqrt{-g}dV=dV_p\;</MATH>}}{{Patrz|FF1}} i {{Formuła|<MATH>dV_p=\gamma^{-1} dV_0\;</MATH>}}{{Patrz|FF2}}, gdzie {{Formuła|<MATH>dV\;</MATH>}}, {{Formuła|<MATH>dV_p\;</MATH>}} i {{Formuła|<MATH>dV_0\;</MATH>}} są to kolejno infinitezymalne objętości w układach: zakrzywionym, płaskim inercjalnym i spoczynkowym inercjalnym, a {{Formuła|<MATH>g\;</MATH>}} jest to wyznacznik tensora metrycznego prostego, a {{Formuła|<MATH>\gamma\;</MATH>}} jest zdefiniowane w punkcie {{LinkWzór|1.41|Transformacje różniczek czasu i położenia|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} (tam wybieramy ze znakiem plus). Gdzie tam pierwsza zależność wynika z {{LinkWzór|3.8|Właściwości skalaru tensora metrycznego}}, a druga z {{LinkWzór|4.6a|Własności czasoprzestrzeni|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}. === Linie geodezyjne, a druga pochodna czterowektora kontrawariantnego położenia === Będziemy badać wzory na linie geodezyjne, gdy siły niegrawitacyjne występują lub one nie występują, a poza tym siły grawitacyjne w nich zawsze występują. ==== Gdy występują tylko siły grawitacyjne ==== Z definicji pochodnej kontrawariantnej i własności styczności wektora do prostej {{LinkWzór|1.70}}, a także z definicji pochodnej tensorowej można zapisać równanie geodezyjne w postaci pierwotnej: {{CentrujWzór|<MATH>0={U^{\mu}}_{;{\beta}}={U^{{\mu}}}_{;{\beta}}={U^{\mu}}_{,{\beta}}+U^{\alpha}{\Gamma^{\mu}}_{{\alpha}{\beta}}\;\;</MATH>|1.71}} Pomnóżmy obustronnie równość tensorową {{LinkWzór|1.71}} przez kontrawariantny tensor czterowektora prędkości U{{Sup|&beta;}}, wtedy otrzymujemy inne równoważne do poprzedniego równanie: {{CentrujWzór|<MATH>0=U^{\beta}{U^{\mu}}_{,{\beta}}+U^{\alpha}U^{\beta}{\Gamma^{\mu}}_{{\alpha}{\beta}}\;\;</MATH>|1.72}} Z definicji czterowektora prędkości i twierdzenie o pochodnej złożonej wyznaczmy wyrażenie występujące jako pierwszy składnik we wzorze {{LinkWzór|1.72}}, zatem możemy napisać: {{CentrujWzór|<MATH>U^{\beta}{U^{\mu}}_{,{\beta}}={{dx^{\beta}}\over{d\lambda}}{{\partial}\over{\partial x^{\beta}}}\left({{dx^{\mu}}\over{d\lambda}}\right)={{d}\over{d\lambda}}\left({{d x^{\mu}}\over{d\lambda}}\right)={{dU^{\mu}}\over{d\lambda}}\;\;</MATH>|1.73}} Na podstawie obliczeń {{LinkWzór|1.73}} na liczbach ogólnych, które to wniosek podstawiamy do równania tensorowego {{LinkWzór|1.71}} za pierwszy składnik, zatem udowodniliśmy że zachodzi: {{CentrujWzór|<MATH>0={{dU^{\mu}}\over{d\lambda}}+{\Gamma^{\mu}}_{{\alpha}{\beta}}U^{\alpha}U^{\beta}\;\;</MATH>|1.74|Obramuj}} Podstawiając, za współrzędne czterowektora wektora prędkości U{{Sup|&beta;}} jego definicję, jako pochodna czteropołożenia względem interwału czasoprzestrzennego, dostajemy równoważne równanie tensorowe do {{LinkWzór|1.74}}: {{CentrujWzór|<MATH>0={{d}\over{d\lambda}}\left({{dx^{\mu}}\over{d\lambda}}\right)+{\Gamma^{\mu}}_{{\alpha}{\beta}}{{dx^{\alpha}}\over{d\lambda}}{{dx^{\beta}}\over{d\lambda}}\;\;</MATH>|1.75}} Wyrażenie {{LinkWzór|1.74}} możemy zapisać w postaci bezwskaźnikowej, bez uwzględnienia z jakimi rodzaju tensorami mamy do czynienia: {{CentrujWzór|<MATH>0={{d\mathbf{U}}\over{d\lambda}}+\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}\;\;</MATH>|1.76}} Otrzymaliśmy równanie, dzięki któremu czterowektor U{{Sup|&beta;}} jest przenoszony równolegle, stycznie wzdłuż naszej prostej i jest to równanie ruchu cząstki masowej lub bezmasowej w ogólnej teorii względności, jeśli {{Formuła|<MATH>K^{\mu}=0\;</MATH>}} w {{LinkWzór|1.76a}} dla układów dyskretnych i {{Formuła|<MATH>{{dK^{\mu}}\over{dV}}\;</MATH>}} w {{LinkWzór|1.77ca}} dla układów rozciągłych. Jeśli w prowadzimy definicję parametru &lambda;, który może być interwałem czasoprzestrzennym "s", poprzez inny parametr &xi; w sposób: s=a&xi;+b, to można udowodnić w sposób łatwy, korzystając z poprzedniego równania, że line geodezyjne wedle {{LinkWzór|1.74}} przy zerowych siłach niegrawitacyjnych zapisujemy jako: {{CentrujWzór|<MATH>0={{d}\over{d\xi}}\left({{dx^{\mu}}\over{d\xi}}\right)+{\Gamma^{\mu}}_{{\alpha}{\beta}}{{dx^{\alpha}}\over{d\xi}}{{dx^{\beta}}\over{d\xi}}\;\;</MATH>|1.77}} W przestrzeni euklidesowej płaskiej, gdy mamy zerowe siły niegrawitacyjne, mamy na pewno, że poszczególne elementy tensora metrycznego spełniają związek: &Gamma;{{Sup|&mu;}}{{Sub|&alpha;&beta;}}=0, stąd dostajemy: {{CentrujWzór|<MATH>{{d}\over{d\xi}}\left({{dx^{\mu}}\over{d\xi}}\right)=0\Rightarrow x^{\mu}=a^{\mu}\xi+b^{\mu}\;\;</MATH>|1.78}} Po rozwiązaniu równania {{LinkWzór|1.74}} dowiadujemy się, że rozwiązaniem jego jest równaniem prostej w naszej przestrzeni przy naszej definicji tensora Christoffela. ==== Gdy również występują siły niegrawitacyjne ==== Będziemy rozważać tu układy dyskretne i rozciągłe. ===== Układy dyskretne ===== A gdy występują inne tensory sił, to wtedy równanie {{LinkWzór|1.76}} podobnie przekształcamy jak {{LinkWzór|1.76}} z {{LinkWzór|1.70}}, wtedy: {{CentrujWzór|<MATH>m_0c\left({{d\mathbf{U}}\over{d\lambda}}+\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}\right)=\mathbf K\Rightarrow m_0c{{d\mathbf{U}}\over{d\lambda}}=-m_0c\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}+\mathbf K\Rightarrow m_0c{{dU^{\mu}}\over{d\lambda}}=-m_0c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}+K^{\mu}\;</MATH>|1.76a}} Gdy tensor sił niegrawitacyjnych jest równy zero, wtedy równość {{LinkWzór|1.76a}} przechodzi w równanie geodezyjne {{LinkWzór|1.75}}, gdy na układ nie działają żadne siły niegrawitacyjne. Druga zasada dynamiki Einsteina według równości końcowej {{LinkWzór|1.76a}} i wzór na tensor siły pochodzący od grawitacji, piszemy wzorami: {{ElastycznyWiersz|{{CentrujWzór|<MATH>\mathbf K_c=m_0c{{d\mathbf{U}}\over{d\lambda}}={{d\mathbf{P}}\over{d\lambda}}\Rightarrow K_c^{\mu}=m_0c{{dU^{\mu}}\over{d\lambda}}={{dP^{\mu}}\over{d\lambda}}\;</MATH>|1.77b}}|{{CentrujWzór|<MATH>\mathbf K_g=-m_0c\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}\Rightarrow K_g^{\mu}=-m_0c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}\;</MATH>|1.77c}}}} A tensor siły w {{LinkWzór|1.76a}}, czyli {{Formuła|<MATH>\mathbf K\;</MATH>}}, jest tensorem siły od oddziaływań niegrawitacyjnych. ====== Kilka żródeł grawitacyjnych ====== Załóżmy, że mamy kilka mas, każda ona zakrzywia czasoprzestrzeń, weźmy zasadę niezależności działania tensorów sił szczególnej teorii względności spełniona też w ogólnej teorii względności, wtedy korzystając z równości na tensor siły grawitacyjnej mamy na podstawie {{LinkWzór|1.77c}}: {{CentrujWzór|<MATH>K_g^{\mu}=\sum_i K_{gi}^{\mu}=-\sum_im_{0}c{\Gamma^{\mu}_i}_{\alpha\beta}U^{\alpha}_iU^{\beta}_i=-m_0c\sum_i{\Gamma^{\mu}_i}_{\alpha\beta}U^{\alpha}_iU^{\beta}_i=-m_0c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}\;</MATH>|1.77ca11}} Widzimy, że w {{LinkWzór|1.77ca11}} poszczególne masy dostarczają swoje własne symbole Christoffela {{Formuła|<MATH>{\Gamma^{\mu}_i}_{\alpha\beta}\;</MATH>}} do poruszającej się masy względem niego, a wszystkie pola grawitacyjne od tych mas tworzą razem inne symbole {{Formuła|<MATH>{\Gamma^{\mu}}_{\alpha\beta}\;</MATH>}}, które opisuje całkowite zakrzywienie czasoprzestrzeni od tych mas. ===== Układy rozciągłe ===== Równanie geodezyjne {{LinkWzór|1.76a}} dla układów rozciągłych zastępując w {{LinkWzór|1.77c}} wielkości: {{Formuła|<MATH>m_0\;</MATH>}} i {{Formuła|<MATH>K^{\mu}\;</MATH>}}, kolejno przez: {{Formuła|<MATH>dm_0\;</MATH>}} i {{Formuła|<MATH>dK^{\mu}\;</MATH>}}, napiszmy, wiedząc, że czas jako współrzędna jest taki sam jak w układzie inercjalnym: {{CentrujWzór|<MATH>dm_0c\left({{d\mathbf{U}}\over{d\lambda}}+\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}\right)=d\mathbf K\Rightarrow dm_0c{{d\mathbf{U}}\over{d\lambda}}=-dm_0c\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}+d\mathbf K\Rightarrow\rho_0c{{d\mathbf{U}}\over{d\lambda}}=-\rho_0c\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}+{{d\mathbf K}\over{dV_0}}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow \sqrt{-g}\rho_0c\gamma{{d\mathbf{U}}\over{d\lambda}}=-\sqrt{-g}\rho_0c\gamma\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}+{{d\mathbf K}\over{dV}}\Rightarrow\sqrt{-g}\rho_0\gamma c{{dU^{\mu}}\over{d\lambda}}=-\sqrt{-g}\rho_0\gamma c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}+{{dK^{\mu}}\over{dV}}\;</MATH>|1.77ca}} Gęstość tensora siły całkowitej stanowiącej drugą zasadę dynamiki Einsteina szczególnej teorii względności dla układów rozciągłych, też i gęstość tensora siły od sił grawitacyjnych, napiszmy kolejno na podstawie {{LinkWzór|1.77ca}}: {{ElastycznyWiersz|{{CentrujWzór|<MATH>{{dK^{\mu}_c}\over{dV}}=\sqrt{-g}\rho_0\gamma c{{dU^{\mu}}\over{d\lambda}}={{dm_0}\over{dV}}c{{dU^{\mu}}\over{d\lambda}}\;</MATH>|LLL1}}|{{CentrujWzór|<MATH>{{dK^{\mu}_g}\over{dV}}=-\sqrt{-g}\rho_0\gamma c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}=-{{dm_0}\over{dV}}c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}\;</MATH>|LLL2}}}} === Linie geodezyjne, a druga pochodna czterowektora kowariantnego położenia === Będziemy badać wzory na linie geodezyjne, gdy siły niegrawitacyjne występują lub one nie występują, a poza tym siły grawitacyjne w nich zawsze występują. ==== Gdy występują tylko siły grawitacyjne ==== Przedstawimy teraz inne podejście do ruchu cząstki materialnej czyli piszemy linie geodezyjne w sposób kowariantny, czyli proste w przestrzeni czterowymiarowej spełniający warunek, który jest pochodną kowariantną U{{Sup|&mu;}}{{Sub|;&beta;}}=0, ale z definicji pochodnej kowariantnej możemy napisać: {{CentrujWzór|<MATH>0=U_{{\mu};\beta}=U_{{\mu},{\beta}}-{\Gamma^{{\alpha}}}_{{\mu}\beta}U_{{\alpha}}\;</MATH>|1.79}} Pomnóżmy teraz obie strony równania tensorowego {{LinkWzór|1.79}} przez elementy czterowektora prędkości U{{Sup|&beta;}}, otrzymując wynikowe równanie: {{CentrujWzór|<MATH>0=U^{\beta}U_{{\mu},{\beta}}-{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}\;</MATH>|1.80}} Rozwińmy wyrażenie występujące w równaniu tensorowym {{LinkWzór|1.80}} występujący jako odjemna wykorzystując definicję pochodnej zupełnej, i przestawmy ją jako pochodna kowariantnego tensora czteroprędkości względem parametru &lambda;. {{CentrujWzór|<MATH>U^{\beta}U_{{\mu},{\beta}}={{dx^{\beta}}\over{d\lambda}}{{\partial U_{\mu}}\over{\partial x^{\beta}}}={{dU_{\mu}}\over{d\lambda}}\;</MATH>}} wykorzystując udowodnioną powyższą tożsamość i podstawiając do równości {{LinkWzór|1.80}}, wtedy dochodzimy do wniosku, że zachodzi na pewno tożsamość poniżej, które to poniższe równanie jest równaniem linii geodezyjnej. {{CentrujWzór|<MATH>0={{dU_{\mu}}\over{d\lambda}}-{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}\;</MATH>|1.81|Obramuj}} Możemy wykorzystać definicję czterowektora prędkości, wtedy wzór na równość tensorową {{LinkWzór|1.81}} zapisujemy wedle: {{CentrujWzór|<MATH>0={{d^2x_{\mu}}\over{d\lambda^2}}-{\Gamma^{\alpha}}_{{\mu}{\beta}}{{dx_{\alpha}}\over{d\lambda}}{{dx^{\beta}}\over{d\lambda}}\;</MATH>|1.82}} Jeśli oznaczymy jako definicję parametru &lambda;, który może być interwałem czasoprzestrzennym "s", poprzez parametr &xi; w sposób s=a&xi;+c, to równanie na linie geodezyjne {{LinkWzór|1.82}} można przedstawić w postaci: {{CentrujWzór|<MATH>0={{d^2x_{\mu}}\over{d\xi^2}}-{\Gamma^{\alpha}}_{{\mu}{\beta}}{{dx_{\alpha}}\over{d\xi}}{{dx^{\beta}}\over{d\xi}}\;</MATH>|1.83}} Równania {{LinkWzór|1.74}} i {{LinkWzór|1.80}} stanowią równania ruchu cząstki w czterowymiarowej czasoprzestrzeni Einsteina i jak udowodnimy później, te dwa równania są ze sobą równoważne. Dla układów płaskich rozwiązaniem {{LinkWzór|1.83}} jest równanie {{LinkWzór|1.78}} tylko, że ze wskaźnikami do dołu. ==== Gdy w równaniach na linie geodezyjne uwzględnimy siły niegrawitacyjne ==== Będziemy rozważać tu układy dyskretne i rozciągłe. ===== Układy dyskretne ===== A gdy występują inne tensory sił, to wtedy równanie {{LinkWzór|1.70a}} podobnie przekształcamy jak {{LinkWzór|1.82}} z {{LinkWzór|1.70}}, wtedy: {{CentrujWzór|<MATH>{{d^2x_{\mu}}\over{d\lambda^2}}={\Gamma^{\alpha}}_{{\mu}{\beta}}{{dx_{\alpha}}\over{d\lambda}}{{dx^{\beta}}\over{d\lambda}}+{{1}\over{m_0c}}K_{\mu}\Rightarrow {{dU_{\mu}}\over{d\lambda}}={\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}+{{1}\over{m_0c}}K_{\mu}\Rightarrow m_0c{{dU_{\mu}}\over{d\lambda}}=m_0c{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}+K_{\mu}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow {{dP_{\mu}}\over{d\lambda}}=m_0c{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}+K_{\mu}\;</MATH>|1.82a}} Gdy tensor sił niegrawitacyjnych jest równy zero, wtedy równość {{LinkWzór|1.82a}} przechodzi w równanie geodezyjne {{LinkWzór|1.82}}, gdy na układ nie działają żadne siły niegrawitacyjne. Równanie ruchu dynamiki Einsteina i równanie na tensor sił grawitacji działający na ciało według {{LinkWzór|1.82a}} są równe: {{ElastycznyWiersz|{{CentrujWzór|<MATH>K_{c\mu}=m_0c{{dU_{\mu}}\over{d\lambda}}={{dP_{\mu}}\over{d\lambda}}\;</MATH>|1.82b}}|{{CentrujWzór|<MATH>K_{g\mu}=m_0c{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}\;</MATH>|1.82c}}}} ====== Kilka żródeł grawitacyjnych ====== Załóżmy, że mamy kilka mas, każda ona zakrzywia czasoprzestrzeń, weźmy zasadę niezalezności działania tensorów sił szczególnej teorii względności spełniona też w ogólnej teorii względności, wtedy korzystając z równości na tensor siły grawitacyjnej mamy na podstawie {{LinkWzór|1.82c}}: {{CentrujWzór|<MATH>K_{g\mu}=\sum_i K_{gi\mu}=\sum_im_0c{\Gamma^{\alpha}_i}_{{\mu}{\beta}}U_{i\alpha}U^{\beta}_i=m_0c\sum_i{\Gamma^{\alpha}_i}_{{\mu}{\beta}}U_{i\alpha}U^{\beta}_i=m_0c{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}\;</MATH>|1.77ca111}} Widzimy, że w {{LinkWzór|1.77ca111}} poszczególne masy dostarczają swoje własne symbole Christoffela {{Formuła|<MATH>{\Gamma^{\alpha}_i}_{{\mu}{\beta}}\;</MATH>}} do poruszającej się masy względem niego, a wszystkie pola grawitacyyjne od tych mas tworzą razem inne symbole {{Formuła|<MATH>{\Gamma^{\mu}}_{\alpha\beta}\;</MATH>}}, które opisuje całkowite zakrzywienie czasoprzestrzeni od tych mas. ===== Układy rozciągłe ===== Równanie geodezyjne {{LinkWzór|1.82a}} dla układów rozciągłych zastępując w nim wielkości: {{Formuła|<MATH>m_0\;</MATH>}} i {{Formuła|<MATH>K^{\mu}\;</MATH>}}, kolejno przez: {{Formuła|<MATH>dm_0\;</MATH>}} i {{Formuła|<MATH>dK^{\mu}\;</MATH>}}, napiszmy, wiedząc, że czas jako współrzędna jest taki sam jak w układzie inercjalnym: {{CentrujWzór|<MATH>dm_0c{{dU_{\alpha}}\over{d\lambda}}=dm_0 c{\Gamma^{\mu}}_{\alpha\beta}U_{\mu}U^{\beta}+dK^{\mu}\Rightarrow\rho_0c{{dU_{\alpha}}\over{d\lambda}}=\rho_0c{\Gamma^{\mu}}_{\alpha\beta}U_{\mu}U^{\beta}+{{dK_{\alpha}}\over{dV_0}} \Rightarrow\sqrt{-g}\rho_0\gamma c{{dU_{\alpha}}\over{d\lambda}}=\sqrt{-g}\rho_0\gamma c{\Gamma^{\mu}}_{\alpha\beta}U_{\mu}U^{\beta}+{{dK_{\alpha}}\over{dV}}\;</MATH>|1.77ca1}} Gęrstość tensora siły całkowitej stanowiącej drugą zasadę dynamiki Einsteina szczególnej teorii względności dla układów rozciągłych, też i gęstość tensora siły od sił grawitacyjnych, napiszmy kolejno na podstawie {{LinkWzór|1.77ca1}}: {{ElastycznyWiersz|{{CentrujWzór|<MATH>{{dK_{c\alpha}}\over{dV}}=\sqrt{-g}\rho_0\gamma c{{dU_{\alpha}}\over{d\lambda}}\;</MATH>|LLL1a}}|{{CentrujWzór|<MATH>{{dK_{g\alpha}}\over{dV}}=\sqrt{-g}\rho_0\gamma c{\Gamma^{\mu}}_{\alpha\beta}U_{\mu}U^{\beta}\;</MATH>|LLL2a}}}} === Równoważność wzorów na linie geodezyjne w przedstawieniu kowariantnym i kontrawariantnym === Będziemy tu udowadniać zgodność wzorów na linie geodezyjne w przedstawieniu kowariantnym i kontrawariantnym, co udowodnimy, że te dwa wzory są ze sobą równoważne. ==== Układy dyskretne ==== Wzór na linię geodezyjną w przedstawieniu kontrawariantnym pomnóżmy przez tensor metryczny podwójnie kowariantny, oraz wykorzystując fakt, że pochodna tensora względem pewnego parametru jest tensorem oraz z własności tensorów metrycznych, otrzymujemy: {{CentrujWzór|<MATH>{{1}\over{m_0c}}K^{\nu}={{dU^{\nu}}\over{d\lambda}}+{\Gamma^{\nu}}_{\alpha\beta}U^{\alpha}U^{\beta}\Rightarrow {{1}\over{m_0c}}K^{\mu}g_{\mu\nu}={{dU^{\mu}}\over{d\lambda}}g_{\mu\nu}+g_{\mu\nu}{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta} \;</MATH>|1.84}} Wykorzystajmy własność taką, że ogólnie tensor czteroprędkości kontrawariantny U{{Sup|&alpha;}} przedstawmy z zależności od kowariantnego tensora U{{Sub|&gamma;}}, co tensorowo możemy zapisać: {{CentrujWzór|<MATH>U^{\alpha}=g^{\alpha\gamma}U_{\gamma}\;</MATH>|1.85}} Wykorzystując tożsamość tensorową {{LinkWzór|1.85}} do równości tensorowej {{LinkWzór|1.84}}: {{CentrujWzór|<MATH>{{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}-U^{\alpha}g_{\alpha\nu,\beta}U^{\beta}+\Gamma_{\nu\alpha\beta}U^{\alpha}U^{\beta}\Rightarrow {{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}+U^{\alpha}U^{\beta}{{1}\over{2}}\left(-2g_{\alpha\nu,\beta}+g_{\alpha\nu,\beta}+g_{\beta\nu,\alpha}-g_{\alpha\beta,\nu}\right)\;</MATH>{{Br}}<MATH>\Rightarrow {{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}+U^{\alpha}U^{\beta}{{1}\over{2}}\left(-g_{\alpha\nu,\beta}+g_{\beta\nu,\alpha}-g_{\alpha\beta,\nu}\right)\Rightarrow {{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}-U^{\alpha}U^{\beta}{{1}\over{2}}\left(g_{\alpha\nu,\beta}+g_{\alpha\beta,\nu}-g_{\beta\nu,\alpha}\right)\;</MATH>{{Br}}<MATH>\Rightarrow {{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}-\Gamma_{\alpha\beta\nu}U^{\alpha}U^{\beta}\Rightarrow {{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}-{\Gamma^{\alpha}}_{\nu\beta}U_{\alpha}U^{\beta} </MATH>|1.86}} Co na podstawie dowodu {{LinkWzór|1.86}} udowodniliśmy równoważność wzorów przedstawiający równości na linię geodezyjną, czyli tożsamości {{LinkWzór|1.76a}} i {{LinkWzór|1.82a}}, które oznaczają to samo. ==== Układy rozciągłe ==== Wzór na linię geodezyjną w przedstawieniu kontrawariantnym pomnóżmy przez tensor metryczny podwójnie kowariantny, oraz wykorzystując fakt, że pochodna tensora względem pewnego parametru jest tensorem oraz z własności tensorów metrycznych, otrzymujemy: {{CentrujWzór|<MATH>{{dK^{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c{{dU^{\nu}}\over{d\lambda}}+\sqrt{-g}\rho_0\gamma c{\Gamma^{\nu}}_{\alpha\beta}U^{\alpha}U^{\beta}\Rightarrow {{dK^{\nu}}\over{dV}}g_{\mu\nu}=\sqrt{-g}\rho_0\gamma c{{dU^{\mu}}\over{d\lambda}}g_{\mu\nu}+\sqrt{-g}\rho_0\gamma cg_{\mu\nu}{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta} \;</MATH>|1.84a}} Wykorzystując tożsamość tensorową {{LinkWzór|1.85}} do równości tensorowej {{LinkWzór|1.84a}}: {{CentrujWzór|<MATH>{{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left({{dU_{\nu}}\over{d\lambda}}-U^{\alpha}g_{\alpha\nu,\beta}U^{\beta}+\Gamma_{\nu\alpha\beta}U^{\alpha}U^{\beta}\right)\Rightarrow \;</MATH>{{Br}}<MATH>\Rightarrow{{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left[{{dU_{\nu}}\over{d\lambda}}+U^{\alpha}U^{\beta}{{1}\over{2}}\left(-2g_{\alpha\nu,\beta}+g_{\alpha\nu,\beta}+g_{\beta\nu,\alpha}-g_{\alpha\beta,\nu}\right)\right]\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow {{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left[{{dU_{\nu}}\over{d\lambda}}+U^{\alpha}U^{\beta}{{1}\over{2}}\left(-g_{\alpha\nu,\beta}+g_{\beta\nu,\alpha}-g_{\alpha\beta,\nu}\right)\right]\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow {{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left[{{dU_{\nu}}\over{d\lambda}}-U^{\alpha}U^{\beta}{{1}\over{2}}\left(g_{\alpha\nu,\beta}+g_{\alpha\beta,\nu}-g_{\beta\nu,\alpha}\right)\right]\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow {{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left[{{dU_{\nu}}\over{d\lambda}}-\Gamma_{\alpha\beta\nu}U^{\alpha}U^{\beta}\right]\Rightarrow {{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c{{dU_{\nu}}\over{d\lambda}}-\sqrt{-g}\rho_0\gamma c{\Gamma^{\alpha}}_{\nu\beta}U_{\alpha}U^{\beta} </MATH>|1.86aa}} Co na podstawie dowodu {{LinkWzór|1.86aa}} udowodniliśmy równoważność wzorów przedstawiający równości na linię geodezyjną, czyli tożsamości {{LinkWzór|1.76a}} i {{LinkWzór|1.82a}}, które oznaczają to samo. === Tensor siły grawitacji i inne tensory siły (w tym całkowity tensor siły w drugiej zasadzie dynamiki Einsteina), jako tensory z definicji tensora matematycznego === Tensor siły grawitacyjnej, jak można poniżej udowodnić jest tensorem, bo bierzemy tutaj, zbiór stałych transformacji, wtedy nie tylko ten tensor, ale również tensor siły całkowitej drugiej zasady dynamiki Einsteina jest tensorem, jak i inne tensory siły, przy stałych transformacjach symbole Christoffera są tensorami (i dlatego tak jest) - dlatego te symbole są tensorami, bo stałe transformacje można włożyć pod pochodną cząstkową tensora metrycznego w definicji tych symboli, i po transformacji otrzymujemy inne tensory metryczne, ale nie jest już tak dla funkcji transformacji niestałych, stałe transformacji rozdzielają wszechświat na podprzestrzenie, w których panują inne funkcje transformacji stałe. Jeżeli w jednym układzie (lub punkcie) nie ma grawitacji, to w innym też nie ma, czyli można rozważać przestrzeń bez grawitacji z trzema podstałymi oddziaływaniami (model standardowy dla trzech podstawowych oddziaływań - elektromagnetyczne, silne i słabe), czyli są przestrzenie, w której grawitacji nie ma lub jest. === Druga zasada dynamiki Einsteina w wersji wektorowej === Napiszmy równania w postaci podobnej, jak w drugiej zasadzie dynamiki Einsteina-Newtona, dla szczególnej teorii względności, czy w mechanice Newtona, ale też spełnioną w ogólnej teorii względności, w postaci: {{CentrujWzór|<MATH>\vec F={{d\vec p}\over{dt}}\;</MATH>{{Tekst|, gdzie:}} <MATH>\vec p=p^i=m_0c u^i\;</MATH>|hd1}} W nim {{Formuła|<MATH>u^i\;</MATH>}} jest współrzędną przestrzenną tensora prędkości, zatem jeśli {{Formuła|<MATH>p^{\mu}\;</MATH>}} jest tensorem pędu, to {{Formuła|<MATH>p^i\;</MATH>}} jest współrzędną przestrzenną tensora prędkości, też spełniona w ogólnej teorii względności, tak samo jak w szczególnej teorii względności. Niezależność działania sił, i że addytywność wektorów sił, w ogólnej teorii względności, udowadnia się podobnie, jak dla mechaniki Einsteina-Newtona (jak w szczególnej teorii względności i mechanice Newtona). Przedstawia się addytywność wektorów sił: {{CentrujWzór|<MATH>\vec F_c=\sum_{i}\vec F_i\;</MATH>|hd0}} Zależność pomiędzy wektorem tensora prędkości, a wektorem siły przedstawia się wzorem: {{CentrujWzór|<MATH>\vec K={{d\vec p}\over{ds}}={{\gamma}\over{c}}{{d\vec p}\over{dt}}={{\gamma}\over{c}}\vec F\;</MATH>{{Tekst|, gdzie:}} <MATH>\gamma ds=cdt\Rightarrow\gamma=\left({{ds}\over{cdt}}\right)^{-1}\;</MATH>|hd2}} Dla szczególnej teorii względności jest spełnione równanie na tensor siły, które przedstawimy dla układów lokalnie płaskich ogólnej teorii względności, który napisaliśmy w wykładzie szczególnej teorii względności w punkcie {{LinkWzór|2.27|Tensory w czasoprzestrzeni|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}: {{CentrujWzór|<MATH>K^{\mu}={{\gamma}\over{c}}\left[\left({{\vec v}\over{c}},\vec F\right),\vec F\right]^T\;</MATH>|hd3}} Podobny wzór możemy również otrzymać w ogólnej teorii względności, tylko w iloczynie są wskaźniki dolne i górne, nie górne, zapisaną w sposób, biorąc dla dwóch sygnatur: {{CentrujWzór|<MATH>K^{\mu}={{\gamma}\over{c}}\left[-\left({{v_i}\over{c}}F^i\right),F^i\right]^T=\left[-{{p_iK^i}\over{p_0}},K^i\right]^T\wedge p_0=m_0c u_0=\pm m_0c\gamma=\pm {{E_r}\over{c}}</MATH> {{Tekst|(wersja zwykła)}}{{Br}}<MATH>K^{\mu}=\left[-{{P_iK^i}\over{P_0}},K^i\right]^T\wedge P_0=m_0c U_0=\pm m_0c\gamma=\pm {{E_r}\over{c}}\;</MATH> {{Tekst|(wersja uogólniona)}}|hd4}} Zapisując wniosek {{LinkWzór|hd4}}, biorąc iloczyn skalarny przestrzeni zwykłej {{Formuła|<MATH>A=A^T=[a_{ij}]=[a_{ji}]=[a_{ij}]^T\;</MATH>}}, to wtedy ta równość przechodzi w {{LinkWzór|hd3}}, tylko przy innej definicji {{Formuła|<MATH>\gamma\;</MATH>}} z jego definicją dla ogólnej teorii względności, ale nie już dla szczególnej teorii względności. Uogólnijmy wzór {{LinkWzór|hd1}}, by w nim było {{Formuła|<MATH>\vec P=m_0c U^{i}\;</MATH>}}, a nie {{Formuła|<MATH>\vec p=m_0c u^{i}\;</MATH>}}, wtedy wektor siły przedstawia się w formie: {{CentrujWzór|<MATH>\vec F={{d\vec P}\over{dt}}\;</MATH>{{Tekst|, gdzie:}} <MATH>\vec P=P^i=m_0c U^i\;</MATH>|hd10}} Dla wzoru {{LinkWzór|hd10}} niezależność działania sił i addytywność udowadnia się podobnie, jak dla wersji z wektorami zwykłymi tensora prędkości. A wtedy wzór {{LinkWzór|hd3}} uogólniamy do tej wersji (ten wzór pod względem zapisu jest taki sam), a wartość {{Formuła|<MATH>\gamma\;</MATH>}} piszemy: {{CentrujWzór|<MATH>\gamma d\lambda=cdt\Rightarrow\gamma=\left({{d\lambda}\over{cdt}}\right)^{-1}\;</MATH>|hd11}} Też jest spełnione przy takim uogólnieniu wzór na tensor wektora siły, w tym przypadku równość {{LinkWzór|hd2}}, przy definicji {{Formuła|<MATH>\gamma\;</MATH>}} {{LinkWzór|hd11}}, i z niego wynikającej definicji wektora siły, innej niż, ale równoważnej, do {{LinkWzór|hd10}}. == Zgodność wzoru na linie geodezyjne z metryką przy ogólnie niezerowych siłach niegrawitacyjnych == Formułę {{LinkWzór|1.9|Wprowadzenie do ogólnej teorii względności}} zrózniczkujmy obustronnie, gdzie parametrem różniczkowym względem, którego różniczkujemy, jest interwał czasoprzestrzeny do: {{CentrujWzór|<MATH>0={{d\left(u^{\mu}u_{\mu}\right)}\over{ds}}\Leftrightarrow 0={{du^{\mu}}\over{ds}}u_{\mu}+{{du_{\mu}}\over{ds}}u^{\mu}\;</MATH>|1.87}} Jeżeli w równaniu {{LinkWzór|1.87}} zamienimy {{Formuła|<MATH>s\;</MATH>}} na {{Formuła|<MATH>\lambda\;</MATH>}}, wtedy zamieniamy {{Formuła|<MATH>u^{\mu}\;</MATH>}} w {{Formuła|<MATH>U^{\mu}\;</MATH>}} dla formalności, to ono jest dalej spełnione i jest w postaci: {{CentrujWzór|<MATH>0={{d\left(U^{\mu}U_{\mu}\right)}\over{d\lambda}}\Leftrightarrow 0={{dU^{\mu}}\over{d\lambda}}U_{\mu}+{{dU_{\mu}}\over{d\lambda}}U^{\mu}\;</MATH>|1.871}} Równanie {{LinkWzór|1.871}} jest równoważne równaniu {{LinkWzór|1.87}}, nie tylko dla {{Formuła|<MATH>\lambda=s\;</MATH>}} (gdy zmienna {{Formuła|<MATH>\lambda\;</MATH>}} jest równa interwałowi czasoprzestrzennemu), bo to wynika z rachunku różnicowego dla kroku {{Formuła|<MATH>\Delta s\;</MATH>}} nieskończenie małego, ale stałego, więc w {{LinkWzór|1.87}} można zastąpić {{Formuła|<MATH>ds\;</MATH>}} przez {{Formuła|<MATH>d\lambda\;</MATH>}}, i tak powstaje równanie różniczkowe {{LinkWzór|1.871}}. === Układy dyskretne === Skorzystajmy ze wzoru na linie geodezyjne, gdy liczymy pochodne kowariantne tensorów prędkości w przedstawieniu kontrawriantym {{LinkWzór|1.74}} i kowariantnym {{LinkWzór|1.81}}, co pomnózmy go obustronnie przez kolejno przez {{Formuła|<MATH>U_{\mu}\;</MATH>}} i {{Formuła|<MATH>U^{\mu}\;</MATH>}}, co potem skorzystamy ze wzoru {{LinkWzór|1.871}}, wtedy: {{CentrujWzór|<MATH>0=-U_{\mu}{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}+U^{\mu}{\Gamma^{\alpha}}_{\mu\beta}U_{\alpha}U^{\beta}+{{1}\over{m_0c}}\left(K^{\mu}U_{\mu}+K_{\mu}U^{\mu}\right)\Rightarrow 0=K^{\mu}U_{\mu}+K_{\mu}U^{\mu}\Rightarrow K^{\mu}U_{\mu}=0\;</MATH>|1.88}} Końcowe równanie w {{LinkWzór|1.88}} przekształćmy do układów lokalnie płaskich, wtedy {{Formuła|<MATH>K^{\mu}\;</MATH>}} jest tensorem siły równej całkowitemu tensorowi siły według drugiej zasady dynamiki Einsteina według {{LinkWzór|1.70a}}, zatem w tym układzie po zamienieniu {{Formuła|<MATH>\lambda\;</MATH>}} na {{Formuła|<MATH>s\;</MATH>}} (interwał czasoprzestrzenny): {{CentrujWzór|<MATH>K^{\mu}u_{\nu}=0\Rightarrow K^{\mu}u_{\mu}=m_0c{{du^{\mu}}\over{ds}}u_{\mu}=m_0c{{1}\over{2}}{{d(u^{\mu}u_{\mu})}\over{ds}}=m_0c{{1}\over{2}}{{d (\pm 1)}\over{ds}}=0\Rightarrow K^{\mu}u_{\mu}=0\;</MATH>|1.88a}} Równanie {{LinkWzór|1.88a}} jest również spełnione dla dowolnej definicji {{Formuła|<MATH>\lambda\;</MATH>}}, nie tylko dla {{Formuła|<MATH>\lambda=s\;</MATH>}}, bo zachodzi wytłumaczone {{LinkWzór|1.871}}. Stąd tożsamość {{LinkWzór|1.88}} jest na pewno spełniona na podstawie {{LinkWzór|1.88a}} (dla dowolnego {{Formuła|<MATH>\lambda\;</MATH>}}), a więc wzór na linie geodezyjne jest zgodny z metryką. === Układy rozciągłe === Równanie {{LinkWzór|1.87}} pomnóżmy przez {{Formuła|<MATH>\sqrt{-g}\rho_0c\gamma\;</MATH>}}, wtedy otrzymamy: {{CentrujWzór|<MATH>0=\sqrt{-g}\rho_0c\gamma{{dU^{\mu}}\over{d\lambda}}U_{\mu}+{{dU_{\mu}}\over{d\lambda}}U^{\mu}\;</MATH>|1.87w1}} Wykorzystajmy równości {{LinkWzór|1.77ca}} (przedstawienie kontrawariantne równania geodezyjnego) i {{LinkWzór|1.77ca1}} (przedstawienie kowariantnego równania geodezyjnego), wtedy: {{CentrujWzór|<MATH>0=-\sqrt{-g}\rho_0c\gamma U_{\mu}{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}+\sqrt{-g}\rho_0c\gamma U^{\mu}{\Gamma^{\alpha}}_{\mu\beta}U_{\alpha}U^{\beta}+\left({{dK^{\mu}}\over{dV}}U_{\mu}+{{dK_{\mu}}\over{dV}}U^{\mu}\right)\Rightarrow 0={{dK^{\mu}}\over{dV}}U_{\mu}+{{dK_{\mu}}\over{dV}}U^{\mu}\Rightarrow {{dK^{\mu}}\over{dV}}U_{\mu}=0\;</MATH>|llll1}} Końcowe równanie w {{LinkWzór|llll1}} przekształćmy do układów lokalnie płaskich, wtedy {{Formuła|<MATH>{{dK^{\mu}}\over{dV}}\;</MATH>}} jest tensorem siły równej całkowitej gęstości tensora siły według drugiej zasady dynamiki Einsteina według {{LinkWzór|1.70a}}, zatem w tym układzie dla {{Formuła|<MATH>\lambda=s\;</MATH>}}: {{CentrujWzór|<MATH>{{dK^{\mu}}\over{dV}}u_{\mu}=0\Rightarrow {{dK^{\mu}}\over{dV}}u_{\mu}=\sqrt{-g}\rho_0c\gamma{{du^{\mu}}\over{ds}}u_{\mu}=\sqrt{-g}\rho_0c\gamma{{1}\over{2}}{{d(u^{\mu}u_{\mu})}\over{ds}}=\sqrt{-g}\rho_0c\gamma{{1}\over{2}}{{d (\pm 1)}\over{ds}}=0\Rightarrow {{dK^{\mu}}\over{dV}}u_{\mu}=0\;</MATH>|1.88aaa}} Jeżeli równanie {{LinkWzór|1.88aaa}} jest spełnione dla {{Formuła|<MATH>\lambda=s\;</MATH>}}, to jest również spełnione dla dowolnej definicji {{Formuła|<MATH>\lambda\;</MATH>}}, bo zachodzi wytłumaczone {{LinkWzór|1.871}}, zatem dla układów rozciągłych metryka jest zgodnę z równaniem na linie geodezyjne na podstawie {{LinkWzór|llll1}} według udowodnionego wniosku {{LinkWzór|1.88aaa}}. == Zasada zachowania energii-pędu dla układów lokalnie płaskich przy zerowaniu się tensorów sił niegrawitacyjnych == W układzie lokalnie płaskim tensory Christoffela są równe zero z uwagi, że tensor metryczny jest równy tensorowi Minkowskiego i pochodne cząstkowe tego tensora są równe zero. Wtedy z uwagi na {{LinkWzór|1.74}} rozwiązaniem równania tego jest {{LinkWzór|1.78}}, zatem tensor prędkości cząstki w układzie lokalnie płaskim, jeżeli przymniemy {{Formuła|<MATH>\xi=s\;</MATH>}}, jest równy: {{CentrujWzór|<MATH>u^{\mu}=a^{\mu}\;</MATH>|1.90}} Czyli dla układów lokalnie płaskich na podstawie {{LinkWzór|2.42|Tensory w czasoprzestrzeni|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, w którym prędkości są stałe dowiadujemy się, że: {{CentrujWzór|<MATH>{{dK^{\mu}}\over{dV}}=\rho_0\gamma c{{d}\over{d s}}u^{\mu}=\rho_0\gamma c{{d}\over{d s}}a^{\mu}=0\;</math>|1.91}} I dalej stąd dowiadujemy się, że na podstawie {{LinkWzór|1.91}} energia i pęd w układzie lokalnie płaskim są zachowane. Też ten sam wniosek możemy otrzymać z {{LinkWzór|1.74}} przy zerowaniu się symboli Christoffela. == Równanie dewiacyjne i dewiacja geodezyjna, według zasady niezalezności działania tensorów sił == Będziemy tutaj wyprowadzali dewiacyjne równanie uwzględniające tylko siły grawitacji albo siły niegrawitacyjne lub oba. === Równanie dewiacyjne, a tylko siły grawitacji === Weźmy sobie dwie krzywe geodezyjna, odległość pomiędzy cząstkami poruszających się na tych liniach określamy według definicji {{Formuła|<MATH>\xi^{\alpha}=x_1^{\alpha}-x_2^{\alpha}\;</MATH>}}, zatem różnica wzorów na linie geodezyjne {{LinkWzór|1.75}} dla {{Formuła|<MATH>x_1^{\alpha}\;</MATH>}} i {{Formuła|<MATH>x_2^{\alpha}\;</MATH>}} dla układów lokalnie płaskich, tu wykorzystajmy zasadę namniejszego działania tensorów sił, wtedy znika tensor sił niegrawitacyjnych, określamy jako: {{CentrujWzór|<MATH>{{d^2\xi^{\alpha}}\over{d\lambda^2}}+{\Gamma^{\alpha}}_{\omega\eta,\gamma}\xi^{\gamma}U^{\omega}U^{\eta}=0\;</MATH>|1.92}} Napiszmy teraz drugą pochodną wielkości absolutnej &xi; wykorzystując {{LinkWzór|2.33|Rachunek_tensorowy|Metody_matematyczne_fizyki|MMF}}, a także {{LinkWzór|2.35|Rachunek_tensorowy|Metody_matematyczne_fizyki|MMF}} wykorzystując przy okazji udowodnioną tożsamość {{LinkWzór|1.92}} dla układu współrzędnych lokalnie płaskiego, w której w punktach płaskości tensor Christoffela jest równy zero: {{CentrujWzór|<MATH>{{d^2\xi}\over{d\lambda^2}}={{d}\over{d\lambda}}\left({{d\xi^{\alpha}}\over{d\lambda}}e_{\alpha}+\xi^{\alpha}{{de_{\alpha}}\over{d\lambda}}\right)= {{d}\over{d\lambda}}\left[\left({{d\xi^{\gamma}}\over{d\lambda}}+\xi^{\eta}{\Gamma^{\gamma}}_{\eta\beta}U^{\beta}\right)e_{\gamma}\right]=\left({{d^2\xi^{\alpha}}\over{d\lambda^2}}+{\Gamma^{\alpha}}_{\eta\beta,\omega}\xi^{\eta}U^{\omega}U^{\beta}\right)e_{\alpha}+\;</MATH>{{Br}}<MATH>+\left({{d\xi^{\gamma}}\over{d\lambda}}+\xi^{\eta}{\Gamma^{\gamma}}_{\eta\beta}U^{\beta}\right){\Gamma^{\alpha}}_{\gamma\omega}U^{\omega}e_{\alpha}= \left(-{\Gamma^{\alpha}}_{\beta\omega,\eta}\xi^{\eta}U^{\beta}U^{\omega}+{\Gamma^{\alpha}}_{\eta\beta,\omega}\xi^{\eta}U^{\omega}U^{\beta}\right)e_{\alpha}=\left({\Gamma^{\alpha}}_{\eta\beta,\omega}-{\Gamma^{\alpha}}_{\beta\omega,\eta}\right)\xi^{\eta}U^{\omega}U^{\beta}e_{\alpha}=\;</MATH>{{Br}}<MATH>={{R^{\alpha}}_{\beta\omega\eta}}\xi^{\eta}U^{\omega}U^{\beta}e_{\alpha}</MATH>|1.93}} Końcowy wniosek wynikający z obliczeń {{LinkWzór|1.93}} jest słuszny tylko w układzie współrzędnych lokalnie płaskich, w której to w punktach płaskości tensor Christoffela jest równy zero. Udowodnijmy jego słuszność w dowolnym układzie współrzędnych: {{CentrujWzór|<MATH>{{\overline R}^{\alpha}}_{\beta\omega\eta}{\overline \xi}^{\eta}{\overline U}^{\omega}{\overline U}^{\beta}{\overline e}_{\alpha}={{{\overline R}^{\alpha}}_{\beta\omega\eta}}{\overline{\Lambda^{\eta}}}_{\eta^'}\xi^{\eta^'}{\overline{\Lambda}^{\omega}}_{\omega^'}U^{\omega^'}{\overline{\Lambda}^{\beta}}_{\beta^'}U^{\beta^'}{\Lambda^{\alpha^'}}_{\alpha}e_{\alpha^'}={{{\overline R}^{\alpha}}_{\beta\omega\eta}}{\overline{\Lambda^{\eta}}}_{\eta^'}{\overline{\Lambda}^{\omega}}_{\omega^'}{\overline{\Lambda}^{\beta}}_{\beta^'}{\Lambda^{\alpha^'}}_{\alpha}\xi^{\eta^'}U^{\omega^'}U^{\beta^'} e_{\alpha^'}=\;</MATH>{{Br}}<MATH>={{R^{\alpha^'}}_{\beta^'\omega^'\eta^'}}\xi^{\eta^'}U^{\omega^'}U^{\beta^'}e_{\alpha^'}\;</MATH>|1.94}} Na podstawie obliczeń {{LinkWzór|1.94}} wynikających z {{LinkWzór|1.93}} wnioskujemy, że w dowolnym układzie współrzędnych jest spełnione prawo zwane równaniem dewiacyjnym: {{CentrujWzór|<MATH>{{d^2\xi}\over{d\lambda^2}}={R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}\xi^{\eta}e_{\alpha}\;</MATH>|1.95}} === Układy dyskretne === Według zasady niezależności działania tensorów sił, podobne równanie do {{LinkWzór|1.95}}, napiszmy równanie dewiacyjne, gdy nie ma grawitacji, tylko są siły niegrawitacyjne, wtedy ono piszemy, zapisując w nim przecinek średnikiem w układach lokalnie płaskich, co w takich układach można tak robić: {{CentrujWzór|<MATH>{{d^2\xi}\over{d\lambda^2}}={{1}\over{m_0c}}\xi^{\eta}{K^{\alpha}}_{;\eta}e_{\alpha}\;</MATH>|1.95a}} Wykorzystując tą naszą zasadę połączmy równania {{LinkWzór|1.95}} i {{LinkWzór|1.95a}}, wtedy: {{CentrujWzór|<MATH>{{d^2\xi}\over{d\lambda^2}}={R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}\xi^{\eta}e_{\alpha}+{{1}\over{m_0c}}\xi^{\eta}{K^{\alpha}}_{;\eta}e_{\alpha}\Rightarrow{{d^2\xi}\over{d\lambda^2}}=\left({R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}+{{1}\over{m_0c}}{K^{\alpha}}_{;\eta}\right)\xi^{\eta}e_{\alpha}\;</MATH>|1.95b}} Równanie {{LinkWzór|1.95b}} jest udowodnione w układach lokalnie płaskich, co na podstawie teorii transformacji jest ono również spełnione w układach zakrzywionych. Równanie {{LinkWzór|1.95b1}} jest udowodnione w układach lokalnie płaskich, co na podstawie teorii transformacji jest ono również spełnione w układach zakrzywionych. To równanie jest równaniem dewiacyjnym uwzględniającym siły grawitacji i niegrawitacyjne. Równanie {{LinkWzór|1.95a}} nazywamy równaniem dewiacyjnym układów zakrzywionych odległości pomiędzy dmoma ciałami bardzo bliskimi względem siebie przy uwzględnieniu tensorów sił pochodzący od oddziaływań niegrawitacyjnych. === Układy rozciągłe === Według zasady niezależności działania tensorów sił, podobne równanie do {{LinkWzór|1.95}}, napiszmy równanie dewiacyjne, gdy nie ma grawitacji, tylko są siły niegrawitacyjne, wtedy ono piszemy, zapisując w nim przecinek średnikiem w układach lokalnie płaskich, co w takich układach można tak robić: {{CentrujWzór|<MATH>\sqrt{-g}\rho_0\gamma c{{d^2\xi}\over{d\lambda^2}}+\left(\sqrt{-g}\rho_0\gamma c\right)_{,\eta}\xi^{\eta}{{dU^{\alpha}}\over{d\lambda}}e_{\alpha}=\xi^{\eta}{\left({{dK^{\alpha}}\over{dV}}\right)}_{;\eta}e_{\alpha}\;</MATH>|1.95a1}} Wykorzystując tą naszą zasadę połączmy równania {{LinkWzór|1.95}} i {{LinkWzór|1.95a1}}, wtedy: {{CentrujWzór|<MATH>\sqrt{-g}\rho_0\gamma c{{d^2\xi}\over{d\lambda^2}}+\left(\sqrt{-g}\rho_0\gamma c\right)_{,\eta}\xi^{\eta}{{dU^{\alpha}}\over{d\lambda}}e_{\alpha}=\sqrt{-g}\rho_0\gamma c{R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}\xi^{\eta}e_{\alpha}+\xi^{\eta}{\left({{dK^{\alpha}}\over{dV}}\right)}_{;\eta}e_{\alpha}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\sqrt{-g}\rho_0\gamma c{{d^2\xi}\over{d\lambda^2}}=\left(\sqrt{-g}\rho_0\gamma c{R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}-\left(\sqrt{-g}\rho_0\gamma c\right)_{,\eta}{{dU^{\alpha}}\over{d\lambda}}+{\left({{dK^{\alpha}}\over{dV}}\right)}_{;\eta}\right)\xi^{\eta}e_{\alpha}\;</MATH>|1.95b1}} Równanie {{LinkWzór|1.95b1}} jest udowodnione w układach lokalnie płaskich, co na podstawie teorii transformacji jest ono również spełnione w układach zakrzywionych. To równanie jest równaniem dewiacyjnym uwzględniającym siły grawitacji i niegrawitacyjne. Równanie {{LinkWzór|1.95a1}} nazywamy równaniem dewiacyjnym układów zakrzywionych odległości pomiędzy dmoma ciałami bardzo bliskimi względem siebie przy uwzględnieniu tensorów sił pochodzący od oddziaływań niegrawitacyjnych. == Lokalna zasada zachowania energii-pędu == Weźmy lokalną zasadę zachowania energii-pędu szczególnej teorii względności {{LinkWzór|Vb|Lokalna zasada zachowania energii(masy)-pędu z zasady zachowania energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, wtedy to możemy zapisać jako: {{CentrujWzór|<MATH>{{1}\over{c}}{j^{\mu\nu}}_{,\nu}={{dK^{\mu}}\over{dV_0}}\;</MATH>|LKJ1}} Równanie {{LinkWzór|LKJ1}} w układach zakrzywionych przyjmuje postać zamieniając przecinek średnikiem i wykorzystując {{LinkPatrz|FF1}} i {{linkPatrz|FF2}}, wtedy: {{CentrujWzór|<MATH>{{1}\over{c}}{j^{\mu\nu}}_{;\nu}={{dK^{\mu}}\over{dV_0}}\Rightarrow{{\gamma}\over{c}}\sqrt{-g}{j^{\mu\nu}}_{;\nu}={{dK^{\mu}}\over{dV}}\;</MATH>|LKJ2}} Równanie {{LinkWzór|LKJ2}} jest równaniem lokalnej zasady zachowania energii-pędu wynikającej z praw szczególnej teorii względności z zasady zachowania energii-pędu lub lokalnej zachowawczości tensora gęstości energii-pędu. == Lokalna zasada zachowania tensora gęstości pędu == Weźmy lokalną zasadę zachowania tensora gęstości pędu szczególnej teorii względności według {{LinkWzór|3.19aaaaaa2|Lokalna zasada zachowania tensora pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, wtedy możemy napisać wynikająco: {{CentrujWzór|<MATH>\gamma{{\partial}\over{c\partial t}}\left(\rho v^{\mu}\right)=-{{\gamma}\over{c}}{T^{\mu j}_k}_{,j}+{{dK^{\mu}_z}\over{dV}}\;</MATH>|JH1}} Przetransformuwujmy równanie {{LinkWzór|JH1}}, które jest dla układów lokalnie płaskich, zamieniając w nim przecinek na średnik, wiedząc, że macierz transformacji jest w postaci: {{CentrujWzór|<MATH>\Lambda=\begin{bmatrix}1&0\\0&\Lambda_p\end{bmatrix}\;</MATH>|JH2}} Wtedy na podstawie transformacji z macierzą transformacji {{LinkWzór|JH2}} w {{LinkWzór|JH1}} możemy dokonać tą wspomnianą operację przechodząc z układu lokalnie płaskiego do zakrzywionego: {{CentrujWzór|<MATH>\gamma\left(\rho v^{\mu}\right)_{;0}=-{{\gamma}\over{c}}{T^{\mu j}_k}_{;j}+{{dK^{\mu}_z}\over{dV}}\Rightarrow \gamma\sqrt{-g}\left(\rho v^{\mu}\right)_{;0}=-{{\gamma}\over{c}}\sqrt{-g}{T^{\mu j}_k}_{;j}+{{dK^{\mu}_z}\over{dV}}\;</MATH>|JH3}} Równość {{LinkWzór|JH3}} jest równaniem lokalnej zasady zachowania tensora gęstości pędu dla układów zakrzywionych. == Rozwiązywanie układu równań ogólnej teorii względności == Ogólna teoria względności przedstawia swój zestaw równań ze sobą sprzecznych: równanie Hilberta-Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}} (dla przyciągania grawitacyjnego) i {{LinkWzór|1.51a|Wprowadzenie do ogólnej teorii względności}} (dla odpychania grawitacyjnego) - należy tutaj tensor gęstości energii-pędu rozłożyć na ten podstawowy i inny zewnętrzny, lokalna zachowawczość tensora gęstości energii-pędu {{LinkWzór|ccv|Wprowadzenie do ogólnej teorii względności}}, równanie geodezyjne {{LinkWzór|1.70ab}} (układy rozciągłe), lokalna zasada zachowania energii-pędu {{LinkWzór|LKJ2}}, lokalna zasada zachowania tensora gęstości pędu {{LinkWzór|JH3}} i równanie wynikające z definicji jedynki z definicji różniczki interwału czasoprzestrzennego {{LinkWzór|KJH1|Wprowadzenie do ogólnej teorii względności}}, równania cechowania wynikłe z teorii lagrangianowych równania geodezyjnego dla układów rozciągłych i dalej należy uwzględnić w gęstościach sił (nawet w zewnętrznych) tensory sił od pola elektromagnetycznego i w dwóch prawach Hilberta-Einsteina grawitacji (równania opisujące odpychanie i przyciąganie grawitacyjne), dodatkowy człon, który jest tensorem gęstości energii-pędu od tego pola (gdy uwzględnimy pole elektromagnetyczne), oraz równania elektrodynamiki klasycznej dla układów zakrzywionych, te równania rozwiązuje się jak równania szczególnej teorii względności, tylko zamiast przestrzeni słabozakrzywionych, uważanych za ogólnie nieprostokątne ze współrzędnymi ogólnie nieprostokątnymi albo krzywoliniowymi lub uogólnionymi, mamy przestrzenie zakrzywione, zbudowane na przestrzeni słabozakrzywionej według szczególnej teorii względności, i zamiast szczególnej teorii względności jest ogólna teoria względności. Te równania możemy ogólnie zapisać tensorowo i rozwiązywać je, jak równania szczególnej teorii względności, według twierdzenia {{LinkTwierdzenie|GG1|Anormalne układy, tylko matematyczne, a nie fizyczne|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, tylko zamiast równań szczególnej teorii względności są równania ogólnej teorii względności. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> kecvx7wpkgq2e0jciuixdgk12joiy4i 548302 548279 2026-07-25T14:43:18Z Persino 2851 /* Kilka żródeł grawitacyjnych */ 548302 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> == Równania ruchu, a linie geodezyjne w ogólnej teorii względności == Mając już policzona metrykę czasoprzestrzeni poprzez równania Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}} lub mając niezerową stałą kosmologiczną, to wtedy liczymy z równania {{LinkWzór|1.58|Wprowadzenie do ogólnej teorii względności}}, zatem na podstawie tegoż równania liczymy już wspomnianą metrykę poprzez policzone już elementy tensora metrycznego. Na podstawie tego liczymy elementy tensora Christoffela i w ten sposób wyznaczamy następne położenie cząstki masowej w ogólnej teorii względności. Już mając następne położenie wyznaczamy znów metrykę przy nowym położeniu cząstek masowych i te kroki powtarzamy w nieskończoność do chwili, do której interesuje nas badanie układu relatywistycznego. W przestrzeni euklidesowej linia prosta jest to krzywa, której przenosi swój własny wektor prędkości w sposób równoległy do tej krzywej w danym jej punkcie, w przestrzeni nieuklidesowej mamy jakąś krzywą, która jest prostą w tym naszym układzie, i aby nasz wektor był przenoszony równolegle to musi być styczna do tej prostej, czyli wielkość zdefiniowana {{Formuła|<MaTH>U^{\mu}={{dx^{\mu}}\over{d\lambda}}\;</MATH>}} musi spełniać warunek: {{CentrujWzór|<MATH>{U^{\mu}}_{;{\beta}}=0\;\;</MATH>|1.70}} aby cały czas wektor U{{Sup|&mu;}} był styczny do naszej prostej w tej naszej przestrzeni absolutnej. Oczywiste jest, że wektor U{{Sup|&mu;}}, aby był czterowektorem prędkości {{LinkWzór|1.6|Wprowadzenie do ogólnej teorii względności}}, tzn. U{{Sup|&mu;}}=u{{Sup|&mu;}}, to musi zachodzić &lambda;=s, czyli nasz parametr byłby wtedy interwałem czasoprzestrzennym. Ale dla ogólności rozważań lepiej przyjąć dowolny parametr &lambda;, bo zmiana interwału czasoprzestrzennego dla bezmasowych cząstek (m{{Sub|0}}) jest równy zero wedle {{LinkWzór|1.3|Wprowadzenie do ogólnej teorii względności}}, wtedy czterowektor prędkości jest nieokreślony. Jeśli &lambda;=s, ale lepiej jest, gdy to jest dowolny parametr, ze względu na fotony pędzące z prędkościa światła {{Formuła|<MATH>c\;</MATH>}}, wtedy {{Formuła|<MATH>ds=0\;</MATH>}}, ale nie ogólnie {{Formuła|<MATH>d\lambda=0\;</MATH>}}, to równanie {{LinkWzór|1.70}} jest spełnione, gdy w układzie badanym nie występują siły niegrawitacyjne, występuje tylko grawitacja z zaniedbywalnym ciśnieniem, którego od niej gęstość siły jest bardzo mała, lub według zasady niezależności działania tensorów sił, jeśli rozpratrujemy tylko ruch pochodzący od grawitacji, wtedy równanie {{LinkWzór|1.70}} jest dokładnie spełnione. Normalnie dla całkowitego tensora sił dla ciała punktowego z uwzględniem innych tensorów sił równanie {{LinkWzór|1.70}} przy tej definicji &lambda; uogólniamy do: {{CentrujWzór|<MATH>m_0c{U^{\mu}}_{;\nu}U^{\nu}=K^{\mu}\;</MATH>|1.70a}} Gdy {{Formuła|<MATH>K^{\mu}_c=0\;</MATH>}}, to równość {{LinkWzór|1.70a}} przechodzi w {{LinkWzór|1.70}}. W czasoprzestrzeni lokalnie płaskiej wzór {{LinkWzór|1.70a}}, wtedy możemy zamienić przecinek średnikiem, bo symbole Christoffela są tam równe zero, przechodzi w: {{CentrujWzór|<MATH>m_0c {U^{\mu}}_{,\nu}U^{\nu}=K^{\mu}_c=K^{\mu}\Rightarrow m_0c{{dU^{\mu}}\over{d\lambda}}=K^{\mu}_c\Rightarrow {{dP^{\mu}}\over{d\lambda}}=K^{\mu}_c\wedge P^{\mu}=m_0cU^{\mu}\;</MATH>|1.70b}} Równanie {{LinkWzór|1.70b}} jest to tensorowe równanie dynamiki Einsteina szczególnej teorii względności, napisane w {{LinkWzór|2.18|Tensory w czasoprzestrzeni|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, przy {{Formuła|<MATH>\lambda=s\;</MATH>}}, wtedy {{Formuła|<MATH>U^{\mu}=u^{\mu}\;</MATH>}}, czyli jest spełniona na pewno silna zasada równoważności. Równanie {{LinkWzór|1.70a}} dla układów rozciągłych wygląda następująco: {{CentrujWzór|<MATH>dm_0c{U^{\mu}}_{;\nu}U^{\nu}=dK^{\mu}\Rightarrow\rho_0c{U^{\mu}}_{;\nu}U^{\nu}={{dK^{\mu}}\over{dV_0}}\Rightarrow\sqrt{-g}\rho_0\gamma c{U^{\mu}}_{;\nu}U^{\nu}={{dK^{\mu}}\over{dV}}\;</MATH>|1.70ab}} *Twierdzenia dla układów rozciągłych przedstawiamy zastępując w twierdzeniach dla układów dyskretnych w obliczeniach według {{Formuła|<MATH>m_0\rightarrow dm_0\;</MATH>}} i {{Formuła|<MATH>K^{\mu}\rightarrow dK^{\mu}\;</MATH>}}, jak np. przechodząc od {{LinkWzór|1.70a}} do {{LinkWzór|1.70ab}}, i wiedząc, że czas jako współrzędna jest taki sam jak w układzie inercjalnym, wtedy: {{Formuła|<MATH>\sqrt{-g}d^4x=d^4x^'\Rightarrow\sqrt{-g}dVdct=dV_pdct\Rightarrow\sqrt{-g}dV=dV_p\;</MATH>}}{{Patrz|FF1}} i {{Formuła|<MATH>dV_p=\gamma^{-1} dV_0\;</MATH>}}{{Patrz|FF2}}, gdzie {{Formuła|<MATH>dV\;</MATH>}}, {{Formuła|<MATH>dV_p\;</MATH>}} i {{Formuła|<MATH>dV_0\;</MATH>}} są to kolejno infinitezymalne objętości w układach: zakrzywionym, płaskim inercjalnym i spoczynkowym inercjalnym, a {{Formuła|<MATH>g\;</MATH>}} jest to wyznacznik tensora metrycznego prostego, a {{Formuła|<MATH>\gamma\;</MATH>}} jest zdefiniowane w punkcie {{LinkWzór|1.41|Transformacje różniczek czasu i położenia|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} (tam wybieramy ze znakiem plus). Gdzie tam pierwsza zależność wynika z {{LinkWzór|3.8|Właściwości skalaru tensora metrycznego}}, a druga z {{LinkWzór|4.6a|Własności czasoprzestrzeni|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}. === Linie geodezyjne, a druga pochodna czterowektora kontrawariantnego położenia === Będziemy badać wzory na linie geodezyjne, gdy siły niegrawitacyjne występują lub one nie występują, a poza tym siły grawitacyjne w nich zawsze występują. ==== Gdy występują tylko siły grawitacyjne ==== Z definicji pochodnej kontrawariantnej i własności styczności wektora do prostej {{LinkWzór|1.70}}, a także z definicji pochodnej tensorowej można zapisać równanie geodezyjne w postaci pierwotnej: {{CentrujWzór|<MATH>0={U^{\mu}}_{;{\beta}}={U^{{\mu}}}_{;{\beta}}={U^{\mu}}_{,{\beta}}+U^{\alpha}{\Gamma^{\mu}}_{{\alpha}{\beta}}\;\;</MATH>|1.71}} Pomnóżmy obustronnie równość tensorową {{LinkWzór|1.71}} przez kontrawariantny tensor czterowektora prędkości U{{Sup|&beta;}}, wtedy otrzymujemy inne równoważne do poprzedniego równanie: {{CentrujWzór|<MATH>0=U^{\beta}{U^{\mu}}_{,{\beta}}+U^{\alpha}U^{\beta}{\Gamma^{\mu}}_{{\alpha}{\beta}}\;\;</MATH>|1.72}} Z definicji czterowektora prędkości i twierdzenie o pochodnej złożonej wyznaczmy wyrażenie występujące jako pierwszy składnik we wzorze {{LinkWzór|1.72}}, zatem możemy napisać: {{CentrujWzór|<MATH>U^{\beta}{U^{\mu}}_{,{\beta}}={{dx^{\beta}}\over{d\lambda}}{{\partial}\over{\partial x^{\beta}}}\left({{dx^{\mu}}\over{d\lambda}}\right)={{d}\over{d\lambda}}\left({{d x^{\mu}}\over{d\lambda}}\right)={{dU^{\mu}}\over{d\lambda}}\;\;</MATH>|1.73}} Na podstawie obliczeń {{LinkWzór|1.73}} na liczbach ogólnych, które to wniosek podstawiamy do równania tensorowego {{LinkWzór|1.71}} za pierwszy składnik, zatem udowodniliśmy że zachodzi: {{CentrujWzór|<MATH>0={{dU^{\mu}}\over{d\lambda}}+{\Gamma^{\mu}}_{{\alpha}{\beta}}U^{\alpha}U^{\beta}\;\;</MATH>|1.74|Obramuj}} Podstawiając, za współrzędne czterowektora wektora prędkości U{{Sup|&beta;}} jego definicję, jako pochodna czteropołożenia względem interwału czasoprzestrzennego, dostajemy równoważne równanie tensorowe do {{LinkWzór|1.74}}: {{CentrujWzór|<MATH>0={{d}\over{d\lambda}}\left({{dx^{\mu}}\over{d\lambda}}\right)+{\Gamma^{\mu}}_{{\alpha}{\beta}}{{dx^{\alpha}}\over{d\lambda}}{{dx^{\beta}}\over{d\lambda}}\;\;</MATH>|1.75}} Wyrażenie {{LinkWzór|1.74}} możemy zapisać w postaci bezwskaźnikowej, bez uwzględnienia z jakimi rodzaju tensorami mamy do czynienia: {{CentrujWzór|<MATH>0={{d\mathbf{U}}\over{d\lambda}}+\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}\;\;</MATH>|1.76}} Otrzymaliśmy równanie, dzięki któremu czterowektor U{{Sup|&beta;}} jest przenoszony równolegle, stycznie wzdłuż naszej prostej i jest to równanie ruchu cząstki masowej lub bezmasowej w ogólnej teorii względności, jeśli {{Formuła|<MATH>K^{\mu}=0\;</MATH>}} w {{LinkWzór|1.76a}} dla układów dyskretnych i {{Formuła|<MATH>{{dK^{\mu}}\over{dV}}\;</MATH>}} w {{LinkWzór|1.77ca}} dla układów rozciągłych. Jeśli w prowadzimy definicję parametru &lambda;, który może być interwałem czasoprzestrzennym "s", poprzez inny parametr &xi; w sposób: s=a&xi;+b, to można udowodnić w sposób łatwy, korzystając z poprzedniego równania, że line geodezyjne wedle {{LinkWzór|1.74}} przy zerowych siłach niegrawitacyjnych zapisujemy jako: {{CentrujWzór|<MATH>0={{d}\over{d\xi}}\left({{dx^{\mu}}\over{d\xi}}\right)+{\Gamma^{\mu}}_{{\alpha}{\beta}}{{dx^{\alpha}}\over{d\xi}}{{dx^{\beta}}\over{d\xi}}\;\;</MATH>|1.77}} W przestrzeni euklidesowej płaskiej, gdy mamy zerowe siły niegrawitacyjne, mamy na pewno, że poszczególne elementy tensora metrycznego spełniają związek: &Gamma;{{Sup|&mu;}}{{Sub|&alpha;&beta;}}=0, stąd dostajemy: {{CentrujWzór|<MATH>{{d}\over{d\xi}}\left({{dx^{\mu}}\over{d\xi}}\right)=0\Rightarrow x^{\mu}=a^{\mu}\xi+b^{\mu}\;\;</MATH>|1.78}} Po rozwiązaniu równania {{LinkWzór|1.74}} dowiadujemy się, że rozwiązaniem jego jest równaniem prostej w naszej przestrzeni przy naszej definicji tensora Christoffela. ==== Gdy również występują siły niegrawitacyjne ==== Będziemy rozważać tu układy dyskretne i rozciągłe. ===== Układy dyskretne ===== A gdy występują inne tensory sił, to wtedy równanie {{LinkWzór|1.76}} podobnie przekształcamy jak {{LinkWzór|1.76}} z {{LinkWzór|1.70}}, wtedy: {{CentrujWzór|<MATH>m_0c\left({{d\mathbf{U}}\over{d\lambda}}+\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}\right)=\mathbf K\Rightarrow m_0c{{d\mathbf{U}}\over{d\lambda}}=-m_0c\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}+\mathbf K\Rightarrow m_0c{{dU^{\mu}}\over{d\lambda}}=-m_0c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}+K^{\mu}\;</MATH>|1.76a}} Gdy tensor sił niegrawitacyjnych jest równy zero, wtedy równość {{LinkWzór|1.76a}} przechodzi w równanie geodezyjne {{LinkWzór|1.75}}, gdy na układ nie działają żadne siły niegrawitacyjne. Druga zasada dynamiki Einsteina według równości końcowej {{LinkWzór|1.76a}} i wzór na tensor siły pochodzący od grawitacji, piszemy wzorami: {{ElastycznyWiersz|{{CentrujWzór|<MATH>\mathbf K_c=m_0c{{d\mathbf{U}}\over{d\lambda}}={{d\mathbf{P}}\over{d\lambda}}\Rightarrow K_c^{\mu}=m_0c{{dU^{\mu}}\over{d\lambda}}={{dP^{\mu}}\over{d\lambda}}\;</MATH>|1.77b}}|{{CentrujWzór|<MATH>\mathbf K_g=-m_0c\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}\Rightarrow K_g^{\mu}=-m_0c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}\;</MATH>|1.77c}}}} A tensor siły w {{LinkWzór|1.76a}}, czyli {{Formuła|<MATH>\mathbf K\;</MATH>}}, jest tensorem siły od oddziaływań niegrawitacyjnych. ====== Kilka żródeł grawitacyjnych ====== Załóżmy, że mamy kilka mas, każda ona zakrzywia czasoprzestrzeń, weźmy zasadę niezależności działania tensorów sił szczególnej teorii względności spełnioną też w ogólnej teorii względności, wtedy korzystając z równości na tensor siły grawitacyjnej mamy na podstawie {{LinkWzór|1.77c}}: {{CentrujWzór|<MATH>K_g^{\mu}=\sum_i K_{gi}^{\mu}=-\sum_im_{0}c{\Gamma^{\mu}_i}_{\alpha\beta}U^{\alpha}_iU^{\beta}_i=-m_0c\sum_i{\Gamma^{\mu}_i}_{\alpha\beta}U^{\alpha}_iU^{\beta}_i=-m_0c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}\;</MATH>|1.77ca11}} Widzimy, że w {{LinkWzór|1.77ca11}} poszczególne masy dostarczają swoje własne symbole Christoffela {{Formuła|<MATH>{\Gamma^{\mu}_i}_{\alpha\beta}\;</MATH>}} do poruszającej się masy względem niego, a wszystkie pola grawitacyjne od tych mas tworzą razem inne symbole {{Formuła|<MATH>{\Gamma^{\mu}}_{\alpha\beta}\;</MATH>}}, które opisuje całkowite zakrzywienie czasoprzestrzeni od tych mas. ===== Układy rozciągłe ===== Równanie geodezyjne {{LinkWzór|1.76a}} dla układów rozciągłych zastępując w {{LinkWzór|1.77c}} wielkości: {{Formuła|<MATH>m_0\;</MATH>}} i {{Formuła|<MATH>K^{\mu}\;</MATH>}}, kolejno przez: {{Formuła|<MATH>dm_0\;</MATH>}} i {{Formuła|<MATH>dK^{\mu}\;</MATH>}}, napiszmy, wiedząc, że czas jako współrzędna jest taki sam jak w układzie inercjalnym: {{CentrujWzór|<MATH>dm_0c\left({{d\mathbf{U}}\over{d\lambda}}+\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}\right)=d\mathbf K\Rightarrow dm_0c{{d\mathbf{U}}\over{d\lambda}}=-dm_0c\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}+d\mathbf K\Rightarrow\rho_0c{{d\mathbf{U}}\over{d\lambda}}=-\rho_0c\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}+{{d\mathbf K}\over{dV_0}}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow \sqrt{-g}\rho_0c\gamma{{d\mathbf{U}}\over{d\lambda}}=-\sqrt{-g}\rho_0c\gamma\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}+{{d\mathbf K}\over{dV}}\Rightarrow\sqrt{-g}\rho_0\gamma c{{dU^{\mu}}\over{d\lambda}}=-\sqrt{-g}\rho_0\gamma c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}+{{dK^{\mu}}\over{dV}}\;</MATH>|1.77ca}} Gęstość tensora siły całkowitej stanowiącej drugą zasadę dynamiki Einsteina szczególnej teorii względności dla układów rozciągłych, też i gęstość tensora siły od sił grawitacyjnych, napiszmy kolejno na podstawie {{LinkWzór|1.77ca}}: {{ElastycznyWiersz|{{CentrujWzór|<MATH>{{dK^{\mu}_c}\over{dV}}=\sqrt{-g}\rho_0\gamma c{{dU^{\mu}}\over{d\lambda}}={{dm_0}\over{dV}}c{{dU^{\mu}}\over{d\lambda}}\;</MATH>|LLL1}}|{{CentrujWzór|<MATH>{{dK^{\mu}_g}\over{dV}}=-\sqrt{-g}\rho_0\gamma c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}=-{{dm_0}\over{dV}}c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}\;</MATH>|LLL2}}}} === Linie geodezyjne, a druga pochodna czterowektora kowariantnego położenia === Będziemy badać wzory na linie geodezyjne, gdy siły niegrawitacyjne występują lub one nie występują, a poza tym siły grawitacyjne w nich zawsze występują. ==== Gdy występują tylko siły grawitacyjne ==== Przedstawimy teraz inne podejście do ruchu cząstki materialnej czyli piszemy linie geodezyjne w sposób kowariantny, czyli proste w przestrzeni czterowymiarowej spełniający warunek, który jest pochodną kowariantną U{{Sup|&mu;}}{{Sub|;&beta;}}=0, ale z definicji pochodnej kowariantnej możemy napisać: {{CentrujWzór|<MATH>0=U_{{\mu};\beta}=U_{{\mu},{\beta}}-{\Gamma^{{\alpha}}}_{{\mu}\beta}U_{{\alpha}}\;</MATH>|1.79}} Pomnóżmy teraz obie strony równania tensorowego {{LinkWzór|1.79}} przez elementy czterowektora prędkości U{{Sup|&beta;}}, otrzymując wynikowe równanie: {{CentrujWzór|<MATH>0=U^{\beta}U_{{\mu},{\beta}}-{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}\;</MATH>|1.80}} Rozwińmy wyrażenie występujące w równaniu tensorowym {{LinkWzór|1.80}} występujący jako odjemna wykorzystując definicję pochodnej zupełnej, i przestawmy ją jako pochodna kowariantnego tensora czteroprędkości względem parametru &lambda;. {{CentrujWzór|<MATH>U^{\beta}U_{{\mu},{\beta}}={{dx^{\beta}}\over{d\lambda}}{{\partial U_{\mu}}\over{\partial x^{\beta}}}={{dU_{\mu}}\over{d\lambda}}\;</MATH>}} wykorzystując udowodnioną powyższą tożsamość i podstawiając do równości {{LinkWzór|1.80}}, wtedy dochodzimy do wniosku, że zachodzi na pewno tożsamość poniżej, które to poniższe równanie jest równaniem linii geodezyjnej. {{CentrujWzór|<MATH>0={{dU_{\mu}}\over{d\lambda}}-{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}\;</MATH>|1.81|Obramuj}} Możemy wykorzystać definicję czterowektora prędkości, wtedy wzór na równość tensorową {{LinkWzór|1.81}} zapisujemy wedle: {{CentrujWzór|<MATH>0={{d^2x_{\mu}}\over{d\lambda^2}}-{\Gamma^{\alpha}}_{{\mu}{\beta}}{{dx_{\alpha}}\over{d\lambda}}{{dx^{\beta}}\over{d\lambda}}\;</MATH>|1.82}} Jeśli oznaczymy jako definicję parametru &lambda;, który może być interwałem czasoprzestrzennym "s", poprzez parametr &xi; w sposób s=a&xi;+c, to równanie na linie geodezyjne {{LinkWzór|1.82}} można przedstawić w postaci: {{CentrujWzór|<MATH>0={{d^2x_{\mu}}\over{d\xi^2}}-{\Gamma^{\alpha}}_{{\mu}{\beta}}{{dx_{\alpha}}\over{d\xi}}{{dx^{\beta}}\over{d\xi}}\;</MATH>|1.83}} Równania {{LinkWzór|1.74}} i {{LinkWzór|1.80}} stanowią równania ruchu cząstki w czterowymiarowej czasoprzestrzeni Einsteina i jak udowodnimy później, te dwa równania są ze sobą równoważne. Dla układów płaskich rozwiązaniem {{LinkWzór|1.83}} jest równanie {{LinkWzór|1.78}} tylko, że ze wskaźnikami do dołu. ==== Gdy w równaniach na linie geodezyjne uwzględnimy siły niegrawitacyjne ==== Będziemy rozważać tu układy dyskretne i rozciągłe. ===== Układy dyskretne ===== A gdy występują inne tensory sił, to wtedy równanie {{LinkWzór|1.70a}} podobnie przekształcamy jak {{LinkWzór|1.82}} z {{LinkWzór|1.70}}, wtedy: {{CentrujWzór|<MATH>{{d^2x_{\mu}}\over{d\lambda^2}}={\Gamma^{\alpha}}_{{\mu}{\beta}}{{dx_{\alpha}}\over{d\lambda}}{{dx^{\beta}}\over{d\lambda}}+{{1}\over{m_0c}}K_{\mu}\Rightarrow {{dU_{\mu}}\over{d\lambda}}={\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}+{{1}\over{m_0c}}K_{\mu}\Rightarrow m_0c{{dU_{\mu}}\over{d\lambda}}=m_0c{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}+K_{\mu}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow {{dP_{\mu}}\over{d\lambda}}=m_0c{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}+K_{\mu}\;</MATH>|1.82a}} Gdy tensor sił niegrawitacyjnych jest równy zero, wtedy równość {{LinkWzór|1.82a}} przechodzi w równanie geodezyjne {{LinkWzór|1.82}}, gdy na układ nie działają żadne siły niegrawitacyjne. Równanie ruchu dynamiki Einsteina i równanie na tensor sił grawitacji działający na ciało według {{LinkWzór|1.82a}} są równe: {{ElastycznyWiersz|{{CentrujWzór|<MATH>K_{c\mu}=m_0c{{dU_{\mu}}\over{d\lambda}}={{dP_{\mu}}\over{d\lambda}}\;</MATH>|1.82b}}|{{CentrujWzór|<MATH>K_{g\mu}=m_0c{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}\;</MATH>|1.82c}}}} ====== Kilka żródeł grawitacyjnych ====== Załóżmy, że mamy kilka mas, każda ona zakrzywia czasoprzestrzeń, weźmy zasadę niezalezności działania tensorów sił szczególnej teorii względności spełniona też w ogólnej teorii względności, wtedy korzystając z równości na tensor siły grawitacyjnej mamy na podstawie {{LinkWzór|1.82c}}: {{CentrujWzór|<MATH>K_{g\mu}=\sum_i K_{gi\mu}=\sum_im_0c{\Gamma^{\alpha}_i}_{{\mu}{\beta}}U_{i\alpha}U^{\beta}_i=m_0c\sum_i{\Gamma^{\alpha}_i}_{{\mu}{\beta}}U_{i\alpha}U^{\beta}_i=m_0c{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}\;</MATH>|1.77ca111}} Widzimy, że w {{LinkWzór|1.77ca111}} poszczególne masy dostarczają swoje własne symbole Christoffela {{Formuła|<MATH>{\Gamma^{\alpha}_i}_{{\mu}{\beta}}\;</MATH>}} do poruszającej się masy względem niego, a wszystkie pola grawitacyyjne od tych mas tworzą razem inne symbole {{Formuła|<MATH>{\Gamma^{\mu}}_{\alpha\beta}\;</MATH>}}, które opisuje całkowite zakrzywienie czasoprzestrzeni od tych mas. ===== Układy rozciągłe ===== Równanie geodezyjne {{LinkWzór|1.82a}} dla układów rozciągłych zastępując w nim wielkości: {{Formuła|<MATH>m_0\;</MATH>}} i {{Formuła|<MATH>K^{\mu}\;</MATH>}}, kolejno przez: {{Formuła|<MATH>dm_0\;</MATH>}} i {{Formuła|<MATH>dK^{\mu}\;</MATH>}}, napiszmy, wiedząc, że czas jako współrzędna jest taki sam jak w układzie inercjalnym: {{CentrujWzór|<MATH>dm_0c{{dU_{\alpha}}\over{d\lambda}}=dm_0 c{\Gamma^{\mu}}_{\alpha\beta}U_{\mu}U^{\beta}+dK^{\mu}\Rightarrow\rho_0c{{dU_{\alpha}}\over{d\lambda}}=\rho_0c{\Gamma^{\mu}}_{\alpha\beta}U_{\mu}U^{\beta}+{{dK_{\alpha}}\over{dV_0}} \Rightarrow\sqrt{-g}\rho_0\gamma c{{dU_{\alpha}}\over{d\lambda}}=\sqrt{-g}\rho_0\gamma c{\Gamma^{\mu}}_{\alpha\beta}U_{\mu}U^{\beta}+{{dK_{\alpha}}\over{dV}}\;</MATH>|1.77ca1}} Gęrstość tensora siły całkowitej stanowiącej drugą zasadę dynamiki Einsteina szczególnej teorii względności dla układów rozciągłych, też i gęstość tensora siły od sił grawitacyjnych, napiszmy kolejno na podstawie {{LinkWzór|1.77ca1}}: {{ElastycznyWiersz|{{CentrujWzór|<MATH>{{dK_{c\alpha}}\over{dV}}=\sqrt{-g}\rho_0\gamma c{{dU_{\alpha}}\over{d\lambda}}\;</MATH>|LLL1a}}|{{CentrujWzór|<MATH>{{dK_{g\alpha}}\over{dV}}=\sqrt{-g}\rho_0\gamma c{\Gamma^{\mu}}_{\alpha\beta}U_{\mu}U^{\beta}\;</MATH>|LLL2a}}}} === Równoważność wzorów na linie geodezyjne w przedstawieniu kowariantnym i kontrawariantnym === Będziemy tu udowadniać zgodność wzorów na linie geodezyjne w przedstawieniu kowariantnym i kontrawariantnym, co udowodnimy, że te dwa wzory są ze sobą równoważne. ==== Układy dyskretne ==== Wzór na linię geodezyjną w przedstawieniu kontrawariantnym pomnóżmy przez tensor metryczny podwójnie kowariantny, oraz wykorzystując fakt, że pochodna tensora względem pewnego parametru jest tensorem oraz z własności tensorów metrycznych, otrzymujemy: {{CentrujWzór|<MATH>{{1}\over{m_0c}}K^{\nu}={{dU^{\nu}}\over{d\lambda}}+{\Gamma^{\nu}}_{\alpha\beta}U^{\alpha}U^{\beta}\Rightarrow {{1}\over{m_0c}}K^{\mu}g_{\mu\nu}={{dU^{\mu}}\over{d\lambda}}g_{\mu\nu}+g_{\mu\nu}{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta} \;</MATH>|1.84}} Wykorzystajmy własność taką, że ogólnie tensor czteroprędkości kontrawariantny U{{Sup|&alpha;}} przedstawmy z zależności od kowariantnego tensora U{{Sub|&gamma;}}, co tensorowo możemy zapisać: {{CentrujWzór|<MATH>U^{\alpha}=g^{\alpha\gamma}U_{\gamma}\;</MATH>|1.85}} Wykorzystując tożsamość tensorową {{LinkWzór|1.85}} do równości tensorowej {{LinkWzór|1.84}}: {{CentrujWzór|<MATH>{{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}-U^{\alpha}g_{\alpha\nu,\beta}U^{\beta}+\Gamma_{\nu\alpha\beta}U^{\alpha}U^{\beta}\Rightarrow {{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}+U^{\alpha}U^{\beta}{{1}\over{2}}\left(-2g_{\alpha\nu,\beta}+g_{\alpha\nu,\beta}+g_{\beta\nu,\alpha}-g_{\alpha\beta,\nu}\right)\;</MATH>{{Br}}<MATH>\Rightarrow {{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}+U^{\alpha}U^{\beta}{{1}\over{2}}\left(-g_{\alpha\nu,\beta}+g_{\beta\nu,\alpha}-g_{\alpha\beta,\nu}\right)\Rightarrow {{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}-U^{\alpha}U^{\beta}{{1}\over{2}}\left(g_{\alpha\nu,\beta}+g_{\alpha\beta,\nu}-g_{\beta\nu,\alpha}\right)\;</MATH>{{Br}}<MATH>\Rightarrow {{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}-\Gamma_{\alpha\beta\nu}U^{\alpha}U^{\beta}\Rightarrow {{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}-{\Gamma^{\alpha}}_{\nu\beta}U_{\alpha}U^{\beta} </MATH>|1.86}} Co na podstawie dowodu {{LinkWzór|1.86}} udowodniliśmy równoważność wzorów przedstawiający równości na linię geodezyjną, czyli tożsamości {{LinkWzór|1.76a}} i {{LinkWzór|1.82a}}, które oznaczają to samo. ==== Układy rozciągłe ==== Wzór na linię geodezyjną w przedstawieniu kontrawariantnym pomnóżmy przez tensor metryczny podwójnie kowariantny, oraz wykorzystując fakt, że pochodna tensora względem pewnego parametru jest tensorem oraz z własności tensorów metrycznych, otrzymujemy: {{CentrujWzór|<MATH>{{dK^{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c{{dU^{\nu}}\over{d\lambda}}+\sqrt{-g}\rho_0\gamma c{\Gamma^{\nu}}_{\alpha\beta}U^{\alpha}U^{\beta}\Rightarrow {{dK^{\nu}}\over{dV}}g_{\mu\nu}=\sqrt{-g}\rho_0\gamma c{{dU^{\mu}}\over{d\lambda}}g_{\mu\nu}+\sqrt{-g}\rho_0\gamma cg_{\mu\nu}{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta} \;</MATH>|1.84a}} Wykorzystując tożsamość tensorową {{LinkWzór|1.85}} do równości tensorowej {{LinkWzór|1.84a}}: {{CentrujWzór|<MATH>{{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left({{dU_{\nu}}\over{d\lambda}}-U^{\alpha}g_{\alpha\nu,\beta}U^{\beta}+\Gamma_{\nu\alpha\beta}U^{\alpha}U^{\beta}\right)\Rightarrow \;</MATH>{{Br}}<MATH>\Rightarrow{{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left[{{dU_{\nu}}\over{d\lambda}}+U^{\alpha}U^{\beta}{{1}\over{2}}\left(-2g_{\alpha\nu,\beta}+g_{\alpha\nu,\beta}+g_{\beta\nu,\alpha}-g_{\alpha\beta,\nu}\right)\right]\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow {{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left[{{dU_{\nu}}\over{d\lambda}}+U^{\alpha}U^{\beta}{{1}\over{2}}\left(-g_{\alpha\nu,\beta}+g_{\beta\nu,\alpha}-g_{\alpha\beta,\nu}\right)\right]\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow {{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left[{{dU_{\nu}}\over{d\lambda}}-U^{\alpha}U^{\beta}{{1}\over{2}}\left(g_{\alpha\nu,\beta}+g_{\alpha\beta,\nu}-g_{\beta\nu,\alpha}\right)\right]\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow {{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left[{{dU_{\nu}}\over{d\lambda}}-\Gamma_{\alpha\beta\nu}U^{\alpha}U^{\beta}\right]\Rightarrow {{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c{{dU_{\nu}}\over{d\lambda}}-\sqrt{-g}\rho_0\gamma c{\Gamma^{\alpha}}_{\nu\beta}U_{\alpha}U^{\beta} </MATH>|1.86aa}} Co na podstawie dowodu {{LinkWzór|1.86aa}} udowodniliśmy równoważność wzorów przedstawiający równości na linię geodezyjną, czyli tożsamości {{LinkWzór|1.76a}} i {{LinkWzór|1.82a}}, które oznaczają to samo. === Tensor siły grawitacji i inne tensory siły (w tym całkowity tensor siły w drugiej zasadzie dynamiki Einsteina), jako tensory z definicji tensora matematycznego === Tensor siły grawitacyjnej, jak można poniżej udowodnić jest tensorem, bo bierzemy tutaj, zbiór stałych transformacji, wtedy nie tylko ten tensor, ale również tensor siły całkowitej drugiej zasady dynamiki Einsteina jest tensorem, jak i inne tensory siły, przy stałych transformacjach symbole Christoffera są tensorami (i dlatego tak jest) - dlatego te symbole są tensorami, bo stałe transformacje można włożyć pod pochodną cząstkową tensora metrycznego w definicji tych symboli, i po transformacji otrzymujemy inne tensory metryczne, ale nie jest już tak dla funkcji transformacji niestałych, stałe transformacji rozdzielają wszechświat na podprzestrzenie, w których panują inne funkcje transformacji stałe. Jeżeli w jednym układzie (lub punkcie) nie ma grawitacji, to w innym też nie ma, czyli można rozważać przestrzeń bez grawitacji z trzema podstałymi oddziaływaniami (model standardowy dla trzech podstawowych oddziaływań - elektromagnetyczne, silne i słabe), czyli są przestrzenie, w której grawitacji nie ma lub jest. === Druga zasada dynamiki Einsteina w wersji wektorowej === Napiszmy równania w postaci podobnej, jak w drugiej zasadzie dynamiki Einsteina-Newtona, dla szczególnej teorii względności, czy w mechanice Newtona, ale też spełnioną w ogólnej teorii względności, w postaci: {{CentrujWzór|<MATH>\vec F={{d\vec p}\over{dt}}\;</MATH>{{Tekst|, gdzie:}} <MATH>\vec p=p^i=m_0c u^i\;</MATH>|hd1}} W nim {{Formuła|<MATH>u^i\;</MATH>}} jest współrzędną przestrzenną tensora prędkości, zatem jeśli {{Formuła|<MATH>p^{\mu}\;</MATH>}} jest tensorem pędu, to {{Formuła|<MATH>p^i\;</MATH>}} jest współrzędną przestrzenną tensora prędkości, też spełniona w ogólnej teorii względności, tak samo jak w szczególnej teorii względności. Niezależność działania sił, i że addytywność wektorów sił, w ogólnej teorii względności, udowadnia się podobnie, jak dla mechaniki Einsteina-Newtona (jak w szczególnej teorii względności i mechanice Newtona). Przedstawia się addytywność wektorów sił: {{CentrujWzór|<MATH>\vec F_c=\sum_{i}\vec F_i\;</MATH>|hd0}} Zależność pomiędzy wektorem tensora prędkości, a wektorem siły przedstawia się wzorem: {{CentrujWzór|<MATH>\vec K={{d\vec p}\over{ds}}={{\gamma}\over{c}}{{d\vec p}\over{dt}}={{\gamma}\over{c}}\vec F\;</MATH>{{Tekst|, gdzie:}} <MATH>\gamma ds=cdt\Rightarrow\gamma=\left({{ds}\over{cdt}}\right)^{-1}\;</MATH>|hd2}} Dla szczególnej teorii względności jest spełnione równanie na tensor siły, które przedstawimy dla układów lokalnie płaskich ogólnej teorii względności, który napisaliśmy w wykładzie szczególnej teorii względności w punkcie {{LinkWzór|2.27|Tensory w czasoprzestrzeni|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}: {{CentrujWzór|<MATH>K^{\mu}={{\gamma}\over{c}}\left[\left({{\vec v}\over{c}},\vec F\right),\vec F\right]^T\;</MATH>|hd3}} Podobny wzór możemy również otrzymać w ogólnej teorii względności, tylko w iloczynie są wskaźniki dolne i górne, nie górne, zapisaną w sposób, biorąc dla dwóch sygnatur: {{CentrujWzór|<MATH>K^{\mu}={{\gamma}\over{c}}\left[-\left({{v_i}\over{c}}F^i\right),F^i\right]^T=\left[-{{p_iK^i}\over{p_0}},K^i\right]^T\wedge p_0=m_0c u_0=\pm m_0c\gamma=\pm {{E_r}\over{c}}</MATH> {{Tekst|(wersja zwykła)}}{{Br}}<MATH>K^{\mu}=\left[-{{P_iK^i}\over{P_0}},K^i\right]^T\wedge P_0=m_0c U_0=\pm m_0c\gamma=\pm {{E_r}\over{c}}\;</MATH> {{Tekst|(wersja uogólniona)}}|hd4}} Zapisując wniosek {{LinkWzór|hd4}}, biorąc iloczyn skalarny przestrzeni zwykłej {{Formuła|<MATH>A=A^T=[a_{ij}]=[a_{ji}]=[a_{ij}]^T\;</MATH>}}, to wtedy ta równość przechodzi w {{LinkWzór|hd3}}, tylko przy innej definicji {{Formuła|<MATH>\gamma\;</MATH>}} z jego definicją dla ogólnej teorii względności, ale nie już dla szczególnej teorii względności. Uogólnijmy wzór {{LinkWzór|hd1}}, by w nim było {{Formuła|<MATH>\vec P=m_0c U^{i}\;</MATH>}}, a nie {{Formuła|<MATH>\vec p=m_0c u^{i}\;</MATH>}}, wtedy wektor siły przedstawia się w formie: {{CentrujWzór|<MATH>\vec F={{d\vec P}\over{dt}}\;</MATH>{{Tekst|, gdzie:}} <MATH>\vec P=P^i=m_0c U^i\;</MATH>|hd10}} Dla wzoru {{LinkWzór|hd10}} niezależność działania sił i addytywność udowadnia się podobnie, jak dla wersji z wektorami zwykłymi tensora prędkości. A wtedy wzór {{LinkWzór|hd3}} uogólniamy do tej wersji (ten wzór pod względem zapisu jest taki sam), a wartość {{Formuła|<MATH>\gamma\;</MATH>}} piszemy: {{CentrujWzór|<MATH>\gamma d\lambda=cdt\Rightarrow\gamma=\left({{d\lambda}\over{cdt}}\right)^{-1}\;</MATH>|hd11}} Też jest spełnione przy takim uogólnieniu wzór na tensor wektora siły, w tym przypadku równość {{LinkWzór|hd2}}, przy definicji {{Formuła|<MATH>\gamma\;</MATH>}} {{LinkWzór|hd11}}, i z niego wynikającej definicji wektora siły, innej niż, ale równoważnej, do {{LinkWzór|hd10}}. == Zgodność wzoru na linie geodezyjne z metryką przy ogólnie niezerowych siłach niegrawitacyjnych == Formułę {{LinkWzór|1.9|Wprowadzenie do ogólnej teorii względności}} zrózniczkujmy obustronnie, gdzie parametrem różniczkowym względem, którego różniczkujemy, jest interwał czasoprzestrzeny do: {{CentrujWzór|<MATH>0={{d\left(u^{\mu}u_{\mu}\right)}\over{ds}}\Leftrightarrow 0={{du^{\mu}}\over{ds}}u_{\mu}+{{du_{\mu}}\over{ds}}u^{\mu}\;</MATH>|1.87}} Jeżeli w równaniu {{LinkWzór|1.87}} zamienimy {{Formuła|<MATH>s\;</MATH>}} na {{Formuła|<MATH>\lambda\;</MATH>}}, wtedy zamieniamy {{Formuła|<MATH>u^{\mu}\;</MATH>}} w {{Formuła|<MATH>U^{\mu}\;</MATH>}} dla formalności, to ono jest dalej spełnione i jest w postaci: {{CentrujWzór|<MATH>0={{d\left(U^{\mu}U_{\mu}\right)}\over{d\lambda}}\Leftrightarrow 0={{dU^{\mu}}\over{d\lambda}}U_{\mu}+{{dU_{\mu}}\over{d\lambda}}U^{\mu}\;</MATH>|1.871}} Równanie {{LinkWzór|1.871}} jest równoważne równaniu {{LinkWzór|1.87}}, nie tylko dla {{Formuła|<MATH>\lambda=s\;</MATH>}} (gdy zmienna {{Formuła|<MATH>\lambda\;</MATH>}} jest równa interwałowi czasoprzestrzennemu), bo to wynika z rachunku różnicowego dla kroku {{Formuła|<MATH>\Delta s\;</MATH>}} nieskończenie małego, ale stałego, więc w {{LinkWzór|1.87}} można zastąpić {{Formuła|<MATH>ds\;</MATH>}} przez {{Formuła|<MATH>d\lambda\;</MATH>}}, i tak powstaje równanie różniczkowe {{LinkWzór|1.871}}. === Układy dyskretne === Skorzystajmy ze wzoru na linie geodezyjne, gdy liczymy pochodne kowariantne tensorów prędkości w przedstawieniu kontrawriantym {{LinkWzór|1.74}} i kowariantnym {{LinkWzór|1.81}}, co pomnózmy go obustronnie przez kolejno przez {{Formuła|<MATH>U_{\mu}\;</MATH>}} i {{Formuła|<MATH>U^{\mu}\;</MATH>}}, co potem skorzystamy ze wzoru {{LinkWzór|1.871}}, wtedy: {{CentrujWzór|<MATH>0=-U_{\mu}{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}+U^{\mu}{\Gamma^{\alpha}}_{\mu\beta}U_{\alpha}U^{\beta}+{{1}\over{m_0c}}\left(K^{\mu}U_{\mu}+K_{\mu}U^{\mu}\right)\Rightarrow 0=K^{\mu}U_{\mu}+K_{\mu}U^{\mu}\Rightarrow K^{\mu}U_{\mu}=0\;</MATH>|1.88}} Końcowe równanie w {{LinkWzór|1.88}} przekształćmy do układów lokalnie płaskich, wtedy {{Formuła|<MATH>K^{\mu}\;</MATH>}} jest tensorem siły równej całkowitemu tensorowi siły według drugiej zasady dynamiki Einsteina według {{LinkWzór|1.70a}}, zatem w tym układzie po zamienieniu {{Formuła|<MATH>\lambda\;</MATH>}} na {{Formuła|<MATH>s\;</MATH>}} (interwał czasoprzestrzenny): {{CentrujWzór|<MATH>K^{\mu}u_{\nu}=0\Rightarrow K^{\mu}u_{\mu}=m_0c{{du^{\mu}}\over{ds}}u_{\mu}=m_0c{{1}\over{2}}{{d(u^{\mu}u_{\mu})}\over{ds}}=m_0c{{1}\over{2}}{{d (\pm 1)}\over{ds}}=0\Rightarrow K^{\mu}u_{\mu}=0\;</MATH>|1.88a}} Równanie {{LinkWzór|1.88a}} jest również spełnione dla dowolnej definicji {{Formuła|<MATH>\lambda\;</MATH>}}, nie tylko dla {{Formuła|<MATH>\lambda=s\;</MATH>}}, bo zachodzi wytłumaczone {{LinkWzór|1.871}}. Stąd tożsamość {{LinkWzór|1.88}} jest na pewno spełniona na podstawie {{LinkWzór|1.88a}} (dla dowolnego {{Formuła|<MATH>\lambda\;</MATH>}}), a więc wzór na linie geodezyjne jest zgodny z metryką. === Układy rozciągłe === Równanie {{LinkWzór|1.87}} pomnóżmy przez {{Formuła|<MATH>\sqrt{-g}\rho_0c\gamma\;</MATH>}}, wtedy otrzymamy: {{CentrujWzór|<MATH>0=\sqrt{-g}\rho_0c\gamma{{dU^{\mu}}\over{d\lambda}}U_{\mu}+{{dU_{\mu}}\over{d\lambda}}U^{\mu}\;</MATH>|1.87w1}} Wykorzystajmy równości {{LinkWzór|1.77ca}} (przedstawienie kontrawariantne równania geodezyjnego) i {{LinkWzór|1.77ca1}} (przedstawienie kowariantnego równania geodezyjnego), wtedy: {{CentrujWzór|<MATH>0=-\sqrt{-g}\rho_0c\gamma U_{\mu}{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}+\sqrt{-g}\rho_0c\gamma U^{\mu}{\Gamma^{\alpha}}_{\mu\beta}U_{\alpha}U^{\beta}+\left({{dK^{\mu}}\over{dV}}U_{\mu}+{{dK_{\mu}}\over{dV}}U^{\mu}\right)\Rightarrow 0={{dK^{\mu}}\over{dV}}U_{\mu}+{{dK_{\mu}}\over{dV}}U^{\mu}\Rightarrow {{dK^{\mu}}\over{dV}}U_{\mu}=0\;</MATH>|llll1}} Końcowe równanie w {{LinkWzór|llll1}} przekształćmy do układów lokalnie płaskich, wtedy {{Formuła|<MATH>{{dK^{\mu}}\over{dV}}\;</MATH>}} jest tensorem siły równej całkowitej gęstości tensora siły według drugiej zasady dynamiki Einsteina według {{LinkWzór|1.70a}}, zatem w tym układzie dla {{Formuła|<MATH>\lambda=s\;</MATH>}}: {{CentrujWzór|<MATH>{{dK^{\mu}}\over{dV}}u_{\mu}=0\Rightarrow {{dK^{\mu}}\over{dV}}u_{\mu}=\sqrt{-g}\rho_0c\gamma{{du^{\mu}}\over{ds}}u_{\mu}=\sqrt{-g}\rho_0c\gamma{{1}\over{2}}{{d(u^{\mu}u_{\mu})}\over{ds}}=\sqrt{-g}\rho_0c\gamma{{1}\over{2}}{{d (\pm 1)}\over{ds}}=0\Rightarrow {{dK^{\mu}}\over{dV}}u_{\mu}=0\;</MATH>|1.88aaa}} Jeżeli równanie {{LinkWzór|1.88aaa}} jest spełnione dla {{Formuła|<MATH>\lambda=s\;</MATH>}}, to jest również spełnione dla dowolnej definicji {{Formuła|<MATH>\lambda\;</MATH>}}, bo zachodzi wytłumaczone {{LinkWzór|1.871}}, zatem dla układów rozciągłych metryka jest zgodnę z równaniem na linie geodezyjne na podstawie {{LinkWzór|llll1}} według udowodnionego wniosku {{LinkWzór|1.88aaa}}. == Zasada zachowania energii-pędu dla układów lokalnie płaskich przy zerowaniu się tensorów sił niegrawitacyjnych == W układzie lokalnie płaskim tensory Christoffela są równe zero z uwagi, że tensor metryczny jest równy tensorowi Minkowskiego i pochodne cząstkowe tego tensora są równe zero. Wtedy z uwagi na {{LinkWzór|1.74}} rozwiązaniem równania tego jest {{LinkWzór|1.78}}, zatem tensor prędkości cząstki w układzie lokalnie płaskim, jeżeli przymniemy {{Formuła|<MATH>\xi=s\;</MATH>}}, jest równy: {{CentrujWzór|<MATH>u^{\mu}=a^{\mu}\;</MATH>|1.90}} Czyli dla układów lokalnie płaskich na podstawie {{LinkWzór|2.42|Tensory w czasoprzestrzeni|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, w którym prędkości są stałe dowiadujemy się, że: {{CentrujWzór|<MATH>{{dK^{\mu}}\over{dV}}=\rho_0\gamma c{{d}\over{d s}}u^{\mu}=\rho_0\gamma c{{d}\over{d s}}a^{\mu}=0\;</math>|1.91}} I dalej stąd dowiadujemy się, że na podstawie {{LinkWzór|1.91}} energia i pęd w układzie lokalnie płaskim są zachowane. Też ten sam wniosek możemy otrzymać z {{LinkWzór|1.74}} przy zerowaniu się symboli Christoffela. == Równanie dewiacyjne i dewiacja geodezyjna, według zasady niezalezności działania tensorów sił == Będziemy tutaj wyprowadzali dewiacyjne równanie uwzględniające tylko siły grawitacji albo siły niegrawitacyjne lub oba. === Równanie dewiacyjne, a tylko siły grawitacji === Weźmy sobie dwie krzywe geodezyjna, odległość pomiędzy cząstkami poruszających się na tych liniach określamy według definicji {{Formuła|<MATH>\xi^{\alpha}=x_1^{\alpha}-x_2^{\alpha}\;</MATH>}}, zatem różnica wzorów na linie geodezyjne {{LinkWzór|1.75}} dla {{Formuła|<MATH>x_1^{\alpha}\;</MATH>}} i {{Formuła|<MATH>x_2^{\alpha}\;</MATH>}} dla układów lokalnie płaskich, tu wykorzystajmy zasadę namniejszego działania tensorów sił, wtedy znika tensor sił niegrawitacyjnych, określamy jako: {{CentrujWzór|<MATH>{{d^2\xi^{\alpha}}\over{d\lambda^2}}+{\Gamma^{\alpha}}_{\omega\eta,\gamma}\xi^{\gamma}U^{\omega}U^{\eta}=0\;</MATH>|1.92}} Napiszmy teraz drugą pochodną wielkości absolutnej &xi; wykorzystując {{LinkWzór|2.33|Rachunek_tensorowy|Metody_matematyczne_fizyki|MMF}}, a także {{LinkWzór|2.35|Rachunek_tensorowy|Metody_matematyczne_fizyki|MMF}} wykorzystując przy okazji udowodnioną tożsamość {{LinkWzór|1.92}} dla układu współrzędnych lokalnie płaskiego, w której w punktach płaskości tensor Christoffela jest równy zero: {{CentrujWzór|<MATH>{{d^2\xi}\over{d\lambda^2}}={{d}\over{d\lambda}}\left({{d\xi^{\alpha}}\over{d\lambda}}e_{\alpha}+\xi^{\alpha}{{de_{\alpha}}\over{d\lambda}}\right)= {{d}\over{d\lambda}}\left[\left({{d\xi^{\gamma}}\over{d\lambda}}+\xi^{\eta}{\Gamma^{\gamma}}_{\eta\beta}U^{\beta}\right)e_{\gamma}\right]=\left({{d^2\xi^{\alpha}}\over{d\lambda^2}}+{\Gamma^{\alpha}}_{\eta\beta,\omega}\xi^{\eta}U^{\omega}U^{\beta}\right)e_{\alpha}+\;</MATH>{{Br}}<MATH>+\left({{d\xi^{\gamma}}\over{d\lambda}}+\xi^{\eta}{\Gamma^{\gamma}}_{\eta\beta}U^{\beta}\right){\Gamma^{\alpha}}_{\gamma\omega}U^{\omega}e_{\alpha}= \left(-{\Gamma^{\alpha}}_{\beta\omega,\eta}\xi^{\eta}U^{\beta}U^{\omega}+{\Gamma^{\alpha}}_{\eta\beta,\omega}\xi^{\eta}U^{\omega}U^{\beta}\right)e_{\alpha}=\left({\Gamma^{\alpha}}_{\eta\beta,\omega}-{\Gamma^{\alpha}}_{\beta\omega,\eta}\right)\xi^{\eta}U^{\omega}U^{\beta}e_{\alpha}=\;</MATH>{{Br}}<MATH>={{R^{\alpha}}_{\beta\omega\eta}}\xi^{\eta}U^{\omega}U^{\beta}e_{\alpha}</MATH>|1.93}} Końcowy wniosek wynikający z obliczeń {{LinkWzór|1.93}} jest słuszny tylko w układzie współrzędnych lokalnie płaskich, w której to w punktach płaskości tensor Christoffela jest równy zero. Udowodnijmy jego słuszność w dowolnym układzie współrzędnych: {{CentrujWzór|<MATH>{{\overline R}^{\alpha}}_{\beta\omega\eta}{\overline \xi}^{\eta}{\overline U}^{\omega}{\overline U}^{\beta}{\overline e}_{\alpha}={{{\overline R}^{\alpha}}_{\beta\omega\eta}}{\overline{\Lambda^{\eta}}}_{\eta^'}\xi^{\eta^'}{\overline{\Lambda}^{\omega}}_{\omega^'}U^{\omega^'}{\overline{\Lambda}^{\beta}}_{\beta^'}U^{\beta^'}{\Lambda^{\alpha^'}}_{\alpha}e_{\alpha^'}={{{\overline R}^{\alpha}}_{\beta\omega\eta}}{\overline{\Lambda^{\eta}}}_{\eta^'}{\overline{\Lambda}^{\omega}}_{\omega^'}{\overline{\Lambda}^{\beta}}_{\beta^'}{\Lambda^{\alpha^'}}_{\alpha}\xi^{\eta^'}U^{\omega^'}U^{\beta^'} e_{\alpha^'}=\;</MATH>{{Br}}<MATH>={{R^{\alpha^'}}_{\beta^'\omega^'\eta^'}}\xi^{\eta^'}U^{\omega^'}U^{\beta^'}e_{\alpha^'}\;</MATH>|1.94}} Na podstawie obliczeń {{LinkWzór|1.94}} wynikających z {{LinkWzór|1.93}} wnioskujemy, że w dowolnym układzie współrzędnych jest spełnione prawo zwane równaniem dewiacyjnym: {{CentrujWzór|<MATH>{{d^2\xi}\over{d\lambda^2}}={R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}\xi^{\eta}e_{\alpha}\;</MATH>|1.95}} === Układy dyskretne === Według zasady niezależności działania tensorów sił, podobne równanie do {{LinkWzór|1.95}}, napiszmy równanie dewiacyjne, gdy nie ma grawitacji, tylko są siły niegrawitacyjne, wtedy ono piszemy, zapisując w nim przecinek średnikiem w układach lokalnie płaskich, co w takich układach można tak robić: {{CentrujWzór|<MATH>{{d^2\xi}\over{d\lambda^2}}={{1}\over{m_0c}}\xi^{\eta}{K^{\alpha}}_{;\eta}e_{\alpha}\;</MATH>|1.95a}} Wykorzystując tą naszą zasadę połączmy równania {{LinkWzór|1.95}} i {{LinkWzór|1.95a}}, wtedy: {{CentrujWzór|<MATH>{{d^2\xi}\over{d\lambda^2}}={R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}\xi^{\eta}e_{\alpha}+{{1}\over{m_0c}}\xi^{\eta}{K^{\alpha}}_{;\eta}e_{\alpha}\Rightarrow{{d^2\xi}\over{d\lambda^2}}=\left({R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}+{{1}\over{m_0c}}{K^{\alpha}}_{;\eta}\right)\xi^{\eta}e_{\alpha}\;</MATH>|1.95b}} Równanie {{LinkWzór|1.95b}} jest udowodnione w układach lokalnie płaskich, co na podstawie teorii transformacji jest ono również spełnione w układach zakrzywionych. Równanie {{LinkWzór|1.95b1}} jest udowodnione w układach lokalnie płaskich, co na podstawie teorii transformacji jest ono również spełnione w układach zakrzywionych. To równanie jest równaniem dewiacyjnym uwzględniającym siły grawitacji i niegrawitacyjne. Równanie {{LinkWzór|1.95a}} nazywamy równaniem dewiacyjnym układów zakrzywionych odległości pomiędzy dmoma ciałami bardzo bliskimi względem siebie przy uwzględnieniu tensorów sił pochodzący od oddziaływań niegrawitacyjnych. === Układy rozciągłe === Według zasady niezależności działania tensorów sił, podobne równanie do {{LinkWzór|1.95}}, napiszmy równanie dewiacyjne, gdy nie ma grawitacji, tylko są siły niegrawitacyjne, wtedy ono piszemy, zapisując w nim przecinek średnikiem w układach lokalnie płaskich, co w takich układach można tak robić: {{CentrujWzór|<MATH>\sqrt{-g}\rho_0\gamma c{{d^2\xi}\over{d\lambda^2}}+\left(\sqrt{-g}\rho_0\gamma c\right)_{,\eta}\xi^{\eta}{{dU^{\alpha}}\over{d\lambda}}e_{\alpha}=\xi^{\eta}{\left({{dK^{\alpha}}\over{dV}}\right)}_{;\eta}e_{\alpha}\;</MATH>|1.95a1}} Wykorzystując tą naszą zasadę połączmy równania {{LinkWzór|1.95}} i {{LinkWzór|1.95a1}}, wtedy: {{CentrujWzór|<MATH>\sqrt{-g}\rho_0\gamma c{{d^2\xi}\over{d\lambda^2}}+\left(\sqrt{-g}\rho_0\gamma c\right)_{,\eta}\xi^{\eta}{{dU^{\alpha}}\over{d\lambda}}e_{\alpha}=\sqrt{-g}\rho_0\gamma c{R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}\xi^{\eta}e_{\alpha}+\xi^{\eta}{\left({{dK^{\alpha}}\over{dV}}\right)}_{;\eta}e_{\alpha}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\sqrt{-g}\rho_0\gamma c{{d^2\xi}\over{d\lambda^2}}=\left(\sqrt{-g}\rho_0\gamma c{R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}-\left(\sqrt{-g}\rho_0\gamma c\right)_{,\eta}{{dU^{\alpha}}\over{d\lambda}}+{\left({{dK^{\alpha}}\over{dV}}\right)}_{;\eta}\right)\xi^{\eta}e_{\alpha}\;</MATH>|1.95b1}} Równanie {{LinkWzór|1.95b1}} jest udowodnione w układach lokalnie płaskich, co na podstawie teorii transformacji jest ono również spełnione w układach zakrzywionych. To równanie jest równaniem dewiacyjnym uwzględniającym siły grawitacji i niegrawitacyjne. Równanie {{LinkWzór|1.95a1}} nazywamy równaniem dewiacyjnym układów zakrzywionych odległości pomiędzy dmoma ciałami bardzo bliskimi względem siebie przy uwzględnieniu tensorów sił pochodzący od oddziaływań niegrawitacyjnych. == Lokalna zasada zachowania energii-pędu == Weźmy lokalną zasadę zachowania energii-pędu szczególnej teorii względności {{LinkWzór|Vb|Lokalna zasada zachowania energii(masy)-pędu z zasady zachowania energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, wtedy to możemy zapisać jako: {{CentrujWzór|<MATH>{{1}\over{c}}{j^{\mu\nu}}_{,\nu}={{dK^{\mu}}\over{dV_0}}\;</MATH>|LKJ1}} Równanie {{LinkWzór|LKJ1}} w układach zakrzywionych przyjmuje postać zamieniając przecinek średnikiem i wykorzystując {{LinkPatrz|FF1}} i {{linkPatrz|FF2}}, wtedy: {{CentrujWzór|<MATH>{{1}\over{c}}{j^{\mu\nu}}_{;\nu}={{dK^{\mu}}\over{dV_0}}\Rightarrow{{\gamma}\over{c}}\sqrt{-g}{j^{\mu\nu}}_{;\nu}={{dK^{\mu}}\over{dV}}\;</MATH>|LKJ2}} Równanie {{LinkWzór|LKJ2}} jest równaniem lokalnej zasady zachowania energii-pędu wynikającej z praw szczególnej teorii względności z zasady zachowania energii-pędu lub lokalnej zachowawczości tensora gęstości energii-pędu. == Lokalna zasada zachowania tensora gęstości pędu == Weźmy lokalną zasadę zachowania tensora gęstości pędu szczególnej teorii względności według {{LinkWzór|3.19aaaaaa2|Lokalna zasada zachowania tensora pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, wtedy możemy napisać wynikająco: {{CentrujWzór|<MATH>\gamma{{\partial}\over{c\partial t}}\left(\rho v^{\mu}\right)=-{{\gamma}\over{c}}{T^{\mu j}_k}_{,j}+{{dK^{\mu}_z}\over{dV}}\;</MATH>|JH1}} Przetransformuwujmy równanie {{LinkWzór|JH1}}, które jest dla układów lokalnie płaskich, zamieniając w nim przecinek na średnik, wiedząc, że macierz transformacji jest w postaci: {{CentrujWzór|<MATH>\Lambda=\begin{bmatrix}1&0\\0&\Lambda_p\end{bmatrix}\;</MATH>|JH2}} Wtedy na podstawie transformacji z macierzą transformacji {{LinkWzór|JH2}} w {{LinkWzór|JH1}} możemy dokonać tą wspomnianą operację przechodząc z układu lokalnie płaskiego do zakrzywionego: {{CentrujWzór|<MATH>\gamma\left(\rho v^{\mu}\right)_{;0}=-{{\gamma}\over{c}}{T^{\mu j}_k}_{;j}+{{dK^{\mu}_z}\over{dV}}\Rightarrow \gamma\sqrt{-g}\left(\rho v^{\mu}\right)_{;0}=-{{\gamma}\over{c}}\sqrt{-g}{T^{\mu j}_k}_{;j}+{{dK^{\mu}_z}\over{dV}}\;</MATH>|JH3}} Równość {{LinkWzór|JH3}} jest równaniem lokalnej zasady zachowania tensora gęstości pędu dla układów zakrzywionych. == Rozwiązywanie układu równań ogólnej teorii względności == Ogólna teoria względności przedstawia swój zestaw równań ze sobą sprzecznych: równanie Hilberta-Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}} (dla przyciągania grawitacyjnego) i {{LinkWzór|1.51a|Wprowadzenie do ogólnej teorii względności}} (dla odpychania grawitacyjnego) - należy tutaj tensor gęstości energii-pędu rozłożyć na ten podstawowy i inny zewnętrzny, lokalna zachowawczość tensora gęstości energii-pędu {{LinkWzór|ccv|Wprowadzenie do ogólnej teorii względności}}, równanie geodezyjne {{LinkWzór|1.70ab}} (układy rozciągłe), lokalna zasada zachowania energii-pędu {{LinkWzór|LKJ2}}, lokalna zasada zachowania tensora gęstości pędu {{LinkWzór|JH3}} i równanie wynikające z definicji jedynki z definicji różniczki interwału czasoprzestrzennego {{LinkWzór|KJH1|Wprowadzenie do ogólnej teorii względności}}, równania cechowania wynikłe z teorii lagrangianowych równania geodezyjnego dla układów rozciągłych i dalej należy uwzględnić w gęstościach sił (nawet w zewnętrznych) tensory sił od pola elektromagnetycznego i w dwóch prawach Hilberta-Einsteina grawitacji (równania opisujące odpychanie i przyciąganie grawitacyjne), dodatkowy człon, który jest tensorem gęstości energii-pędu od tego pola (gdy uwzględnimy pole elektromagnetyczne), oraz równania elektrodynamiki klasycznej dla układów zakrzywionych, te równania rozwiązuje się jak równania szczególnej teorii względności, tylko zamiast przestrzeni słabozakrzywionych, uważanych za ogólnie nieprostokątne ze współrzędnymi ogólnie nieprostokątnymi albo krzywoliniowymi lub uogólnionymi, mamy przestrzenie zakrzywione, zbudowane na przestrzeni słabozakrzywionej według szczególnej teorii względności, i zamiast szczególnej teorii względności jest ogólna teoria względności. Te równania możemy ogólnie zapisać tensorowo i rozwiązywać je, jak równania szczególnej teorii względności, według twierdzenia {{LinkTwierdzenie|GG1|Anormalne układy, tylko matematyczne, a nie fizyczne|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, tylko zamiast równań szczególnej teorii względności są równania ogólnej teorii względności. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> ezdvss74rmazcv7yav7xe51w9xbr82t Wikipedysta:Persino/brudnopis7 2 60248 548277 513682 2026-07-25T12:01:03Z Persino 2851 548277 wikitext text/x-wiki {{LinkWzór|1.1a|Podstawy teorii względności|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności}} {{LinkWzór|||}} {{LinkWzór}} {{LinkWzór||tytan{a}} {{Softredirect|w:Wikiprojekt:Sprzątanie kodu|Wikiprojekt:Sprzątanie kodu}} {{s|#iferror:{{s|Błąd|Foo}} | {{s|tak}} | {{s|nie}} }} ---- {{#invoke:Linki|UzyskajKodWikiLinku|strona={{#tag:nowiki|wiki/Pomoc:Spis_tre%C5%9Bci/Szablony_-_cz%C4%99%C5%9B%C4%87_trzecia#Zwroty_wskazujące_na_rodzaj_zagrożenia_w_Globalnie_Zharmonizowanym_Systemie_Klasyfikacji_i_Oznakowania_Chemikaliów}}|wyspecjalizowana=tak}} ----- {{Nowiki|{{#invoke:Brudnopis/Persino/Dymki|UzyskajOpisOdParametrówLinku|inw|/wiki/Wikibooks:Szablony/Ogólne#Inne_pudełka_komórkowe_(tabelki)_i_ramkowe_({{Mniejszy}}div{{Większy}}...{{Mniejszy}}/div{{Większy}})_-_niesystemowe}}}} {{OpakujKategorieZeSortowaniem|{{status|-00%|Chemia|poziom=Studia|nazwa przestrzeni nazw=(main)|nazwa jednostki=Magnetyczny_rezonans_jądrowy_w_chemii_organicznej}}}} ---- {{Nowiki|{{#invoke:Techniczne|EncodeParametr|<sup>tytan</sup>}}}} ---- {{OpakujKategorieZeSortowaniem|{{StronaWolumin|Zbiór zadań maturalnych/tytan|podstawa programowa 2017|Biologia/Zakres rozszerzony/Cele kształcenia/I/2|nazwa przestrzeni nazw=(main)|nazwa jednostki=Zbiór zadań maturalnych/Biologia/Zadania/13}}|kategorie istnieją=tak}} {{Nowiki|{{s|Navbox}}}} {{OpakujKategorieZeSortowaniem|{{Aktualne|link=Portal:Katastrofa polskiego samolotu prezydenckiego pod Smoleńskiem|typ jednostki=strona użytkownika}}}} ----- {{PobierzNumerArtykułu|Internet - ćwiczenia|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=Wikijunior|nazwa jednostki=Informatyka/Internet - ćwiczenia}} ----- {{PobierzNumerArtykułu|Lekcja_1-02|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pisownia_Wschodniej_Azji/Lekcja_1-02}} ----- {{PobierzNumerArtykułu|Lekcja_1-02|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=MediaWiki w obrazkach}} ------ {{#invoke:StronicowyParser|TekstRozdziałuStrony|Borland C++ Compiler/MAKE|Zasady ogólne i szczegółowe|Zasady ogólne (implicit rules)}} ---- {{N|Zbiór zadań maturalnych/opis|p=2}} {{PobierzNumerArtykułu|O_języku_chińskim|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Chiński/O_języku_chińskim}} 2w52jolcmcryl83ngoyigusibeq0q1u Moduł:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron 828 62247 548316 547995 2026-07-26T07:01:15Z Persino 2851 548316 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",}; 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,}; 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 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,}; 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_tak_naglowki=((czy_naglowek)and(mw.ustring.match(nazwa_szablonu,"^Link")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; if(not czy_artykul_korzystany)then 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)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; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); 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) return szablonowe_modul.NormaKoduZakodowanegoHtmlTekstu("postMath",(mw.ustring.rep("0",math.max(8-#kod,0)))..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; 4xiws2cxya9nfhchb32szx3ifop7tt8 Wikibooks:Moduły/Parametry 4 63291 548307 546802 2026-07-25T20:54:31Z Persino 2851 /* {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} */ 548307 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}} Moduł wywołuje się za pomocą polecenia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu. Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}. == Funkcje liczb elementów w tabeli == === {{Code|p["LiczbaElementówNumerowanychTablicy"]}} === Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela}} - tabela, na którym operujemy, * {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}}, * {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}. Przykłady użycia: <syntaxhighlight lang="lua"> local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",}; local parametry_modul=require("Module:Parametry"); local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false); </syntaxhighlight> Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby. Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych. === {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} === Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. <syntaxhighlight lang="lua"> p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end; </syntaxhighlight> Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno: * {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta, * {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta. Odpowiednikiem zmiennej {{Code|tabela}}: * {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu. Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}} </syntaxhighlight> Szablon, w którym jest wywołane to przedstawienie, można napisać: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}} </syntaxhighlight> Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów. Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją. === {{Code|p["LiczbaElementówNienazwanychTablicy"]}} === Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela}} - tabela, na którym operujemy, * {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}}, * {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej. Przykłady użycia: <syntaxhighlight lang="lua"> local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",}; local parametry_modul=require("Module:Parametry"); local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false); </syntaxhighlight> Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych. Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych. === {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} === Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end; </syntaxhighlight> Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno: * {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty, * {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty. Odpowiednikiem parametru {{Code|tabela}} jest: * {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu. Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}} </syntaxhighlight> Szablon, w którym jest wywołane to przedstawienie, można napisać: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}} </syntaxhighlight> Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}. === {{Code|p["LiczbaElementówTablicy"]}} === Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela}} - tabela do rozważań na problemy tej funkcji, * {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}. Przykłady użycia: <syntaxhighlight lang="lua"> local tabela={ 10, nazwa = 5, parametr = "tak", }; local parametry_modul=require("Module:Parametry"); local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true); </syntaxhighlight> Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}. Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy. === {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} === Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela}} - tabela, na którym operujemy, * {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą, * {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, * {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych. Przykłady użycia: <syntaxhighlight lang="lua"> local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", }; local parametry_modul=require("Module:Parametry"); local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false); </syntaxhighlight> Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}. Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi). == Funkcje minimalnej i maksymalnej wartości w tabeli == === {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} === Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end; </syntaxhighlight> Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica: * {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań, * {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany. Przykład wywołania ramki dziecka w szablonie rodzica jest: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}} </syntaxhighlight> Szablon, w którym jest wywołane to przedstawienie, można napisać: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}} </syntaxhighlight> Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa. Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych. === {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} === Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki. Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end; </syntaxhighlight> Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym: * {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji, * {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste. Przykładem wywołania jest dla parametrów niepustych tablicy: <syntaxhighlight lang="lua"> local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",}; local parametry_modul=require("Module:Parametry"); local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true); </syntaxhighlight> Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}. === {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} === Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end; </syntaxhighlight> Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica: * {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań, * {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany. Przykład wywołania ramki dziecka w szablonie rodzica jest: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}} </syntaxhighlight> Szablon, w którym jest wywołane to przedstawienie, można napisać: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}} </syntaxhighlight> Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza. Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych. === {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} === Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki. Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end; </syntaxhighlight> Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym: * {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji, * {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste. Przykładem wywołania jest dla parametrów niepustych tablicy: <syntaxhighlight lang="lua"> local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",}; local parametry_modul=require("Module:Parametry"); local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true); </syntaxhighlight> Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}. === {{Code|p.MinimalnyIMaksymalnyNumerParametru}} === Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu. Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end; </syntaxhighlight> Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym: * {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji, * {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}}, * {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypadku jest liczony on jako {{Code|1}}. Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy: <syntaxhighlight lang="lua"> local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",}; local parametry_modul=require("Module:Parametry"); local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false); </syntaxhighlight> Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji. == Funkcje, czy są takie parametry == Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowo funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku. === {{Code|p["CzySąParametryNumerowaneSzablonu"]}} === Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end; </syntaxhighlight> Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste: * {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste, * {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną. Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}} </syntaxhighlight> Szablon, w którym jest wywołane to przedstawienie, można napisać: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa1|nazwa2|nazwa3}} </syntaxhighlight> Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie. === {{Code|p["CzySąElementyNumerowaneTablicy"]}} === Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end; </syntaxhighlight> Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste: * {{Code|tabela}} - tabela do rozważań, * {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}. Wywołanie przykładowej tej funkcji jest: <syntaxhighlight lang="lua"> local tabela={"nazwa1", "nazwa2", "nazwa3", }; local parametry_modul=require("Module:Parametry"); local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](tabela,true); </syntaxhighlight> Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}. === {{Code|p["CzySąParametryNienazwaneSzablonu"]}} === Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru. Definicja skrótowwa funkcji: <syntaxhighlight lang="lua"> p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end; </syntaxhighlight> Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste: * {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste, * {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną. Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}} </syntaxhighlight> Szablon, w którym jest wywołane to przedstawienie, można napisać: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}} </syntaxhighlight> Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}). Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie. === {{Code|p["CzySąElementyNienazwaneTablicy"]}} === Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end; </syntaxhighlight> Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste: * {{Code|tabela}} - tabela do rozważań, * {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}. Wywołanie przykładowej tej funkcji jest: <syntaxhighlight lang="lua"> local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", }; local parametry_modul=require("Module:Parametry"); local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true); </syntaxhighlight> Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}). === {{Code|p["CzySąParametryNazwaneSzablonu"]}} === Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzySąParametryNazwaneSzablonu"] = function(frame)...end; </syntaxhighlight> Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste: * {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste, * {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną. Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}} </syntaxhighlight> Szablon, w którym jest wywołane to przedstawienie, można napisać: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}} </syntaxhighlight> Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie. === {{Code|p["CzySąElementyNazwaneTablicy"]}} === Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end; </syntaxhighlight> Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste: * {{Code|tabela}} - tabela do rozważań, * {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}. Wywołanie przykładowej tej funkcji jest: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", }; local parametry_modul=require("Module:Parametry"); local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true); </syntaxhighlight> Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}. === {{Code|p["CzySąParametrySzablonu"]}} === Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzySąParametrySzablonu"] = function(frame)...end; </syntaxhighlight> Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste: * {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste, * {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną. Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}} </syntaxhighlight> Szablon, w którym jest wywołane to przedstawienie, można napisać: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}} </syntaxhighlight> Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie. === {{Code|p["CzySąElementyTablicy"]}} === Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzySąElementyTablicy"]=function(tabela,wliczac)...end; </syntaxhighlight> Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste: * {{Code|tabela}} - tabela do rozważań, * {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}. Wywołanie przykładowej tej funkcji jest: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", }; local parametry_modul=require("Module:Parametry"); local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true); </syntaxhighlight> Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy. === {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} === Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end; </syntaxhighlight> Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji: * {{Code|niepuste}} - taki element nie może być pusty, * {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie. Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}} </syntaxhighlight> Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej. Przykład pierwszy: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}} </syntaxhighlight> Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych. Przykład drugi: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}} </syntaxhighlight> Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane. Przykład trzeci: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}} </syntaxhighlight> Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki. Przykład czwarty: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}} </syntaxhighlight> Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie. === {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} === Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end; </syntaxhighlight> Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji: * {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie, * {{Code|wliczac}} - taki element nie może być pusty. Wywołanie przykładowej tej funkcji, pierwsze, jest: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,}; local parametry_modul=require("Module:Parametry"); local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true); </syntaxhighlight> Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych. Wywołanie przykładowej tej funkcji, drugie, jest: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",}; local parametry_modul=require("Module:Parametry"); local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true); </syntaxhighlight> Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane. Wywołanie przykładowej tej funkcji, trzecie, jest: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",}; local parametry_modul=require("Module:Parametry"); local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true); </syntaxhighlight> Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane. Wywołanie przykładowej tej funkcji, czwarte, jest: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, }; local parametry_modul=require("Module:Parametry"); local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true); </syntaxhighlight> Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany. == Funkcje kopiowania tabel == === {{Code|p["KopiujTabelęŁańcuchów"]}} === Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujTabelęŁańcuchów"]=function(args)...end; </syntaxhighlight> Parametry funkcji: * {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki. Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc: * {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}}, * {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to, * {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie, * {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}}, * {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem, * {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie. Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul = require("Module:Parametry"); local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", }; local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", }; local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args); mw.logObject(args2, "Uzyskana tabela:" ); </syntaxhighlight> Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest: <syntaxhighlight lang="lua"> local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", }; </syntaxhighlight> === {{Code|p["KopiujTabelęElementów"]}} === To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end; </syntaxhighlight> Parametrami funkcji: * {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji, * {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy, * {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul = require("Module:Parametry"); local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""}; local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true); </syntaxhighlight> Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}: <syntaxhighlight lang="lua"> local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", }; </syntaxhighlight> === {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} === Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji, * {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}}, * {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy, * {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach. Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}): <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = ""}; local tabelka2={[2]=true,["nazwa2"]=false,}; local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true); </syntaxhighlight> Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}: <syntaxhighlight lang="lua"> local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", }; </syntaxhighlight> === {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} === Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji. Funkcja też kopiuje dokładnie tabele również z przyłączonymi metafunkcjami, ale ona musi mięc wtedy metodę: {{Code|__metatabelka.KopiujMetaTabela}}, bo w przeciwnym razie żadna metabela nie zostanie przekopiowana, wtedy kopiowanie będzie niedokładne. Dla tabel bez metatabel kopiowanie jest rekurencyjne i dokładne. Przykładami metatabel z tą funkcją do kopiowania metatabel są: {{Code|{{sr|#p.MetaTabelkaParsowanieSzablonu|p=Szablonowe}}}} i {{Code|{{sr|#p.MetaTabelkaSzablonowe|p=Szablonowe/Potrzebne}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. Parametry funkcji: * {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji, * {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy, * {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach. Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, }; local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true); </syntaxhighlight> Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów: <syntaxhighlight lang="lua"> local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, }; </syntaxhighlight> Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}. == Funkcje istnienia parametrów == === {{Code|p["NazwanyLiczbą"]}} === Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NazwanyLiczbą"] = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. Wywołanie ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|NazwanyLiczbą|2}} </syntaxhighlight> Wywołanie szablonu z tą ramką jako dziecko: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|2=wartość|3=wartość}} </syntaxhighlight> Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany. Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami. === {{Code|p["NazwanyCiągiem"]}} === Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NazwanyCiągiem"] = function (frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. Wywołanie ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|NazwanyCiągiem|nazwa1}} </syntaxhighlight> Wywołanie szablonu z tą ramką jako dziecko: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}} </syntaxhighlight> Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}. Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami. === {{Code|p.Nazwane}} === Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Nazwane(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. Wywołanie ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}} </syntaxhighlight> Wywołanie szablonu z tą ramką jako dziecko: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}} </syntaxhighlight> Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}. Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami. === {{Code|p.Nienazwane}} === Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Nienazwane(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. Wywołanie ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}} </syntaxhighlight> Wywołanie szablonu z tą ramką jako dziecko: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|3=wartość1|6=wartość2}} </syntaxhighlight> Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}. Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami. === {{Code|p.Numerowane}} === Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Numerowane(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. Wywołanie ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}} </syntaxhighlight> Wywołanie szablonu z tą ramką jako dziecko: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|wartość2|wartość3}} </syntaxhighlight> Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}. Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami. == Funkcje manipulowania formatów łańcuchów znakowych == === {{Code|p["Odstępy"]}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}. Przykładami wywołania funkcji: Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}. ; Przykład pierwszy {{Pre|{{s|Odstępy| Oto jest łańcuch. }}}} ; Wynik {{Pre|{{Odstępy| Oto jest łańcuch. }}}} Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie. ---- ; Przykład drugi {{Pre|{{s|Odstępy|wewnątrz{{=}}tak| Oto jest łańcuch. }}}} ; Wynik {{Pre|{{Odstępy|wewnątrz=tak| Oto jest łańcuch. }}}} Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją. ---- ; Przykład trzeci {{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak| Oto jest łańcuch. }}}} ; Wynik {{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak| Oto jest łańcuch. }}}} Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik. ==== Funkcja biblioteczna ==== Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Odstępy"] = function(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha, * {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu, * {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki, * {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki. Funkcja zwraca przekształcony ciąg powyższymi metodami. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local nazwa2=parametry_modul["Odstępy"]{nazwa=" Oto jest łańcuch. ",}; local nazwa3=parametry_modul["Odstępy"]{nazwa=" Oto jest łańcuch. ", ["wewnątrz"]="tak",}; local nazwa4=parametry_modul["Odstępy"]{nazwa=" Oto jest łańcuch. ", ["wewnątrz"]="tak",["dolny-myślnik"]="tak",}; </syntaxhighlight> Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości: <syntaxhighlight lang="lua"> local nazwa2="Oto jest łańcuch."; local nazwa3="Oto jest łańcuch."; local nazwa4="Oto_jest_łańcuch."; </syntaxhighlight> == Funkcje dodawania lub usuwania elementu do tabeli zbioru == === {{Code|p.DodajElementDoZbioru}} === Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodajElementDoZbioru(tabela,wartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela}} - tabela elementów numerowanych, * {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={}; --- Tutaj zwraca true; local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1"); --- Tutaj zwraca true; local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2"); --- Tutaj zwraca false; local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2"); </syntaxhighlight> Elementami tej tabeli są: <syntaxhighlight lang="lua"> local tabela={"wartość1","wartość2",}; </syntaxhighlight> Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}. == Funkcje istnienia elementów tabeli == === {{Code|p.CzyJestTakiElementNumerowanyTabeli}} === Funkcja sprawdza, czy jest taki element numerowany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela}} - tabela elementów, nie tylko numerowanych, * {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego. Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}. Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu. Przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",}; local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3"); </syntaxhighlight> Funkcja w przykładzie zwraca wartość {{Code|true}}. === {{Code|p.CzyJestTakiElementNienazwanyTabeli}} === Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych, * {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego. Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}. Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu. <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",}; local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3"); </syntaxhighlight> Funkcja w przykładzie zwraca wartość {{Code|true}}. === {{Code|p.CzyJestTakiKluczTabeli}} === Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestTakiKluczTabeli(tabela,klucz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela}} - tabela elementów z kluczami i ich wartościami, * {{Code|klucz}} - klucz, jaką ta tabela musi posiadać. Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości. Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom. <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",}; local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5"); </syntaxhighlight> Funkcja w przykładzie zwraca wartość {{Code|true}}. === {{Code|p.CzyJestTakiElementTabeli}} === Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela}} - tabela elementów z kluczami i ich wartościami, * {{Code|klucz}} - klucz, jaką ta tabela musi posiadać, * {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać. Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",}; local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8); </syntaxhighlight> Funkcja tutaj zwraca wartość {{Code|true}}. == Łączenie wielu tabel == === {{Code|p["ŁączDwieTabele"]}} === Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączDwieTabele"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę. Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; </syntaxhighlight> === {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} === Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę. Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",}; </syntaxhighlight> === {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} === Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę. Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",}; </syntaxhighlight> === {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} === Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|args}} - tablica elementów będących elementami. Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; </syntaxhighlight> === {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} === Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: * {{Code|args}} - tablica elementów będących elementami. Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local tabela3={"wartość10","wartość11","wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",}; </syntaxhighlight> === {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} === Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: * {{Code|args}} - tablica elementów będących elementami. Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",}; </syntaxhighlight> === {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} === Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: * {{Code|args}} - tablica elementów będących elementami. Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; </syntaxhighlight> === {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} === Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: * {{Code|args}} - tablica elementów będących elementami. Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local tabela3={"wartość10","wartość11","wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",}; </syntaxhighlight> === {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} === Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: * {{Code|args}} - tablica elementów będących elementami. Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",}; </syntaxhighlight> === {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} === Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: * {{Code|args}} - tablica elementów będących elementami. Przykładem działania funkcji: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; </syntaxhighlight> === {{Code|p["ŁączNumerowaneTabele"]}} === Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączNumerowaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: * {{Code|args}} - tablica elementów będących elementami. Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; </syntaxhighlight> === {{Code|p["ŁączNienazwaneTabele"]}} === Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa fukcji: <syntaxhighlight lang="lua"> p["ŁączNienazwaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: * {{Code|args}} - tablica elementów będących elementami. Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",}; </syntaxhighlight> === {{Code|p["ŁączTabele"]}} === Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączTabele"] = function(args,args2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|args}} - tabela elementów będących tabelami, * {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone. Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy. Parametry (elementy) tabeli {{Code|args2}} są: * {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane, * {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane, * {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę, * {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel, * {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic. Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w: * {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, * {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi, * {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, * {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, * {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, * {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych. Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane. {{Hr}} * {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane, * {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi. Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami. {{Hr}} Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach. == Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach == === {{Code|p["UsuńElementyTabeli"]}} === Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_1}} - tabela elementów, * {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,}; local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2); </syntaxhighlight> Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako: <syntaxhighlight lang="lua"> local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",}; </syntaxhighlight> Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu. == Tworzenie tabeli == === {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} === Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu. Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end; </syntaxhighlight> Parametry funkcji: * {{Code|args[1]}} - tabela elementów, * {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,}; local tabela_args={tabelka_1,tabelka_2,}; local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args); </syntaxhighlight> Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy: <syntaxhighlight lang="lua"> local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",}; </syntaxhighlight> == Funkcje typu == === {{Code|p.TypeTable}} === Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrotowa funkcji: <syntaxhighlight lang="lua"> function p.TypeTable(zmienna) return (type(zmienna)=="table"); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",} local czy_tak=parametry_modul.TypeTable(tabelka); -- Wartością zmiennej: czy_tak, jest: true; </syntaxhighlight> === {{Code|p.TypeFunction}} === Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TypeFunction(zmienna) return (type(zmienna)=="function"); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local funkcja=function(frame)return true;end; local czy_tak=parametry_modul.TypeFunction(funkcja); -- Wartością zmiennej: czy_tak, jest: true; </syntaxhighlight> === {{Code|p.TypeString}} === Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TypeString(zmienna) return (type(zmienna)=="string"); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local str="wartość"; local czy_tak=parametry_modul.TypeString(tabelka); -- Wartością zmiennej: czy_tak, jest: true; </syntaxhighlight> === {{Code|p.TypeBoolean}} === Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TypeBoolean(zmienna) return (type(zmienna)=="boolean"); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_jest_tam=false; local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam); -- Wartością zmiennej: czy_tak, jest: true; </syntaxhighlight> === {{Code|p.TypeNumber}} === Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TypeNumber(zmienna) return (type(zmienna)=="number"); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local liczba=2; local czy_tak=parametry_modul.TypeNumber(liczba); -- Wartością zmiennej: czy_tak, jest: true; </syntaxhighlight> === {{Code|p.TypeNil}} === Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TypeNil(zmienna) return (type(zmienna)=="nil"); end; </syntaxhighlight> Parametry funkcji: * {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_nil=nil; local czy_tak=parametry_modul.TypeNil(czy_nil); -- Wartością zmiennej: czy_tak, jest: true; </syntaxhighlight> == Funkcje prawdy i fałszu == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, 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. W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}. === {{Code|CzyTakSilnik}} === Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|args}} - 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, * {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). 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}}, ma 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 nazwane, 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}}. 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, a 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ą: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, 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ć. Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji 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}}. 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ą {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. 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. === {{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 {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. 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> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. === {{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 {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: * {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją, * {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. 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> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. == Funkcje parametrów == === {{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 niepusty element {{Code|getParent}}. 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: * {{Code|frame}} - tablica ramki tablicy transportu. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. 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. 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> 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> Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. === {{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: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, 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: * {{Code|frame}} - tablica transportu ramki, * {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. 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. 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.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. 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> 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> Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. 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> 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> Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, 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> Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, 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> === {{Code|p.PobierzParametryRamki}} === 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 funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która 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: * {{Code|frame}} - 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> 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> 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. 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> 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> 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ść. 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> 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> 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: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, 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. 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"]}}. 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}}, jest tą wartością, 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}}. === {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} === Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko 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: * {{Code|frame}} - 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. 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> 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> 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> Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> 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> 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 przyjmmuje 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}}. W pierwszym i drugim sposobem zmienna ta 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. 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> 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. 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ć: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. === {{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: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji. 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}}. Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i 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. pod 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 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}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). 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}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. 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. 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. Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. 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> Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie 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 raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}. 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}}. 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: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}. 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, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu. 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. == Funkcje wartości logicznej == Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}. === {{Code|p.And}} === Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}. Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu. Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.And(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest: <syntaxhighlight lang="mediawiki"> {{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}} </syntaxhighlight> W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}. A w przykładzie z przeciwną zwracaną wartością: <syntaxhighlight lang="mediawiki"> {{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}} </syntaxhighlight> natomiast zostanie zwrócona wartość {{Code|nie}}. === {{Code|p.Or}} === Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}. Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu. Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Or(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest: <syntaxhighlight lang="mediawiki"> {{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}} </syntaxhighlight> W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}. A w przykładzie z przeciwną zwracaną wartością: <syntaxhighlight lang="mediawiki"> {{#if:{{#invoke:Parametry|Or|||}}|tak|nie}} </syntaxhighlight> natomiast zostanie zwrócona wartość {{Code|nie}}. === {{Code|p.Not}} === Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}. Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu. Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Not(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest: <syntaxhighlight lang="mediawiki"> {{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}} </syntaxhighlight> W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}. A w przykładzie z przeciwną zwracaną wartością: <syntaxhighlight lang="mediawiki"> {{#if:{{#invoke:Parametry|Not|}}|tak|nie}} </syntaxhighlight> natomiast zostanie zwrócona wartość {{Code|tak}}. == Funkcje porównań == === {{Code|p.Mniejszy}} === Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Mniejszy(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego: <syntaxhighlight lang="mediawiki"> {{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}} </syntaxhighlight> Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}. Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania: <syntaxhighlight lang="mediawiki"> {{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}} </syntaxhighlight> Funkcja zrzuci wartość {{Code|tak}}. Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania: <syntaxhighlight lang="mediawiki"> {{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}} </syntaxhighlight> Funkcja zrzuci wartość {{Code|nie}}. == Ile jest podanych elementów w szablonie według parametrów ramki == === {{Code|p.IlePodano}} === Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IlePodano(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}} </syntaxhighlight> To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}} </syntaxhighlight> Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują. == Metafunkcje i metatabele == Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje. === {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} === Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter; local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",}; setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); </syntaxhighlight> === {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} === Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie: <syntaxhighlight lang="lua"> local wartosc1=tablica_normalna["NAZWA1"]; </syntaxhighlight> Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik. == Iteratory == Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej. === {{Code|p.IteratorPoNumerowanychElementachTablicy}} === Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorPoNumerowanychElementachTablicy(t) ... return function() ... end; end; </syntaxhighlight> Parametry funkcji: * {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych. Przykład działania iteratora jest: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={1,2,3,4,5,6,7,8,9,10,}; local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica); for name, value in iter do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> === {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} === Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja) ... return function(tablica,klucz) ... end; end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela}} - tabela, po której iterujemy, * {{Code|funkcja}} - funkcja sortująca. Parametry funkcji zwracanej: * {{Code|tablica}} - tabela operowana, * {{Code|klucz}} - klucz, dzięki któremu szukamy następny element. Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",}; local __metatabelka={}; __metatabelka.__pairs=function(t) local funkcja_sortujaca=nil; local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca); return __next,t,nil; end; setmetatable(tabela,__metatabelka); for name,value in pairs(tabela) do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> == Funkcje wartości minimalnej i maksymalnej == === {{Code|p.Max}} === Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych. ==== Odpowiednik szablonowy ==== Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu: * {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}} Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}. * {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}} Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo. Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio. ==== Funkcja biblioteczna ==== Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Max(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste: <syntaxhighlight lang="lua"> {{#invoke:Parametry|Max|5|3}} </syntaxhighlight> Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}. Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local maksimum=parametry_modul.Max(5,3); </syntaxhighlight> Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}. Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji. === {{Code|p.Min}} === Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych. ==== Odpowiednik szablonowy ==== Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu: * {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}} Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}. * {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}} Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo. Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio. ==== Funkcja biblioteczna ==== Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Min(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu. W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste: <syntaxhighlight lang="lua"> {{#invoke:Parametry|Min|5|3}} </syntaxhighlight> Wynikiem tego jest minimum równą: {{Code|3}}. Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb. Ten kod piszemy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local minimum=parametry_modul.Min(5,3); </syntaxhighlight> Wartością minimalną z dwóch liczb jest: {{Code|3}}. Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> oar7z23showxger52b7h8zie9prc2i7 Wikibooks:Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron 4 63513 548308 548036 2026-07-26T06:13:36Z Persino 2851 /* {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} */ 548308 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. Jest liczony adres strony bieżącej wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli ta strona istnieje, a wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy: {{LinkPatrz|strona}} - to w takim razie jest bezwzględny adres. Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}} i {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}. A póżniej z adresów pliczonych z ostatniego wywołania liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}. Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fd31trspmpzhbv9bnomino4qwfv86u2 548309 548308 2026-07-26T06:19:57Z Persino 2851 /* {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} */ 548309 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. Jest liczony adres strony bieżącej wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli ta strona istnieje, a wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy: {{LinkPatrz|strona}} - to w takim razie jest bezwzględny adres. Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}} i {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}. A póżniej z adresów pliczonych z ostatniego wywołania liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}. Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest numerek. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pnmv6natqew9v52eblkovwiz43otl8z 548310 548309 2026-07-26T06:41:40Z Persino 2851 /* {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} */ 548310 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. Jest liczony adres strony bieżącej wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli ta strona istnieje, a wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy: {{LinkPatrz|strona}} - to w takim razie jest bezwzględny adres. Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}} i {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}. A póżniej z adresów pliczonych z ostatniego wywołania liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}. Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest numerek {{LinkPatrz|kod-ref}}. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rqqpo1xm5ku7xtk40qkhmi4oi3utvop 548311 548310 2026-07-26T06:42:19Z Persino 2851 /* {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} */ 548311 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. Jest liczony adres strony bieżącej wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli ta strona istnieje, a wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy: {{LinkPatrz|strona}} - to w takim razie jest bezwzględny adres. Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}} i {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}. A póżniej z adresów pliczonych z ostatniego wywołania liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}. Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1xkuoh0bsaryzc9c6qnsqzrhfct1033 548312 548311 2026-07-26T06:53:16Z Persino 2851 /* Dalsza część funkcji - Tom I */ 548312 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw ==== Jest liczony adres strony bieżącej wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy: {{LinkPatrz|strona}} - to w takim razie jest bezwzględny adres. ===== Liczenie nazw z parametru pełnej nazwy strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}} i {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}. A póżniej z adresów pliczonych z ostatniego wywołania liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> omw7msei8psh6q8p33v3ej9am4pu4co 548313 548312 2026-07-26T06:55:02Z Persino 2851 /* Liczenie nazw z parametru pełnej nazwy strony wynikłe z obliczeń z ustawień */ 548313 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw ==== Jest liczony adres strony bieżącej wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy: {{LinkPatrz|strona}} - to w takim razie jest bezwzględny adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}} i {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}. A póżniej z adresów pliczonych z ostatniego wywołania liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> et7syqpuhe9727o5wg83ytm4gsnwbfk 548314 548313 2026-07-26T06:57:50Z Persino 2851 548314 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony bieżącej wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy: {{LinkPatrz|strona}} - to w takim razie jest bezwzględny adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}} i {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}. A póżniej z adresów pliczonych z ostatniego wywołania liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5ra9f4zgtz4li4njmey81e5436xeg65 548315 548314 2026-07-26T06:58:47Z Persino 2851 /* Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia */ 548315 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy: {{LinkPatrz|strona}} - to w takim razie jest bezwzględny adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}} i {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}. A póżniej z adresów pliczonych z ostatniego wywołania liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1ctngcnfarpsnlffc1cmec3h0v8vltu 548317 548315 2026-07-26T07:05:00Z Persino 2851 /* Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień */ 548317 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy: {{LinkPatrz|strona}} - to w takim razie jest bezwzględny adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}, czy nazwy strony, bez {{Code|aktualna_}}, przyrównujemy z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}. A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4khwqot1c0bnzfjhg2gd7qjzjujf5ms 548318 548317 2026-07-26T07:10:03Z Persino 2851 /* Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień */ 548318 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy: {{LinkPatrz|strona}} - to w takim razie jest bezwzględny adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ehwi7wwdqabg68sexmwv5ndapjfipnk 548319 548318 2026-07-26T07:14:00Z Persino 2851 /* Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień */ 548319 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy: {{LinkPatrz|strona}} - to w takim razie jest bezwzględny adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4eu51bzdykqwhiwk3vb1m5omhxmr7m5 548320 548319 2026-07-26T07:15:25Z Persino 2851 /* Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień */ 548320 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy: {{LinkPatrz|strona}} - to w takim razie jest bezwzględny adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> d42cykkqsk6kwxuejl0grx3x05ppm65 548321 548320 2026-07-26T07:18:16Z Persino 2851 /* Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją */ 548321 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 23q0ozgn35scyi75krihvi6xypzrlrf 548322 548321 2026-07-26T07:41:47Z Persino 2851 /* {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} */ 548322 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji === Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0mshdxx605ofwsodb1otkobh3opctua 548324 548322 2026-07-26T07:57:04Z Persino 2851 /* Dalsza część funkcji */ 548324 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom I === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Działająca pętla zbierania informacji o rozdziałach i ich możliwych uchwytach ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5zz38z44j82mwn7mspr0zvvtpgk318z 548325 548324 2026-07-26T08:00:12Z Persino 2851 /* Dalsza część funkcji - Tom I */ 548325 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom I === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4ncshkzibq5fi224tp1w23kxlnn43wq 548326 548325 2026-07-26T08:07:24Z Persino 2851 /* Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje */ 548326 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom I === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dzvkxffr58ur9knjypqf5wzpng3x38i 548327 548326 2026-07-26T08:12:43Z Persino 2851 /* Definicja iteratora zbierania informacji o stronie */ 548327 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom I === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba uruchmić iterator, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 44103usmcoovuo8ojt6bbifu03v3exl 548331 548327 2026-07-26T09:41:00Z Persino 2851 /* Dalsza część funkcji - Tom I */ 548331 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba uruchmić iterator, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ng0u0bazrfdllbuar7gyrhbfnn0c4ac 548332 548331 2026-07-26T10:24:01Z Persino 2851 /* Definicja iteratora zbierania informacji o stronie */ 548332 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fl2roe5b2a7ntoki4hq7iw21nd3sz44 548333 548332 2026-07-26T10:28:09Z Persino 2851 /* Zbieranie informacji o stronie w pętli generowanej przez iterator */ 548333 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{Patrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zmierania numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z nagłówka, i jego możliwych uchwytach, w pojedynczym okrążeniu pętli ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{Patrz|szablon}}, {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w teście. A jeżeli takiego szablonu tam nie ma, to układ iterator iteruje aż do zakończzenia danych. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> c4yrv1rm633yy32m0isaeobxxlwfs5k 548334 548333 2026-07-26T10:28:38Z Persino 2851 /* Uzyskiwanie informacji z nagłówka, i jego możliwych uchwytach, w pojedynczym okrążeniu pętli */ 548334 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{Patrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zmierania numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z nagłówka, i jego możliwych uchwytach, w pojedynczym okrążeniu pętli ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w teście. A jeżeli takiego szablonu tam nie ma, to układ iterator iteruje aż do zakończzenia danych. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dxc4nix5ock9u28lk9slflu69remo71 548335 548334 2026-07-26T10:30:23Z Persino 2851 /* Uzyskiwanie informacji z nagłówka, i jego możliwych uchwytach, w pojedynczym okrążeniu pętli */ 548335 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{Patrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zmierania numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w teście. A jeżeli takiego szablonu tam nie ma, to układ iterator iteruje aż do zakończzenia danych. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rdlwdirfur6t4bvs8upnsuew1tmynsw 548336 548335 2026-07-26T10:31:44Z Persino 2851 /* Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu */ 548336 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{Patrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zmierania numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w teście. A jeżeli takiego szablonu tam nie ma, to układ iterator iteruje aż do zakończzenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q0baitl7605ywj80y6nkufmtng63hy4 548337 548336 2026-07-26T10:32:13Z Persino 2851 /* Zbieranie informacji o stronie w pętli generowanej przez iterator */ 548337 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zmierania numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w teście. A jeżeli takiego szablonu tam nie ma, to układ iterator iteruje aż do zakończzenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> iu0n2jyjjultohv6j58mfrrm36q2sek 548338 548337 2026-07-26T10:32:44Z Persino 2851 /* Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu */ 548338 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zmierania numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w teście. A jeżeli takiego szablonu tam nie ma, to układ iterator iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bq3lsvw9pqoosd1fnvli6t2fbell622 548339 548338 2026-07-26T10:33:48Z Persino 2851 /* Definicja nowe wartości zmierania numeracji */ 548339 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w teście. A jeżeli takiego szablonu tam nie ma, to układ iterator iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> edu235xxdks4prr5af9h6t1u1yl7734 548340 548339 2026-07-26T10:34:34Z Persino 2851 /* Definicja nowe wartości zbierania uchwytów nagłówka */ 548340 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w teście. A jeżeli takiego szablonu tam nie ma, to układ iterator iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> td0if60kuofucn35ho5o2xxeyinms7h 548341 548340 2026-07-26T10:36:23Z Persino 2851 /* Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu */ 548341 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, którego opis raczej przedstawiają ich nazwy: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> r4qurfvbpkxrvstnr64y3zf6ppvwoz3 548342 548341 2026-07-26T11:02:12Z Persino 2851 /* {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} */ 548342 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fjp8r80qkjfugfnltk0rdvwbocjj71t 548343 548342 2026-07-26T11:23:16Z Persino 2851 /* Uzyskiwanie nagłówka i do niego identyfikatora id */ 548343 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> j4q2rdodqhu1szbmrvycw3zk9ay8xnm 548344 548343 2026-07-26T11:25:19Z Persino 2851 /* Gdy w kodzie identyfikatora nie ma symbolicznych szablonów */ 548344 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0st7ql8skq3676181wzm9plffija1lk 548345 548344 2026-07-26T11:45:12Z Persino 2851 /* Uzyskiwanie nagłówka i do niego identyfikatora id */ 548345 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7i5z1vy2elr542qqtff87p60yplioqr 548346 548345 2026-07-26T11:48:33Z Persino 2851 /* Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku */ 548346 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cw2axbs7mep9xte2wjf5ccwx3vr86hv 548347 548346 2026-07-26T11:51:51Z Persino 2851 /* Tablica identyfikatora i nagłówka */ 548347 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę,którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 40obmxu4vq1kka329owzw4w4dxrn82x 548348 548347 2026-07-26T11:56:41Z Persino 2851 /* Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem */ 548348 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa ramki tablicy transportu. == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}. === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} - pełna nazwa strony. === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabele tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}}, co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest liczona pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony, jeżeli ona jest względna z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}}, i parametr drugi: {{LinkPatrz|strona_aktualna}}, co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszyskie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A póżniej z adresów pliczonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któraś z nich jest nierówna, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} - tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu, * {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} - nazwa strony, danego spisu, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy strona jest bieżąca, * {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} - pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron, * {{Code|obiekty}} {{Patrz|obiekty}} - elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa aktualna, czy bieżąca strony, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} - tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} - czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}, * {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} - rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} - to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{Patrz|szablon}} - zmienna (szablon), nie musi być to normalny szablon, * {{Code|obiekt}} {{Patrz|obiekt}} - zmienna, którego typu jest obiekt, * {{Code|kod}} {{Patrz|kod}} - numer obiektu typu {{LinkPatrz|obiekt}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy to jest szablon, * {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} - czy to jest znacznik, * {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} - czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} - funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, * {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer}} {{Patrz|numer}} - numer parametru. Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}. ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight> Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest ruchumianiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}, * {{Code|powtorka}} {{Patrz|powtorka}} - numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}, * {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} - parametry szablonu wraz z ich wartościami, * {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} - nazwa szablonu wywołania, * {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} - modyfikatory szablonu. Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warukowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: * {{Code|naglowek}} {{Patrz|naglowek}} - tekst nagłówka napisu wprowadzenia tekstu. Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na {{Strong|HTML}} nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|obiekt}} {{Patrz|obiekt-ref}} - nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga''', * {{Code|kod}} {{Patrz|kod-ref}} - numer danego typu przypisu. Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o częścci wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: * {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} - gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}, * {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} - tekst rozdziału, * {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} - poziom rozdziału. ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|b=tak}}}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę,którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0zzj9e9sdkto0z946j0n10n7054wgp3 Wikibooks:Moduły/StronicowyParser/Rozdziały 4 63521 548303 548171 2026-07-25T15:16:57Z Persino 2851 /* {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} */ 548303 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Wstęp == Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. === Rozdziały === * Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane: ** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}}, ** Inne (nierównaniowe): *** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}}, *** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}}, * Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}}, * Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}. === Zmienne spotykane w opisywanych tutaj funkcjach === ==== Zmienne bazy ==== W poniższych funkcjach często spotykamy parametry: * {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst przeważnie zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje, * {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony szablonowe jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych. Jest liczona bez nazwy przestrzeni {{Np|Template|link=tak}}, w tej przestrzeni, a w innych z przestrzeniami, a w {{Np|(main)|link=tak}} z dwukropkiem na początku. ==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ==== * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów. ==== Baza danych wikikodu ==== Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu. ===== Zmienne bazy danych i do nich parametrów ===== * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy. ===== Inne elementy bazy ===== * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku. ==== Funkcje bazy danych i do nich parametrów ==== * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Inne funkcje ==== ===== Funkcje bazy ===== * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych, * {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej). ===== Inne ===== * {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych. ==== Elementy bazy ==== * {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie, * {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. ==== Inne zmienne ==== * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów === Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji) local tab_obiekt=tab_analiza[obiekt]; if(not tab_obiekt)then return;end; for _,wartosc in pairs(tab_obiekt)do local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(element_wartosc)then element_wartosc[kod]=nil; end; end; end; </syntaxhighlight> Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy === A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne: <syntaxhighlight lang="lua"> local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji) tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; end; </syntaxhighlight> Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli. Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}. == {{Code|p.NapisWprowadzeniaTekstu}} == Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - tekst wnętrza rozdziału, * {{Code|poziom}} - numer całkowity dodatni poziomu. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial="Tekst rozdziału"; local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4); local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8); </syntaxhighlight> Wyniki użycia w zmiennych: <syntaxhighlight lang="lua"> local napis_rozdzialu1="\n====Tekst rozdziału====\n"; local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n"; </syntaxhighlight> == {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} == Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu. Defnicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu, * {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu, * {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}}, * {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu. Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę. Przykłady użycia, używając omawianego szablonu: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}} {{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}} </syntaxhighlight> Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki: <syntaxhighlight lang="lua"> local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ==="; local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>"; </syntaxhighlight> A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną): <syntaxhighlight lang="lua"> local zawartosc="Zawartość znacznika"; local zawartosc="Zawartość znacznika"; </syntaxhighlight> W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się: <syntaxhighlight lang="lua"> if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end; if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end; </syntaxhighlight> Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić). == {{Code|p.NapisWprowadzeniaTekstuHNumer}} == Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHNumer(parametr)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też. Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Nagłówek tekstu ===}} {{HNumer|1= ======= Nagłówek tekstu =======}} </syntaxhighlight> Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody: <syntaxhighlight lang="lua"> ---- Nagłówki typowo dodatnie local tekst1="=== Nagłówek tekstu ==="; local tekst2="======= Nagłówek tekstu ======="; ---- Wywołania tworzące nagłówki local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1); local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2); </syntaxhighlight> Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}: <syntaxhighlight lang="lua"> local naglowek1="<h3>Nagłówek tekstu</h3>"; local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>"; </syntaxhighlight> == {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} == Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana, Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="====== Tekst nagłówka ======"; local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst); </syntaxhighlight> Wynikiem działania tego przykładu: <syntaxhighlight lang="lua"> local naglowek="Tekst nagłówka"; local poziom=6; </syntaxhighlight> Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie. == {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} == Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local zawartosc="Tekst nagłówka"; local poziom=5; </syntaxhighlight> == {{Code|p.CzyJestNapisWprowadzeniaTekstu}} == Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n"; local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst); </syntaxhighlight> W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli: <syntaxhighlight lang="lua"> local napis_pierwszy_w_tekscie="== Tekst nagłówka == "; </syntaxhighlight> Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}. == {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w który ma znajdować napis wprowadzenia tekstu w postaci listy. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n"; local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}. == {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} == Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem. Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny). Przykłady funkcji: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst1="====== Tekst nagłówka ======"; local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1); local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local czy_jest_naglowek1,jaki_naglowek1=true,true; local czy_jest_naglowek2,jaki_naglowek2=true,false; </syntaxhighlight> == {{Code|p.WierszHNumer}} == Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WierszHNumer(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - parametr z tymi nagłówkami. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>"; local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n"; </syntaxhighlight> == {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{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> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{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> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja wykorzystuje: * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, * {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}. == {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} == Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez. Zwracane wartości: * {{Code|rozdzial}} - rozdzial bez numeracji, * {{Code|numetracja}} - numeracja. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja="5.1.2.3."; </syntaxhighlight> ; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja=""; </syntaxhighlight> == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}}, * {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}}, * {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} == Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametr funkcji: * {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}. Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa): <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="Spis treści"; local tablica_analizy_obiektow_strony_dany_modul={}; ---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); ---- Koniec tej części kodu; local tablica_danych_parametrow_szablonu_strony={}; local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Funckja w tym wypadku zwraca wynik: <syntaxhighlight lang="lua"> local rozdzial,czy_tak="Spis treści",true; </syntaxhighlight> Weźmy inny przykład: <syntaxhighlight lang="lua"> ---- Przykład pierwszy; local linia="'''Nagłówek'''"; local rozdzial,czy_tak="'''Nagłówek'''",true; ---- Przykład drugi; local linia="'''Nagłówek'''."; local rozdzial,czy_tak="'''Nagłówek'''.",false; </syntaxhighlight> == {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} == Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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: * {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}}, * {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka, * {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}. Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="''[[Książka/Artykuł|Artykuł]]''"; local tablica_analizy_obiektow_strony_dany_modul={}; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local przedrotek_listy=":"; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; ---- Tutaj funkcja zwróci wartość: true; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ---- Tutaj funkcja zwróci wartość: false; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); </syntaxhighlight> == {{Code|p.HnNumerWprowadzeniaTekstu}} == Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa}} - nazwa tagu, * {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''. Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w: <syntaxhighlight lang="lua"> p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; </syntaxhighlight> Funkcja posługuje się jedynie na tych typach znaczników, a nie innych. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h5"; local atrybuty={}; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja zwróci wynik: {{Code|5}}. ; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h6"; local atrybuty={};atrybuty["class"]="mw-hnumber-9"; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja daje wynik: {{Code|9}}. == {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} == Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="5.1.6. Rozdział"; local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local numeracja,rozdzial="5.1.6.","Rozdział"; </syntaxhighlight> == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach. ===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania napisu wprowadzenia tekstu, funkcja dopuszcza rozdziały typu: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem) i {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), wtedy zwraca {{Code|nil}}. Funkcja liczy rozdział i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}, a jeżeli tak z policzonego rozdziału udało się wykluczyć go przy pomocy funkcji: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, wtedy numeracja i rozdział są przyrównywane do wartości {{Code|nil}}, przeciwnie pozostawia je policzone przy pomocy {{LinkPatrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza, czy rozdział jest centrowany szablonami normalnymi, które są opisywane, czy to są szablony normalne centrowania, przy pomocy tabeli {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak to liczy jego zawartość, który jest wyświetlany w postaci centrowanej treści, co na podstawie tej wartości jest rewidowany rozdział funkcją: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}. ==== Zwracany iterator linii ==== Funkcja ma w sobie zwracany iterator, który można wykorzystać do iterowania linii {{LinkPatrz|linia}}, aby sprawdzić, czy to jest rozdział, czy zwykły tekst. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Sukces wyodrębnianiu rozdziału ====== Jeżeli to dało się wyodrębnić {{ZobaczTeż|rozdział}}, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z rozdziału numeracją usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany rozdział i numeracja z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== {{HNumer|1= ======= Wykryta linia cudzysłowu ======= }} W przeciwnym wypadku jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy rozdział jest równy linii, a poczatek i numeracja są równe ciągowi pustemu. {{HNumer|1= ======= Adresu URL linii ======= }} W innym wypadku, gdy poprzedni warunek nie jest spełniony, sprawdzamy, czy któreś z poszczególnych ciągów z czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) ===== Gdy nie jest spełniony warunek {{LinkZobaczTeż|rozdział}}, to wtedy to samo robimy, co tam, tylko bez znaków początku pozycji listy, który usunęliśmy z linii, rozdzielając na dwa łańcuchy znaków. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii podanemu do funkcji. {{Hr}} ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy funkcję iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza. ===== Obiekt szablon, czyli typu SZABLON ===== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, wtedy ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. A dla szablonów będących linkami sprawdzanymi tabelami: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}} i {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}}i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. A wiec wtedy na podstawie tych wartości prawwdziwej, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ===== Linki wewnętrzne i zewnętrzne ===== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak innicjowane jak tam, a tutaj funkcja zwraca wartość domyślną {{Code|nil}}. ===== Obiekty specjalne ===== Podobnie jest dla obiektów: {{Code|PRE}}, {{Code|MATH}}, {{Code|ŹRÓDŁO}} i {{Code|INNEPRE}}, jest jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, ze zwracaną wartością domyślną {{Code|nil}}. ===== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ===== Gdy obiekt jest równy: {{Code|ZNACZNIK}}, wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. W tym pierwwszym ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}, a w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ==== Iterator w linii ==== Uruchamiamy iterator w pętli do zakończenia danych lub przerwania pętli przez funkcję w iteratorze, przez zwracanie przez nią wartości {{Code|nil}}. Rozdział, początek pozycji listy i numeracja, jeżeli poszczególne istnieją, to wtedy działane jest na nich funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. ==== Zwracane parametry (procedura) ==== Funkcja na wiele sposobów może wsazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. Funkcja ta itewratora zwraca według schematu {{Patrz|procedura zwracanych wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdziału_wartosc_ujemna_lub_dodatnia,poczatek,numeracja,czy_rozdział_centrowany; </syntaxhighlight> ===== Rozdział bez specjalnych obiektów ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, na {{Code|false}}, jeśli nie,wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Za pomocą funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, zwracamy wartość rozdziału, jeżeli to jest rozdział zerowy, druga wartość jest {{Code|true}}, jeżeli rozdział nie kończy się na kropkę, znak: {{Code|.}}, a jeżeli końcu się, to funkcja zwraca {{Code|nil}}, czyli ten rozdział, tak naprawdę, nie jest rozdziałem niedodatnim. {{Tab}}Jeśli jednak jest takim rozdziałem, to sprawdzane, czy długość rozdziału jest mniejsza lub równa zmiennej {{Code|maksymalny_rozmiar_rozdzialu_zerowego}}, który przyjmuje wartość ustalaną przed iteratorem, ale w funkcji zwracającej iterator, równą: {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Później jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Przeciwnie jest zwracane {{Code|nil}}. {{Tab}}Sprawdzane, czy {{Code|poczatek}} i {{Code|numeracja}}, czy są nepusta. A gdy niierma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. ===== Rozdział centrowany ===== Gdy zmienna {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli prezyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przeciwnie zwraca {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} ===== Jeżeli w linii odkryto taki rozdział oznaczony, z któryś tych znaczników, wtedy jeśli numeracja i rozmiar nieistnieją, wtedy iterator zwraca wartość {{Code|nil}}, przeciwnie jest liczony numer rozdziału z funkcji {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, dalej jest zwracany wynik {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}}) ===== Jest sprawdzane,czy numeracja i rozdział, czy niestneją, lub czy są równe puste, wtedy jest zwracane {{Code|nil}}, przeciwnie jest rewidowane, czy funkcja spełnia zasadę maksymalności rozdziału zerowego ze zmiennej {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}} funkcją, jeżeli jest spełnione, to: {{Tab}}Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział przed cudzysłowek ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> Przeciwnie funkcja zwraca wartość {{Code|nil}}, czyli wtedy to nie jest rozdział. {{tab}}W innym wypadku, jeżeli poczatek jest jest pusty, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}, lub przeciwnie mamy {{Code|nil}}. == {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} == Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną. Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> {{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}; </syntaxhighlight> Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko: <syntaxhighlight lang="mediawiki"> '''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}. </syntaxhighlight> == {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przerobienia. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} == Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony . Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu funkcji. Parametry ramki funkcji tablicy transportu: * {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony, * {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta. Przykłady użycia: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Uzyskane wyniki w postaci nierozwiniętego wikikodu: <syntaxhighlight lang="mediawiki"> <templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span> </syntaxhighlight> == {{Code|p.NumerSekcjiStrony}} == Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumerSekcjiStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}. == {{Code|p.TekstWprowadzeniaTekstu}} == Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu, * {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Przykład użycia: <syntaxhighlight lang="lua"> local strona="Pomoc:Spis treści"; local title=mw.title.makeTitle('',strona); local tekst=title:getContent(); local id_rozdzialu1="Pomoc Wikibooks"; local id_rozdzialu2="Wstęp"; local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały"); tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); </syntaxhighlight> Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami: <syntaxhighlight lang="lua"> local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}."; </syntaxhighlight> == {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami, * {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}. Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy, * {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość, * {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), * {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jego definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej|klasa=zn_ogromne}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa|klasa=zn_ogromne}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, czy nie, gdy wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona przyjmuje wartość odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami i szablonami nowej linii i kresek w linii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Funkcja znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablony: {{s|Br}} i {{s|Hr}}, zamienia na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa nowe zagnieżdzone linie w nowych liniach z szablonami i znacznikami centrowania, pozostawiając główną nową linię z szablonem i znacznikiem centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Te linie mogą być oznaczone szablonami: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, lub znacznikami: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. Funkcja zwraca tak zmodyfikowany tekst, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu centrowania przy pomocy funkcji: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, nowe linie, nawet kresek, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, nowe linie powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Fukcja zwraca tekst zmodyfikowany lub jego bazę z drugą wartością {{Code|true}}, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikkowany: {{LinkPatrz|szablon}}, podany jako pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy przy pomocy tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, czy znacznikowy, którym jest: {{Tag|center}}, lub określone tabelą: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. W obu tych rozgałęzieniach funkcji jest uruchamiana: {{LinkŚródtytuł|Modyfikacja}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, * Parametry znacznikowe: ** {{Code|parametr1}} {{Patrz|parametr1}} - to nic innego jak: {{Code|nazwa}} {{Patrz|nazwa}}, czyli jak nazwa znacznika, ** {{Code|parametr2}} {{Patrz|parametr2}} - to nic innego jak: {{Code|zawartość}} {{Patrz|zawartość}}, czyli zawartość znacznika, ** {{Code|parametr3}} {{Patrz|parametr3}} - to nic innego jak: {{Code|tab_atrybuty}} {{Patrz|tab_atrybuty}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (ale zwracane bez niej, a z wartością {{LinkPatrz|szablon}}, która się nie zmieniła), z drugą wartością {{Code|true}}. Funkcja jedynie działa w dwóch sprawdzanych zakresach, tzn. {{Code|SZABLON}} i {{Code|ZNACZNIK}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|trimowanie}} - czy jest włączone trimowanie komórki. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością, a ta nowa jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}}, to na poczatek tego czegoś nowego jest dodawany odstęp. Jeżeli trimowanie jest wyłączone, to na poczatek są dodawane dwie nowe linie, a na końcu jedna, i to jest zwracane, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną, lub nie, zawartość. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni {{LinkPatrz|czy_rozdział_dodatni}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni. Funkcja wydziela poszczególne linie wewnętrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, tobi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}), a w nim dla elementu {{Code|SZABLON}}, nowe linie: {{s|Br}}, nawet kreskowe: {{s|Hr}}, są zamieniane na spację. Szablony napisu wprowadzenia tekstu: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, są zamieniane na ich zawartości. A dla elementu {{Code|ZNACZNIK}}, znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, są zamieniane na spację. A całe naczniki, tzn.: {{Tag|center}} i {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, są zamieniane na ich zawartości. Dla znacznika: {{Tag|pre}}, czyli obiekt {{Code|PRE}}, gdy ona nie ma zawartości, to zamiast niego jest wyświetlana zawartość równą jednej spacji, przeciwnie znaki specjalne tagu {{Tag|nowiki}} są zamieniane na znaki kodu {{Strong|HTML}}, czyli według funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}. Gdy mamy rozdział dodatni według {{LinkPatrz|czy_rozdział_dodatni}}, wtedy znaki nowej linii {{Code|\n}} zawartości są zamieniane na znak jednej spacji w przeciwnym wypadku takiego czegoś zwracana jest zmodyfikowana zawartość. Podobnie robimy dla obiektu {{Code|ŻRÓDŁO}}, a dla {{Code|NOWIKI}} też podobnie, ale prawie, bo nie ma sprawdzenia, czy to jest rozdział dodatni, którym jest ta sprawdzana linia, ale poszczególne nowe linie są zamieniane tam na spację. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu krok 1 ====== Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji w odpowiednie kody {{Strong|HTML}}, lub w edytować linki zewnętrzne {{Code|LINKZ}} bez nazwy, by napisać ich numerki uruchomień, aby była zachowana kolejność numerowania szablonów, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}}, która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, zdefiniowane w tym module. {{HNumer|1= ======= Opis funkcji {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}, jako pierwszy argument modyfikujący tekst, w przypadku innym niż szablony i znaczniki referencji - nazwane i nienazwane, oraz numerujące linki zewnętrzne nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, * Parametry znacznikowe: ** {{Code|parametr1}} - jak w: {{LinkPatrz|parametr1}}, jest to: {{LinkPatrz|tabela_parametrow_szablonu}}, ** {{Code|parametr2}} - jak w: {{LinkPatrz|parametr2}}, jest to: {{LinkPatrz|nazwa_szablonu}}, ** {{Code|parametr3}} - jak w: {{LinkPatrz|parametr3}}, jest to: {{LinkPatrz|tabela_modyfikatorow}}, * {{Code|tekst}} - jak w: {{LinkPatrz|tekst}}. Gdy mamy {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, wtedy uruchamiamy funkcję: {{HNumer|1= ======== {{Śródtytuł|FuncSzablon}}{{Code|FuncSzablon}} dla obiektów szablonowych, czyli typu SZABLON ======== }} Funkcja zastępuje pewne elementy pewnym wyliczonym łańcuchem znaków, lub zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}}, * {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}}, * {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}}. {{HNumer|1= ========= Szablony sztucznego wprowadzenia tekstu ========= }} Sprawdzamy, czy to jest jeden z szablonów z tabeli {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, na podstawie, której sprawdzamy, czy istnieje element tekstu, który jest bardzo ważny w analizie tych szablonów. A jeżeli ten paramweetr istnieje w zestawie parametrów, wtedy ustawiamy zmienną: {{Code|czy_modyfikacja}}, na wartość {{Code|false}}, i uruchamiamy funkcję: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, do kompletowania w taki sposób by zawartość znacznika {{Tag|div}} zastąpić jego zawartością, wtedy i tylko wtedy gdy funkcja: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, na podstawie analizy parametru: {{Code|tekst}}, zwróci wartość {{Code|true}}, a jeśli nie zwróci, to ten parametr nie jest kompletowany, w przeciwnym wypadkujest zastępowany jego zawartością odpowiednio zakodowaną. A zaraz przed nią zmienna {{Code|czy_modyfikacja}} przybiera wartość {{Code|true}}. Po wyjściu z funkcji kompletowania jest sprawdzana zmienna {{Code|czy_modyfikacja}}, czy przybiera wartość prawdziwą, a jeżeli tak, to zwracanajest wartość z tej funkcji. {{HNumer|1= ========= {{Śródtytuł|AnalizaSzablonu}}{{Code|AnalizaSzablonu}} ========= }} Uruchamiamy funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|b=tak}}}}, a jeżeli ona zwróci jakiś wynik, to ona właśnie to zwróci, przeciwnie są usuwane szablony z tabel, jeżeli do nich pasują, ale tu pasuje względem jego nazwy, tu mamy na myśli: {{LinkPatrz|p.szablony_do_usuwania_z_tekstu}}, {{LinkPatrz|p.szablony_bez_generowania_napisowego}} i {{LinkPatrz|p.szablony_nie_typowo_linkowe}}. Jeżeli pasuje, do któryś z tych tabel to funkcja zwraca ciąg pusty, przeciwnie zwraca {{Code|nil}}. {{HNumer|1= ========= Parametry funkcji {{LinkŚródtytuł|AnalizaSzablonu}} ========= }} Funkcja analizująca szablon pod pewnymi warunkami zamieniające pewne zawartości wywołań szablonów na wartości puste lub nie zwracające żadnej wartości. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function AnalizaSzablonu(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Gdy funkcja {{LinkŚródtytuł|AnalizaSzablonu}}, zwróci wartość odpowiadających łańcuchowi znaków, wtedy funkcja zwraca wartość pustą, to wtedy funkcja: {{LinkŚródtytuł|FuncSzablon}}, ma zwracaną wartość równą tej wartości, a jeżeli nie ma jej, to ona idzie dalej. {{HNumer|1= ========= Modyfikacja napisów wprowadzenia tekstu szablonowych ========= }} Uruchamiana jest funkcja {{LinkŚródtytuł|UsuwanieZnacznikowe}}, która zwraca dwie wartości {{Code|szablon}} i {{Code|czy_center}}. {{HNumer|1= ========= Szablony generowania nagłówków - generowanie zawartości na podstawie pewnych wniosków ========= }} {{Tab}}Jeżeli pierwszy parametr tej funkcji zwróci wartość nie {{Code|nil}}, wtedy sprawdzamy, czy nazwa szablonu jest z tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, jeżeli jest, to liczy jego zawartość, a jeśli ona istnieje, wtedy sprawdzamy, czy w niej jest napis wprowadzenia tekstu według funkcji: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}}, lub czy jest to pozycja listy z: {{Code|{{sr|#p.CzyJestListaNapisuWprowadzeniaTekstu|b=tak}}}}, a jeżeli wszystko się zgadza, wtedy funkcja zwraca tą zawartość z drugim parametrem {{LinkPatrz|tabela_parametrow_szablonu}}. {{HNumer|1= ========== Aktualizacja bazy danych kodowania '''szablonowego''' zakodowanego wikikodu ========== }} Po wyjściu z tej funkcji jest sprawdzane, czy funkcja zwróci wartość odpowiadająca prawdziwej, jeżeli tak, to ona zwróci ten wynik, jeżeli nie, to aktualizowana jest pozycja z: {{Code|szablon}} {{Code|{{=}}}} {{Code|szablon}}, według: <syntaxhighlight lang="lua"> tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; </syntaxhighlight> A sama funkcja {{LinkŚródtytuł|FuncSzablon}} zakańcza się z wartością {{Code|nil}}. {{HNumer|1= ========= Szablony generowania nagłówków - bez modyfikacji szablonów napisu wprowadzenia tekstu ========= }} A gdy {{Code|szablon}} odpowiada wartości fałszywej, a {{Code|czy_center}} prawdziwej, wtedy sprawdzamy, czy nazwa szablonu pasuje do tej samej tabeli, co poprzednio dla prawdziwej {{Code|szablon}}, ale tutaj jest fałszywe, wtedy wskazanie jest podobne, funkcja zwraca podobnie jak poprzednio, ale tym razem bez tabeli parametrów, w przeciwnych wypadkach ta funkcja zwraca wartość {{Code|nil}}. {{HNumer|1= ========= Szablony znaczników odpowiadające właściwym znacznikom '''HTML''' innym niż centrowania i nagłówków ========= }} A gdy {{Code|szablon}} i {{Code|czy_center}} są równe odpowiadającej wartości fałszywej, wtedy sprawdzamy, czy szablon jest znacznikiem szablonowym z tabeli: {{LinkPatrz|p.znaczniki_szablonowe}}. A jeżeli ma parametr z zawartością, to go przekształcamy szablonem {{LinkŚródtytuł|ZamienNaKody}}, i zwracamy jego wynik. Dla funkcji: {{LinkŚródtytuł|FuncSzablon}}, jeżeli ma wynik odpowiadający prawdziwej wartości, wtedy jest zwracane {{Code|wynik,nil,true}} - co tutaj odpowiada zastępowaniom wartości, przeciwnie {{Code|nil,true}}, co tutaj odpowiada nierozwijaniu tej wartości. {{HNumer|1= ======== Dalszy opis funkcji - obiekty nieszablonowe, czyli typu ZNACZNIK i inne ======== }} {{Tab}}Dla {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}}, gdy nazwa znacznika nie jest {{Tag|center}} lub znacznikem wprowadzenia tekstu z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, wtedy gdy jest nierówny: {{Tag|ref}}, {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, zatem definiujemy funkcją {{Code|fun}}, która zwracamy w postaci parametrów, do funkcji jako w zestawie argumentów zrzuconych: {{Code|fun,nil,true}}. {{HNumer|1= ========= Znaczniki inne niż {{Tag|div}} ========= }} Funkcja {{Code|fun}} ma definicję, która nie przyjmuje żadnych parametrów. W tej funkcji, gdy znacznik nie jest równy {{Tag|div}}, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a potem na jego wyniku {{LinkŚródtytuł|ZamienNaKody}}, a jeżeli zawartość nie istnieje, to ona zwróci wynik równy ciągowi pustemu. {{HNumer|1= ========= Znaczniki warstw {{Tag|div}} ========= }} A gdy jest jednak tym znacznikiem, to wtedy używamy funkcji dla parametru {{Code|tekst}}, tzn. nie spełnia warunku: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, wtedy przetwarzamy jego wynik, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.gsub|b=tak}}}}, i też {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a na samym końcu przetwarzamy wynik funkcją {{LinkŚródtytuł|ZamienNaKody}}, na zawartości wynikającej z elementów znacznikowych. A gdy spełnia jednak ten warunek, to uruchamiamy funkcję: {{LinkŚródtytuł|ZamienNaKody}} na wyniku z: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, jeżeli zawartość istnieje. Gdy zawartość tego znacznikanie nie istnieje lub jest pusta, to funkcja zwróci wynik równy ciągowi pustemu. {{HNumer|1= ========= Inne znaczniki niż rozważane wcześniej jako podstawa ========= }} {{Tab}}Gdy znacznik nie jest tym, co myślimy, wtedy jest sprawdzana zawartość, jeśli istnieje, z funkcji: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} lub {{Code|{{sr|#p.CzyJestListaNapisuWprowadzeniaTekstu|b=tak}}}}, a jeżeli wszystko się zgadza, to zwracany jest wynik taki symbolizujący według dokumentacji zastąpienie znacznika jego zawartośścią. {{HNumer|1= ========= Znaczniki zostały zmodyfikowane przez funkcję obrabające znaczniki do jednej linii ========= }} {{Tab}}Jeżeli funkcja nie przeszła dalszych etapów, to sprawdzany jest wynik funkcji {{LinkŚródtytuł|UsuwanieZnacznikowe}}, jeżeli ma wartość równą odpowiadającej prawdziwej, wtedy w tabeli bazy kodów {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} dla tego obiektu i kodu jest naprawiana treść według tego wyniku uzyskanego z tej ostatniej funkcji. {{Tab}}Dalej rzucany jest wynik nierozwijania, jeśli funkcja doszła do tego etapu. {{HNumer|1= ======== Inne znaczniki specjalne mechanizmu MediaWiki oraz linki zewnętrzne i wewnętrzne ======== }} Gdy obiekt jest równy {{Code|PRE}} i zawartość składa się jego z samych odstępów, wtedy on jest zastępowany ciągiem pustym. Przeciwnie jest zrzucany wynik nierozwijania tego elementu. {{HNumer|1= ========= Obiekty linków zewnętrznych i wewnętrznych ========= }} Gdy mamy obiekt równy: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|b=tak}}}}, opisaną wcześniej, w nim znaczniki są zamieniane na ich zawartość, przeciwnie dla innych elementów zrzucany jest wynik nierozwijania. Gdy dało się wtedy zaktualizować zmienną: {{LinkPatrz|szablon}}, to wtedy zmieniamy zawartość dla tego obiektu i kodu w tabeli bazy kodowania: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Sprawdzamy, czy ten link symbolizuje element spisu według funkcji: {{Code|{{sr|#p.CzyElementSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli nie to funkcja zwraca wartość pustą, którą jest zastępowany taki link. {{HNumer|1= ======== Wikitabele jako obiekty kodowania szablonowego, czyli elementy typu WIKITABELA ======== }} Gdy obiekt jest o wartości {{Code|WIKITABELA}}, to wtedy wykorzystujemy zestaw funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.gsub|b=tak}}}} i {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, aby przetworzyć tekst z tabelką, do zwykłych odnośników z linkami w wikitabeli, na przykład. Na samym końcu funkcja zwraca wynik do zastąpienia takiej wikitabeli pewnym ciągiem w odpowiedni udokomentowany sposób. ====== Zmiana tekstu krok 2 ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w mechanizmie '''MediaWiki''', ta funkcja działa dla każdej linii w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu krok 3 ====== Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, napisu wprowadzenia tekstu, których ich nazwy pasują do: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia, a szablony o nazwach z tabeli: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiana jest nowa linia wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według funkcji podanej w nagłówku, ale też w funkcji w tabeli transportu, czyli {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. ==== Kod dalszy bez wybranej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ==== Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{LinkPatrz|czy_rozdzialy_analizowac}}, zatem: <syntaxhighlight lang="lua"> local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil); </syntaxhighlight> A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcja inicjująca jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}. Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{Code|{{sr|#p.IterTekst|b=tak}}}}. ==== Kod wspólny ==== ===== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ===== W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Wystepowanie(linia,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem. Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}. ====== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ====== Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego argumentami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinie(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. {{Tab}}Dla otrzymanego z ostatniej funkcji zmiennej {{Code|kom}}, która odpowiada wartości fałszywej, sprawdzamy, czy takie coś jak artykuł istnieje, liczymy jego nazwę z funkcji: {{Code|{{sr|#p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu|p=StronicowyParser/Potrzebne}}}}, i sprawdzamy, czy według uzyskanej tej nazwy, czy to jest okładka. Jeżeli to jest artykuł niebędący stroną główną podręcznika lub artykuł podręcznikowy niebędący okładką, wtedy funkcja zrzuca wynik {{Code|1}}, przeciwnie dla istniejącej okładki, dla innego rozgałęzienia, funkcja ustawia wartość: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} na wartość {{Code|true}}, i ta funkcja nie zrzuca żadnego wyniku. {{Tab}}Przeciwnie, wtedy funkcja zrzuca wynik {{Code|0}}. {{Tab}}Funkcja w innych niż opisane zawsze nie zrzuca żadnego wyniku, co odpowiada wartości zrzucanej {{Code|nil}}. ====== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ====== Funkcja rozważa ogólnie linie z obietami {{Code|SZABLON}} albo {{Code|LINKW}} lub {{Code|LINKZ}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinieZnacznikowe(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} {{LinkPatrz|zawartosc}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu. Funkcja uruchamia funkcję iteratora przy pomocy generatora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, a później dla funkcji w niej zdefiniowanej funkcji, która dla wartości zwracanej {{Code|nil}} przerywa od razu pętlę. Po definicji pewnych funkcji jest uruchamiana iteracja otrzymanego z tej funkcji. Pętla na pewno jest zatrzymana po wykorzystaniu wszystkich danych. {{HNumer|1= ======= {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ======= }} Funkcja właściwa do rozwazania szczególnego z obiektami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CenterZnacznikLinia(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona przyjmuje wartość {{Code|nil}} lub {{Code|1}}, wtedy funkcja się zakańcza, przeciwnie funkcja zrzuca wartości: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga). {{HNumer|1= ======= Dalszy opis funkcji ======= }} Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce. W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana. ====== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ====== Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function spis_tresci(wystepowanie_linkow,hn_number)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami, * {{Code|hn_number}} {{Patrz|hn_number}} - czy to jest zawartość szablonu centrowania. Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, czy w spisie są jakieś początkowe artykuły, które nie należą do żadnego rozdziału, tzw. artykuły wstępne. {{HNumer|1= ======= {{Śródtytuł|Spis}}{{Code|Spis}} ======= }} Jest to funkcja szczególna do rozwazania szablonów centrowania spisów treści. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Spis(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, wtedy dla istniejącego wpisu w pierwszej wartości sprawdzanej dla artykułu książki, funkcja sprawdza funkcją: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}, odpowiednimi wartościami, i jest zwracana wartość {{Code|1}}. Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}. W pozostałych wypadkach funkcja nie zwraca żadnego wyniku. {{HNumer|1= ======= Dalszy opis funkcji ======= }} Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany. Przeciwnie w innym wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.trim|b=tak}}}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, połączonej z metatabelką, gdy sprawdzanie przeszło, wtedy inicjowane są zmienne: {{LinkPatrz|tak_ce_spis_tresci}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{LinkPatrz|hn_number}} i {{LinkPatrz|wystepowanie_linkow}}, dalej jest zwracana wartość {{Code|1}}. W innym wypadku nie jest zwracana żadna wartość. ====== Kod dalszy funkcji ====== {{HNumer|1= ======= Warunki wstępne ======= }} Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, przeciwnie z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}. Gdy mamy włączoną opcję: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, czyli dla tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, wtedy możemy powiedzieć, ze również {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane. {{Tab}}Gdy: {{LinkPatrz|wystepowanie_linkow}}, istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału na początku otrzymanego spisu treści dla jego początkowych linii. {{HNumer|1= ======= Iterator po rozważanej zmiennej, czyli iteracja po tekście ======= }} Uruchamiamy iterator ze zmienną: {{LinkPatrz|wystepowanie_linkow}}, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest później uruchamiana iteracja, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych. Funkcja wchodzi do ciała właściwego funkcji, gdy: {{LinkPatrz|obiekt}}, jest równe {{ZobaczTeż|obiekt}}: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}. {{HNumer|1= ======== Obiekt szablonowy, czyli typu SZABLON ======== }} W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu z: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, z tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczone {{Code|szablon_spis_tresci_zawartosc}} z zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}. A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, a gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość {{Code|true}}, przeciwnie na {{Code|false}}. {{HNumer|1= ======== Obiekt znacznikowy, czyli typu ZNACZNIK ======== }} A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, a gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a potem z tym parametrem jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. {{HNumer|1= ======== Obiekty linkowe, czyli typu: LINKW i LINKZ, a więc linki wewnętrzne i zewnętrzne ======== }} Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, przeciwnie na {{Code|false}}. ====== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ====== {{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}} jest {{Code|true}}, i gdy zmienna {{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}, jest bez wartości, wtedy dla {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst nie kończy się za nie na {{Code|.}}, dla określonej linii. W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, przeciwnie ustawiana jest wartość: {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. A gdy {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu, i zwracana jest wartość pusta z drugim nienilowym argumentem, gdy występowań liczonych jest większa niż zero, przeciwnie wartość {{Code|nil}}, to oznacza ze zmienna tekstowa w iteratorze nie jest podmieniana na zmienną {{Code|tekst}}, przeciwnie jest podmieniana. {{Tab}}Gdy {{LinkPatrz|podrecznik}} ma wartość {{Code|false}}, wtedy dla żadnej wartości {{LinkPatrz|wartosc}}, gdy zmienna: {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem jest ciąg znaków określone wzorem {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}}, jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, a jeśli jednak tak, to zmienna: {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, w innym rozgłazieniu instrukcji '''jeśli''' dla: {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}. {{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, wtedy dla {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, też jest zakańczana, w przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}. ====== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ====== Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}. ====== Użytek wartości ze zmiennej {{Code|tak}} ====== Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{LinkPatrz|tak}} jest równa wartości prawdziwej, to uruchamiana jest funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, przeciwnie bezparametrowo {{Code|funkcja2}} {{LinkPatrz|funkcja2}}. ==== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ==== Liczymy poszczególne linie z iteratora otrzymanego z {{LinkPatrz|iter_main}}. Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany}}. Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{LinkPatrz|nazwa_rozdzialu}} i {{LinkPatrz|poziom_rozdzialu}}. Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{LinkPatrz|czy_rozdzialy_analizowac}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy to jest jakiś rozdział, przeciwnie, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{LinkPatrz|linia}} i drugą zdefiniowaną funkcją i trzecią, który z parametru {{LinkPatrz|nazwa_rozdzialu}} usuwa jej wartość. {{Tab}}Tą pierwszą funkcją, jest tak gdy: {{LinkPatrz|tak_ce_spis_tresci}}, z wartością odpowiadającej fałszywej, ustawiamy {{LinkPatrz|nazwa_rozdzialu}} na {{Code|Spis treści}}, a {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. Przeciwnie sprawdzamy wartość zmiennej {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy rozdział jego i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. Przeciwnie, gdy nie ma takiego czegoś jak numeracja (nawet jego pusta) i rozdział, to {{LinkPatrz|nazwa_rozdzialu}} jest ustawiana na {{LinkPatrz|szablon_spis_tresci}}, a {{LinkPatrz|numeracja_rozdzialu}} na {{Code|nil}}. A jeżeli {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{LinkPatrz|numeracja_rozdzialu}} ustawiona jest wtedy na {{Code|nil}}. Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając na zmienną liczbową zmienną: {{LinkPatrz|tak_ce_spis_tresci}}, a jeżeli ona nie istnieje, to przydzielamy wartości {{LinkPatrz|poziom_rozdzialu}} wartość {{Code|2}}, przeciwnie wartość {{LinkPatrz|czy_rozdzial_naglowka_hn}}. Na podstawie przeciwnej wartości {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu}} ustalamy na wartość {{Code|nil}}. Gdy nie udało się znaleźć {{LinkPatrz|nazwa_rozdzialu}}, to potrzebne do tego parametry liczymy z funkcji {{LinkPatrz|parser}}, według: <syntaxhighlight lang="lua"> local linia_temp; linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Ta funkcja sprawdza czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, w przypadku przeciwnym zwraca ona wynik tylko {{Code|nil}}. ==== Wartości zwracane przez iterator ==== Gdy: {{LinkPatrz|nazwa_rozdzialu}}, gdy istnieje, wtedy ustalamy zmienną: {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}: <syntaxhighlight lang="lua"> {naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany; </syntaxhighlight> Gdzie parametry wartości zwracanych: * {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str}} w kodzie, * {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu}}, * {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu}}, * {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany}}. Gdy {{LinkPatrz|__FUNKCJA2}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji. Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2}} z parametrem identyfikującym, że to jest rozdział {{LinkPatrz|nazwa_rozdzialu}}, czy tekst rozdzialu {{LinkPatrz|tekst_rozdzialu}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> esxomflcktng3hg331lbcoo97i55rsr 548304 548303 2026-07-25T15:28:27Z Persino 2851 /* {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} */ 548304 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Wstęp == Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. === Rozdziały === * Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane: ** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}}, ** Inne (nierównaniowe): *** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}}, *** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}}, * Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}}, * Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}. === Zmienne spotykane w opisywanych tutaj funkcjach === ==== Zmienne bazy ==== W poniższych funkcjach często spotykamy parametry: * {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst przeważnie zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje, * {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony szablonowe jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych. Jest liczona bez nazwy przestrzeni {{Np|Template|link=tak}}, w tej przestrzeni, a w innych z przestrzeniami, a w {{Np|(main)|link=tak}} z dwukropkiem na początku. ==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ==== * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów. ==== Baza danych wikikodu ==== Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu. ===== Zmienne bazy danych i do nich parametrów ===== * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy. ===== Inne elementy bazy ===== * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku. ==== Funkcje bazy danych i do nich parametrów ==== * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Inne funkcje ==== ===== Funkcje bazy ===== * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych, * {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej). ===== Inne ===== * {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych. ==== Elementy bazy ==== * {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie, * {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. ==== Inne zmienne ==== * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów === Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji) local tab_obiekt=tab_analiza[obiekt]; if(not tab_obiekt)then return;end; for _,wartosc in pairs(tab_obiekt)do local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(element_wartosc)then element_wartosc[kod]=nil; end; end; end; </syntaxhighlight> Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy === A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne: <syntaxhighlight lang="lua"> local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji) tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; end; </syntaxhighlight> Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli. Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}. == {{Code|p.NapisWprowadzeniaTekstu}} == Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - tekst wnętrza rozdziału, * {{Code|poziom}} - numer całkowity dodatni poziomu. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial="Tekst rozdziału"; local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4); local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8); </syntaxhighlight> Wyniki użycia w zmiennych: <syntaxhighlight lang="lua"> local napis_rozdzialu1="\n====Tekst rozdziału====\n"; local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n"; </syntaxhighlight> == {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} == Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu. Defnicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu, * {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu, * {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}}, * {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu. Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę. Przykłady użycia, używając omawianego szablonu: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}} {{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}} </syntaxhighlight> Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki: <syntaxhighlight lang="lua"> local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ==="; local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>"; </syntaxhighlight> A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną): <syntaxhighlight lang="lua"> local zawartosc="Zawartość znacznika"; local zawartosc="Zawartość znacznika"; </syntaxhighlight> W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się: <syntaxhighlight lang="lua"> if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end; if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end; </syntaxhighlight> Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić). == {{Code|p.NapisWprowadzeniaTekstuHNumer}} == Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHNumer(parametr)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też. Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Nagłówek tekstu ===}} {{HNumer|1= ======= Nagłówek tekstu =======}} </syntaxhighlight> Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody: <syntaxhighlight lang="lua"> ---- Nagłówki typowo dodatnie local tekst1="=== Nagłówek tekstu ==="; local tekst2="======= Nagłówek tekstu ======="; ---- Wywołania tworzące nagłówki local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1); local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2); </syntaxhighlight> Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}: <syntaxhighlight lang="lua"> local naglowek1="<h3>Nagłówek tekstu</h3>"; local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>"; </syntaxhighlight> == {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} == Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana, Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="====== Tekst nagłówka ======"; local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst); </syntaxhighlight> Wynikiem działania tego przykładu: <syntaxhighlight lang="lua"> local naglowek="Tekst nagłówka"; local poziom=6; </syntaxhighlight> Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie. == {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} == Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local zawartosc="Tekst nagłówka"; local poziom=5; </syntaxhighlight> == {{Code|p.CzyJestNapisWprowadzeniaTekstu}} == Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n"; local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst); </syntaxhighlight> W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli: <syntaxhighlight lang="lua"> local napis_pierwszy_w_tekscie="== Tekst nagłówka == "; </syntaxhighlight> Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}. == {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w który ma znajdować napis wprowadzenia tekstu w postaci listy. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n"; local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}. == {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} == Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem. Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny). Przykłady funkcji: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst1="====== Tekst nagłówka ======"; local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1); local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local czy_jest_naglowek1,jaki_naglowek1=true,true; local czy_jest_naglowek2,jaki_naglowek2=true,false; </syntaxhighlight> == {{Code|p.WierszHNumer}} == Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WierszHNumer(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - parametr z tymi nagłówkami. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>"; local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n"; </syntaxhighlight> == {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{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> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{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> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja wykorzystuje: * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, * {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}. == {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} == Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez. Zwracane wartości: * {{Code|rozdzial}} - rozdzial bez numeracji, * {{Code|numetracja}} - numeracja. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja="5.1.2.3."; </syntaxhighlight> ; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja=""; </syntaxhighlight> == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}}, * {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}}, * {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} == Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametr funkcji: * {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}. Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa): <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="Spis treści"; local tablica_analizy_obiektow_strony_dany_modul={}; ---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); ---- Koniec tej części kodu; local tablica_danych_parametrow_szablonu_strony={}; local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Funckja w tym wypadku zwraca wynik: <syntaxhighlight lang="lua"> local rozdzial,czy_tak="Spis treści",true; </syntaxhighlight> Weźmy inny przykład: <syntaxhighlight lang="lua"> ---- Przykład pierwszy; local linia="'''Nagłówek'''"; local rozdzial,czy_tak="'''Nagłówek'''",true; ---- Przykład drugi; local linia="'''Nagłówek'''."; local rozdzial,czy_tak="'''Nagłówek'''.",false; </syntaxhighlight> == {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} == Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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: * {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}}, * {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka, * {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}. Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="''[[Książka/Artykuł|Artykuł]]''"; local tablica_analizy_obiektow_strony_dany_modul={}; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local przedrotek_listy=":"; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; ---- Tutaj funkcja zwróci wartość: true; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ---- Tutaj funkcja zwróci wartość: false; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); </syntaxhighlight> == {{Code|p.HnNumerWprowadzeniaTekstu}} == Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa}} - nazwa tagu, * {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''. Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w: <syntaxhighlight lang="lua"> p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; </syntaxhighlight> Funkcja posługuje się jedynie na tych typach znaczników, a nie innych. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h5"; local atrybuty={}; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja zwróci wynik: {{Code|5}}. ; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h6"; local atrybuty={};atrybuty["class"]="mw-hnumber-9"; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja daje wynik: {{Code|9}}. == {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} == Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="5.1.6. Rozdział"; local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local numeracja,rozdzial="5.1.6.","Rozdział"; </syntaxhighlight> == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach. ===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania napisu wprowadzenia tekstu, funkcja dopuszcza rozdziały typu: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem) i {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), wtedy zwraca {{Code|nil}}. Funkcja liczy rozdział i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}, a jeżeli tak z policzonego rozdziału udało się wykluczyć go przy pomocy funkcji: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, wtedy numeracja i rozdział są przyrównywane do wartości {{Code|nil}}, przeciwnie pozostawia je policzone przy pomocy {{LinkPatrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza, czy rozdział jest centrowany szablonami normalnymi, które są opisywane, czy to są szablony normalne centrowania, przy pomocy tabeli {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak to liczy jego zawartość, który jest wyświetlany w postaci centrowanej treści, co na podstawie tej wartości jest rewidowany rozdział funkcją: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}. ==== Zwracany iterator linii ==== Funkcja ma w sobie zwracany iterator, który można wykorzystać do iterowania linii {{LinkPatrz|linia}}, aby sprawdzić, czy to jest rozdział, czy zwykły tekst. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Sukces wyodrębnianiu rozdziału ====== Jeżeli to dało się wyodrębnić {{ZobaczTeż|rozdział}}, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z rozdziału numeracją usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany rozdział i numeracja z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== {{HNumer|1= ======= Wykryta linia cudzysłowu ======= }} W przeciwnym wypadku jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy rozdział jest równy linii, a poczatek i numeracja są równe ciągowi pustemu. {{HNumer|1= ======= Adresu URL linii ======= }} W innym wypadku, gdy poprzedni warunek nie jest spełniony, sprawdzamy, czy któreś z poszczególnych ciągów z czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) ===== Gdy nie jest spełniony warunek {{LinkZobaczTeż|rozdział}}, to wtedy to samo robimy, co tam, tylko bez znaków początku pozycji listy, który usunęliśmy z linii, rozdzielając na dwa łańcuchy znaków. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii podanemu do funkcji. {{Hr}} ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy funkcję iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza. ===== Obiekt szablon, czyli typu SZABLON ===== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, wtedy ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. A dla szablonów będących linkami sprawdzanymi tabelami: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}} i {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}}i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. A wiec wtedy na podstawie tych wartości prawwdziwej, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ===== Linki wewnętrzne i zewnętrzne ===== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak innicjowane jak tam, a tutaj funkcja zwraca wartość domyślną {{Code|nil}}. ===== Obiekty specjalne ===== Podobnie jest dla obiektów: {{Code|PRE}}, {{Code|MATH}}, {{Code|ŹRÓDŁO}} i {{Code|INNEPRE}}, jest jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, ze zwracaną wartością domyślną {{Code|nil}}. ===== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ===== Gdy obiekt jest równy: {{Code|ZNACZNIK}}, wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. W tym pierwwszym ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}, a w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ==== Iterator w linii ==== Uruchamiamy iterator w pętli do zakończenia danych lub przerwania pętli przez funkcję w iteratorze, przez zwracanie przez nią wartości {{Code|nil}}. Rozdział, początek pozycji listy i numeracja, jeżeli poszczególne istnieją, to wtedy działane jest na nich funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. ==== Zwracane parametry (procedura) ==== Funkcja na wiele sposobów może wsazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. Funkcja ta itewratora zwraca według schematu {{Patrz|procedura zwracanych wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdziału_wartosc_ujemna_lub_dodatnia,poczatek,numeracja,czy_rozdział_centrowany; </syntaxhighlight> ===== Rozdział bez specjalnych obiektów ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, na {{Code|false}}, jeśli nie,wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Za pomocą funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, zwracamy wartość rozdziału, jeżeli to jest rozdział zerowy, druga wartość jest {{Code|true}}, jeżeli rozdział nie kończy się na kropkę, znak: {{Code|.}}, a jeżeli końcu się, to funkcja zwraca {{Code|nil}}, czyli ten rozdział, tak naprawdę, nie jest rozdziałem niedodatnim. {{Tab}}Jeśli jednak jest takim rozdziałem, to sprawdzane, czy długość rozdziału jest mniejsza lub równa zmiennej {{Code|maksymalny_rozmiar_rozdzialu_zerowego}}, który przyjmuje wartość ustalaną przed iteratorem, ale w funkcji zwracającej iterator, równą: {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Później jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Przeciwnie jest zwracane {{Code|nil}}. {{Tab}}Sprawdzane, czy {{Code|poczatek}} i {{Code|numeracja}}, czy są nepusta. A gdy niierma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. ===== Rozdział centrowany ===== Gdy zmienna {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli prezyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przeciwnie zwraca {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} ===== Jeżeli w linii odkryto taki rozdział oznaczony, z któryś tych znaczników, wtedy jeśli numeracja i rozmiar nieistnieją, wtedy iterator zwraca wartość {{Code|nil}}, przeciwnie jest liczony numer rozdziału z funkcji {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, dalej jest zwracany wynik {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}}) ===== Jest sprawdzane,czy numeracja i rozdział, czy niestneją, lub czy są równe puste, wtedy jest zwracane {{Code|nil}}, przeciwnie jest rewidowane, czy funkcja spełnia zasadę maksymalności rozdziału zerowego ze zmiennej {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}} funkcją, jeżeli jest spełnione, to: {{Tab}}Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział przed cudzysłowek ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> Przeciwnie funkcja zwraca wartość {{Code|nil}}, czyli wtedy to nie jest rozdział. {{tab}}W innym wypadku, jeżeli poczatek jest jest pusty, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}, lub przeciwnie mamy {{Code|nil}}. == {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} == Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną. Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> {{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}; </syntaxhighlight> Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko: <syntaxhighlight lang="mediawiki"> '''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}. </syntaxhighlight> == {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przerobienia. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} == Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony . Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu funkcji. Parametry ramki funkcji tablicy transportu: * {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony, * {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta. Przykłady użycia: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Uzyskane wyniki w postaci nierozwiniętego wikikodu: <syntaxhighlight lang="mediawiki"> <templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span> </syntaxhighlight> == {{Code|p.NumerSekcjiStrony}} == Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumerSekcjiStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}. == {{Code|p.TekstWprowadzeniaTekstu}} == Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu, * {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Przykład użycia: <syntaxhighlight lang="lua"> local strona="Pomoc:Spis treści"; local title=mw.title.makeTitle('',strona); local tekst=title:getContent(); local id_rozdzialu1="Pomoc Wikibooks"; local id_rozdzialu2="Wstęp"; local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały"); tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); </syntaxhighlight> Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami: <syntaxhighlight lang="lua"> local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}."; </syntaxhighlight> == {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami, * {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}. Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy, * {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość, * {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), * {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jego definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej|klasa=zn_ogromne}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa|klasa=zn_ogromne}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, czy nie, gdy wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona przyjmuje wartość odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami i szablonami nowej linii i kresek w linii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Funkcja znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablony: {{s|Br}} i {{s|Hr}}, zamienia na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa nowe zagnieżdzone linie w nowych liniach z szablonami i znacznikami centrowania, pozostawiając główną nową linię z szablonem i znacznikiem centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Te linie mogą być oznaczone szablonami: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, lub znacznikami: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. Funkcja zwraca tak zmodyfikowany tekst, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu centrowania przy pomocy funkcji: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, nowe linie, nawet kresek, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, nowe linie powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Fukcja zwraca tekst zmodyfikowany lub jego bazę z drugą wartością {{Code|true}}, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikkowany: {{LinkPatrz|szablon}}, podany jako pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy przy pomocy tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, czy znacznikowy, którym jest: {{Tag|center}}, lub określone tabelą: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. W obu tych rozgałęzieniach funkcji jest uruchamiana: {{LinkŚródtytuł|Modyfikacja}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, * Parametry znacznikowe: ** {{Code|parametr1}} {{Patrz|parametr1}} - to nic innego jak: {{Code|nazwa}} {{Patrz|nazwa}}, czyli jak nazwa znacznika, ** {{Code|parametr2}} {{Patrz|parametr2}} - to nic innego jak: {{Code|zawartość}} {{Patrz|zawartość}}, czyli zawartość znacznika, ** {{Code|parametr3}} {{Patrz|parametr3}} - to nic innego jak: {{Code|tab_atrybuty}} {{Patrz|tab_atrybuty}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (ale zwracane bez niej, a z wartością {{LinkPatrz|szablon}}, która się nie zmieniła), z drugą wartością {{Code|true}}. Funkcja jedynie działa w dwóch sprawdzanych zakresach, tzn. {{Code|SZABLON}} i {{Code|ZNACZNIK}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|trimowanie}} - czy jest włączone trimowanie komórki. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością, a ta nowa jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}}, to na poczatek tego czegoś nowego jest dodawany odstęp. Jeżeli trimowanie jest wyłączone, to na poczatek są dodawane dwie nowe linie, a na końcu jedna, i to jest zwracane, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną, lub nie, zawartość. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni {{LinkPatrz|czy_rozdział_dodatni}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni. Funkcja wydziela poszczególne linie wewnętrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, tobi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}), a w nim dla elementu {{Code|SZABLON}}, nowe linie: {{s|Br}}, nawet kreskowe: {{s|Hr}}, są zamieniane na spację. Szablony napisu wprowadzenia tekstu: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, są zamieniane na ich zawartości. A dla elementu {{Code|ZNACZNIK}}, znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, są zamieniane na spację. A całe naczniki, tzn.: {{Tag|center}} i {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, są zamieniane na ich zawartości. Dla znacznika: {{Tag|pre}}, czyli obiekt {{Code|PRE}}, gdy ona nie ma zawartości, to zamiast niego jest wyświetlana zawartość równą jednej spacji, przeciwnie znaki specjalne tagu {{Tag|nowiki}} są zamieniane na znaki kodu {{Strong|HTML}}, czyli według funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}. Gdy mamy rozdział dodatni według {{LinkPatrz|czy_rozdział_dodatni}}, wtedy znaki nowej linii {{Code|\n}} zawartości są zamieniane na znak jednej spacji w przeciwnym wypadku takiego czegoś zwracana jest zmodyfikowana zawartość. Podobnie robimy dla obiektu {{Code|ŻRÓDŁO}}, a dla {{Code|NOWIKI}} też podobnie, ale prawie, bo nie ma sprawdzenia, czy to jest rozdział dodatni, którym jest ta sprawdzana linia, ale poszczególne nowe linie są zamieniane tam na spację. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu krok 1 ====== Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji w odpowiednie kody {{Strong|HTML}}, lub w edytować linki zewnętrzne {{Code|LINKZ}} bez nazwy, by napisać ich numerki uruchomień, aby była zachowana kolejność numerowania szablonów, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}}, która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, zdefiniowane w tym module. {{HNumer|1= ======= Opis funkcji {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}, jako pierwszy argument modyfikujący tekst, w przypadku innym niż szablony i znaczniki referencji - nazwane i nienazwane, oraz numerujące linki zewnętrzne nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, * Parametry znacznikowe: ** {{Code|parametr1}} - jak w: {{LinkPatrz|parametr1}}, jest to: {{LinkPatrz|tabela_parametrow_szablonu}}, ** {{Code|parametr2}} - jak w: {{LinkPatrz|parametr2}}, jest to: {{LinkPatrz|nazwa_szablonu}}, ** {{Code|parametr3}} - jak w: {{LinkPatrz|parametr3}}, jest to: {{LinkPatrz|tabela_modyfikatorow}}, * {{Code|tekst}} - jak w: {{LinkPatrz|tekst}}. Gdy mamy {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, wtedy uruchamiamy funkcję: {{HNumer|1= ======== {{Śródtytuł|FuncSzablon}}{{Code|FuncSzablon}} dla obiektów szablonowych, czyli typu SZABLON ======== }} Funkcja zastępuje pewne elementy pewnym wyliczonym łańcuchem znaków, lub zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}}, * {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}}, * {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}}. {{HNumer|1= ========= Szablony sztucznego wprowadzenia tekstu ========= }} Sprawdzamy, czy to jest jeden z szablonów z tabeli {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, na podstawie, której sprawdzamy, czy istnieje element tekstu, który jest bardzo ważny w analizie tych szablonów. A jeżeli ten paramweetr istnieje w zestawie parametrów, wtedy ustawiamy zmienną: {{Code|czy_modyfikacja}}, na wartość {{Code|false}}, i uruchamiamy funkcję: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, do kompletowania w taki sposób by zawartość znacznika {{Tag|div}} zastąpić jego zawartością, wtedy i tylko wtedy gdy funkcja: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, na podstawie analizy parametru: {{Code|tekst}}, zwróci wartość {{Code|true}}, a jeśli nie zwróci, to ten parametr nie jest kompletowany, w przeciwnym wypadkujest zastępowany jego zawartością odpowiednio zakodowaną. A zaraz przed nią zmienna {{Code|czy_modyfikacja}} przybiera wartość {{Code|true}}. Po wyjściu z funkcji kompletowania jest sprawdzana zmienna {{Code|czy_modyfikacja}}, czy przybiera wartość prawdziwą, a jeżeli tak, to zwracanajest wartość z tej funkcji. {{HNumer|1= ========= {{Śródtytuł|AnalizaSzablonu}}{{Code|AnalizaSzablonu}} ========= }} Uruchamiamy funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|b=tak}}}}, a jeżeli ona zwróci jakiś wynik, to ona właśnie to zwróci, przeciwnie są usuwane szablony z tabel, jeżeli do nich pasują, ale tu pasuje względem jego nazwy, tu mamy na myśli: {{LinkPatrz|p.szablony_do_usuwania_z_tekstu}}, {{LinkPatrz|p.szablony_bez_generowania_napisowego}} i {{LinkPatrz|p.szablony_nie_typowo_linkowe}}. Jeżeli pasuje, do któryś z tych tabel to funkcja zwraca ciąg pusty, przeciwnie zwraca {{Code|nil}}. {{HNumer|1= ========= Parametry funkcji {{LinkŚródtytuł|AnalizaSzablonu}} ========= }} Funkcja analizująca szablon pod pewnymi warunkami zamieniające pewne zawartości wywołań szablonów na wartości puste lub nie zwracające żadnej wartości. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function AnalizaSzablonu(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Gdy funkcja {{LinkŚródtytuł|AnalizaSzablonu}}, zwróci wartość odpowiadających łańcuchowi znaków, wtedy funkcja zwraca wartość pustą, to wtedy funkcja: {{LinkŚródtytuł|FuncSzablon}}, ma zwracaną wartość równą tej wartości, a jeżeli nie ma jej, to ona idzie dalej. {{HNumer|1= ========= Modyfikacja napisów wprowadzenia tekstu szablonowych ========= }} Uruchamiana jest funkcja {{LinkŚródtytuł|UsuwanieZnacznikowe}}, która zwraca dwie wartości {{Code|szablon}} i {{Code|czy_center}}. {{HNumer|1= ========= Szablony generowania nagłówków - generowanie zawartości na podstawie pewnych wniosków ========= }} {{Tab}}Jeżeli pierwszy parametr tej funkcji zwróci wartość nie {{Code|nil}}, wtedy sprawdzamy, czy nazwa szablonu jest z tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, jeżeli jest, to liczy jego zawartość, a jeśli ona istnieje, wtedy sprawdzamy, czy w niej jest napis wprowadzenia tekstu według funkcji: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}}, lub czy jest to pozycja listy z: {{Code|{{sr|#p.CzyJestListaNapisuWprowadzeniaTekstu|b=tak}}}}, a jeżeli wszystko się zgadza, wtedy funkcja zwraca tą zawartość z drugim parametrem {{LinkPatrz|tabela_parametrow_szablonu}}. {{HNumer|1= ========== Aktualizacja bazy danych kodowania '''szablonowego''' zakodowanego wikikodu ========== }} Po wyjściu z tej funkcji jest sprawdzane, czy funkcja zwróci wartość odpowiadająca prawdziwej, jeżeli tak, to ona zwróci ten wynik, jeżeli nie, to aktualizowana jest pozycja z: {{Code|szablon}} {{Code|{{=}}}} {{Code|szablon}}, według: <syntaxhighlight lang="lua"> tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; </syntaxhighlight> A sama funkcja {{LinkŚródtytuł|FuncSzablon}} zakańcza się z wartością {{Code|nil}}. {{HNumer|1= ========= Szablony generowania nagłówków - bez modyfikacji szablonów napisu wprowadzenia tekstu ========= }} A gdy {{Code|szablon}} odpowiada wartości fałszywej, a {{Code|czy_center}} prawdziwej, wtedy sprawdzamy, czy nazwa szablonu pasuje do tej samej tabeli, co poprzednio dla prawdziwej {{Code|szablon}}, ale tutaj jest fałszywe, wtedy wskazanie jest podobne, funkcja zwraca podobnie jak poprzednio, ale tym razem bez tabeli parametrów, w przeciwnych wypadkach ta funkcja zwraca wartość {{Code|nil}}. {{HNumer|1= ========= Szablony znaczników odpowiadające właściwym znacznikom '''HTML''' innym niż centrowania i nagłówków ========= }} A gdy {{Code|szablon}} i {{Code|czy_center}} są równe odpowiadającej wartości fałszywej, wtedy sprawdzamy, czy szablon jest znacznikiem szablonowym z tabeli: {{LinkPatrz|p.znaczniki_szablonowe}}. A jeżeli ma parametr z zawartością, to go przekształcamy szablonem {{LinkŚródtytuł|ZamienNaKody}}, i zwracamy jego wynik. Dla funkcji: {{LinkŚródtytuł|FuncSzablon}}, jeżeli ma wynik odpowiadający prawdziwej wartości, wtedy jest zwracane {{Code|wynik,nil,true}} - co tutaj odpowiada zastępowaniom wartości, przeciwnie {{Code|nil,true}}, co tutaj odpowiada nierozwijaniu tej wartości. {{HNumer|1= ======== Dalszy opis funkcji - obiekty nieszablonowe, czyli typu ZNACZNIK i inne ======== }} {{Tab}}Dla {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}}, gdy nazwa znacznika nie jest {{Tag|center}} lub znacznikem wprowadzenia tekstu z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, wtedy gdy jest nierówny: {{Tag|ref}}, {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, zatem definiujemy funkcją {{Code|fun}}, która zwracamy w postaci parametrów, do funkcji jako w zestawie argumentów zrzuconych: {{Code|fun,nil,true}}. {{HNumer|1= ========= Znaczniki inne niż {{Tag|div}} ========= }} Funkcja {{Code|fun}} ma definicję, która nie przyjmuje żadnych parametrów. W tej funkcji, gdy znacznik nie jest równy {{Tag|div}}, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a potem na jego wyniku {{LinkŚródtytuł|ZamienNaKody}}, a jeżeli zawartość nie istnieje, to ona zwróci wynik równy ciągowi pustemu. {{HNumer|1= ========= Znaczniki warstw {{Tag|div}} ========= }} A gdy jest jednak tym znacznikiem, to wtedy używamy funkcji dla parametru {{Code|tekst}}, tzn. nie spełnia warunku: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, wtedy przetwarzamy jego wynik, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.gsub|b=tak}}}}, i też {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a na samym końcu przetwarzamy wynik funkcją {{LinkŚródtytuł|ZamienNaKody}}, na zawartości wynikającej z elementów znacznikowych. A gdy spełnia jednak ten warunek, to uruchamiamy funkcję: {{LinkŚródtytuł|ZamienNaKody}} na wyniku z: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, jeżeli zawartość istnieje. Gdy zawartość tego znacznikanie nie istnieje lub jest pusta, to funkcja zwróci wynik równy ciągowi pustemu. {{HNumer|1= ========= Inne znaczniki niż rozważane wcześniej jako podstawa ========= }} {{Tab}}Gdy znacznik nie jest tym, co myślimy, wtedy jest sprawdzana zawartość, jeśli istnieje, z funkcji: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} lub {{Code|{{sr|#p.CzyJestListaNapisuWprowadzeniaTekstu|b=tak}}}}, a jeżeli wszystko się zgadza, to zwracany jest wynik taki symbolizujący według dokumentacji zastąpienie znacznika jego zawartośścią. {{HNumer|1= ========= Znaczniki zostały zmodyfikowane przez funkcję obrabające znaczniki do jednej linii ========= }} {{Tab}}Jeżeli funkcja nie przeszła dalszych etapów, to sprawdzany jest wynik funkcji {{LinkŚródtytuł|UsuwanieZnacznikowe}}, jeżeli ma wartość równą odpowiadającej prawdziwej, wtedy w tabeli bazy kodów {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} dla tego obiektu i kodu jest naprawiana treść według tego wyniku uzyskanego z tej ostatniej funkcji. {{Tab}}Dalej rzucany jest wynik nierozwijania, jeśli funkcja doszła do tego etapu. {{HNumer|1= ======== Inne znaczniki specjalne mechanizmu MediaWiki oraz linki zewnętrzne i wewnętrzne ======== }} Gdy obiekt jest równy {{Code|PRE}} i zawartość składa się jego z samych odstępów, wtedy on jest zastępowany ciągiem pustym. Przeciwnie jest zrzucany wynik nierozwijania tego elementu. {{HNumer|1= ========= Obiekty linków zewnętrznych i wewnętrznych ========= }} Gdy mamy obiekt równy: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|b=tak}}}}, opisaną wcześniej, w nim znaczniki są zamieniane na ich zawartość, przeciwnie dla innych elementów zrzucany jest wynik nierozwijania. Gdy dało się wtedy zaktualizować zmienną: {{LinkPatrz|szablon}}, to wtedy zmieniamy zawartość dla tego obiektu i kodu w tabeli bazy kodowania: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Sprawdzamy, czy ten link symbolizuje element spisu według funkcji: {{Code|{{sr|#p.CzyElementSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli nie to funkcja zwraca wartość pustą, którą jest zastępowany taki link. {{HNumer|1= ======== Wikitabele jako obiekty kodowania szablonowego, czyli elementy typu WIKITABELA ======== }} Gdy obiekt jest o wartości {{Code|WIKITABELA}}, to wtedy wykorzystujemy zestaw funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.gsub|b=tak}}}} i {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, aby przetworzyć tekst z tabelką, do zwykłych odnośników z linkami w wikitabeli, na przykład. Na samym końcu funkcja zwraca wynik do zastąpienia takiej wikitabeli pewnym ciągiem w odpowiedni udokomentowany sposób. ====== Zmiana tekstu krok 2 ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w mechanizmie '''MediaWiki''', ta funkcja działa dla każdej linii w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu krok 3 ====== Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, napisu wprowadzenia tekstu, których ich nazwy pasują do: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia, a szablony o nazwach z tabeli: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiana jest nowa linia wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według funkcji podanej w nagłówku, ale też w funkcji w tabeli transportu, czyli {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. ==== Kod dalszy bez wybranej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ==== Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{LinkPatrz|czy_rozdzialy_analizowac}}, zatem: <syntaxhighlight lang="lua"> local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil); </syntaxhighlight> A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcja inicjująca jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}. Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{Code|{{sr|#p.IterTekst|b=tak}}}}. ==== Kod wspólny ==== ===== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ===== W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Wystepowanie(linia,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem. Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}. ====== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ====== Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego argumentami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinie(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. {{Tab}}Dla otrzymanego z ostatniej funkcji zmiennej {{Code|kom}}, która odpowiada wartości fałszywej, sprawdzamy, czy takie coś jak artykuł istnieje, liczymy jego nazwę z funkcji: {{Code|{{sr|#p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu|p=StronicowyParser/Potrzebne}}}}, i sprawdzamy, czy według uzyskanej tej nazwy, czy to jest okładka. Jeżeli to jest artykuł niebędący stroną główną podręcznika lub artykuł podręcznikowy niebędący okładką, wtedy funkcja zrzuca wynik {{Code|1}}, przeciwnie dla istniejącej okładki, dla innego rozgałęzienia, funkcja ustawia wartość: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} na wartość {{Code|true}}, i ta funkcja nie zrzuca żadnego wyniku. {{Tab}}Przeciwnie, wtedy funkcja zrzuca wynik {{Code|0}}. {{Tab}}Funkcja w innych niż opisane zawsze nie zrzuca żadnego wyniku, co odpowiada wartości zrzucanej {{Code|nil}}. ====== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ====== Funkcja rozważa ogólnie linie z obietami {{Code|SZABLON}} albo {{Code|LINKW}} lub {{Code|LINKZ}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinieZnacznikowe(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} {{LinkPatrz|zawartosc}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu. Funkcja uruchamia funkcję iteratora przy pomocy generatora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, a później dla funkcji w niej zdefiniowanej funkcji, która dla wartości zwracanej {{Code|nil}} przerywa od razu pętlę. Po definicji pewnych funkcji jest uruchamiana iteracja otrzymanego z tej funkcji. Pętla na pewno jest zatrzymana po wykorzystaniu wszystkich danych. {{HNumer|1= ======= {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ======= }} Funkcja właściwa do rozwazania szczególnego z obiektami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CenterZnacznikLinia(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} lub {{Code|1}}, wtedy funkcja się zakańcza, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga). {{HNumer|1= ======= Dalszy opis funkcji ======= }} Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce. W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana. ====== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ====== Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function spis_tresci(wystepowanie_linkow,hn_number)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami, * {{Code|hn_number}} {{Patrz|hn_number}} - czy to jest zawartość szablonu centrowania. Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, czy w spisie są jakieś początkowe artykuły, które nie należą do żadnego rozdziału, tzw. artykuły wstępne. {{HNumer|1= ======= {{Śródtytuł|Spis}}{{Code|Spis}} ======= }} Jest to funkcja szczególna do rozwazania szablonów centrowania spisów treści. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Spis(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, wtedy dla istniejącego wpisu w pierwszej wartości sprawdzanej dla artykułu książki, funkcja sprawdza funkcją: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}, odpowiednimi wartościami, i jest zwracana wartość {{Code|1}}. Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}. W pozostałych wypadkach funkcja nie zwraca żadnego wyniku. {{HNumer|1= ======= Dalszy opis funkcji ======= }} Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany. Przeciwnie w innym wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.trim|b=tak}}}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, połączonej z metatabelką, gdy sprawdzanie przeszło, wtedy inicjowane są zmienne: {{LinkPatrz|tak_ce_spis_tresci}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{LinkPatrz|hn_number}} i {{LinkPatrz|wystepowanie_linkow}}, dalej jest zwracana wartość {{Code|1}}. W innym wypadku nie jest zwracana żadna wartość. ====== Kod dalszy funkcji ====== {{HNumer|1= ======= Warunki wstępne ======= }} Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, przeciwnie z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}. Gdy mamy włączoną opcję: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, czyli dla tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, wtedy możemy powiedzieć, ze również {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane. {{Tab}}Gdy: {{LinkPatrz|wystepowanie_linkow}}, istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału na początku otrzymanego spisu treści dla jego początkowych linii. {{HNumer|1= ======= Iterator po rozważanej zmiennej, czyli iteracja po tekście ======= }} Uruchamiamy iterator ze zmienną: {{LinkPatrz|wystepowanie_linkow}}, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest później uruchamiana iteracja, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych. Funkcja wchodzi do ciała właściwego funkcji, gdy: {{LinkPatrz|obiekt}}, jest równe {{ZobaczTeż|obiekt}}: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}. {{HNumer|1= ======== Obiekt szablonowy, czyli typu SZABLON ======== }} W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu z: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, z tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczone {{Code|szablon_spis_tresci_zawartosc}} z zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}. A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, a gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość {{Code|true}}, przeciwnie na {{Code|false}}. {{HNumer|1= ======== Obiekt znacznikowy, czyli typu ZNACZNIK ======== }} A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, a gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a potem z tym parametrem jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. {{HNumer|1= ======== Obiekty linkowe, czyli typu: LINKW i LINKZ, a więc linki wewnętrzne i zewnętrzne ======== }} Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, przeciwnie na {{Code|false}}. ====== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ====== {{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}} jest {{Code|true}}, i gdy zmienna {{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}, jest bez wartości, wtedy dla {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst nie kończy się za nie na {{Code|.}}, dla określonej linii. W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, przeciwnie ustawiana jest wartość: {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. A gdy {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu, i zwracana jest wartość pusta z drugim nienilowym argumentem, gdy występowań liczonych jest większa niż zero, przeciwnie wartość {{Code|nil}}, to oznacza ze zmienna tekstowa w iteratorze nie jest podmieniana na zmienną {{Code|tekst}}, przeciwnie jest podmieniana. {{Tab}}Gdy {{LinkPatrz|podrecznik}} ma wartość {{Code|false}}, wtedy dla żadnej wartości {{LinkPatrz|wartosc}}, gdy zmienna: {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem jest ciąg znaków określone wzorem {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}}, jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, a jeśli jednak tak, to zmienna: {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, w innym rozgłazieniu instrukcji '''jeśli''' dla: {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}. {{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, wtedy dla {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, też jest zakańczana, w przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}. ====== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ====== Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}. ====== Użytek wartości ze zmiennej {{Code|tak}} ====== Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{LinkPatrz|tak}} jest równa wartości prawdziwej, to uruchamiana jest funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, przeciwnie bezparametrowo {{Code|funkcja2}} {{LinkPatrz|funkcja2}}. ==== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ==== Liczymy poszczególne linie z iteratora otrzymanego z {{LinkPatrz|iter_main}}. Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany}}. Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{LinkPatrz|nazwa_rozdzialu}} i {{LinkPatrz|poziom_rozdzialu}}. Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{LinkPatrz|czy_rozdzialy_analizowac}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy to jest jakiś rozdział, przeciwnie, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{LinkPatrz|linia}} i drugą zdefiniowaną funkcją i trzecią, który z parametru {{LinkPatrz|nazwa_rozdzialu}} usuwa jej wartość. {{Tab}}Tą pierwszą funkcją, jest tak gdy: {{LinkPatrz|tak_ce_spis_tresci}}, z wartością odpowiadającej fałszywej, ustawiamy {{LinkPatrz|nazwa_rozdzialu}} na {{Code|Spis treści}}, a {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. Przeciwnie sprawdzamy wartość zmiennej {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy rozdział jego i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. Przeciwnie, gdy nie ma takiego czegoś jak numeracja (nawet jego pusta) i rozdział, to {{LinkPatrz|nazwa_rozdzialu}} jest ustawiana na {{LinkPatrz|szablon_spis_tresci}}, a {{LinkPatrz|numeracja_rozdzialu}} na {{Code|nil}}. A jeżeli {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{LinkPatrz|numeracja_rozdzialu}} ustawiona jest wtedy na {{Code|nil}}. Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając na zmienną liczbową zmienną: {{LinkPatrz|tak_ce_spis_tresci}}, a jeżeli ona nie istnieje, to przydzielamy wartości {{LinkPatrz|poziom_rozdzialu}} wartość {{Code|2}}, przeciwnie wartość {{LinkPatrz|czy_rozdzial_naglowka_hn}}. Na podstawie przeciwnej wartości {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu}} ustalamy na wartość {{Code|nil}}. Gdy nie udało się znaleźć {{LinkPatrz|nazwa_rozdzialu}}, to potrzebne do tego parametry liczymy z funkcji {{LinkPatrz|parser}}, według: <syntaxhighlight lang="lua"> local linia_temp; linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Ta funkcja sprawdza czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, w przypadku przeciwnym zwraca ona wynik tylko {{Code|nil}}. ==== Wartości zwracane przez iterator ==== Gdy: {{LinkPatrz|nazwa_rozdzialu}}, gdy istnieje, wtedy ustalamy zmienną: {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}: <syntaxhighlight lang="lua"> {naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany; </syntaxhighlight> Gdzie parametry wartości zwracanych: * {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str}} w kodzie, * {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu}}, * {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu}}, * {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany}}. Gdy {{LinkPatrz|__FUNKCJA2}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji. Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2}} z parametrem identyfikującym, że to jest rozdział {{LinkPatrz|nazwa_rozdzialu}}, czy tekst rozdzialu {{LinkPatrz|tekst_rozdzialu}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> b0pxyslkin4opjiay0hhhl2prvht8jd 548305 548304 2026-07-25T19:06:47Z Persino 2851 /* Kod dalszy funkcji */ 548305 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Wstęp == Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. === Rozdziały === * Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane: ** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}}, ** Inne (nierównaniowe): *** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}}, *** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}}, * Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}}, * Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}. === Zmienne spotykane w opisywanych tutaj funkcjach === ==== Zmienne bazy ==== W poniższych funkcjach często spotykamy parametry: * {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst przeważnie zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje, * {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony szablonowe jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych. Jest liczona bez nazwy przestrzeni {{Np|Template|link=tak}}, w tej przestrzeni, a w innych z przestrzeniami, a w {{Np|(main)|link=tak}} z dwukropkiem na początku. ==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ==== * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów. ==== Baza danych wikikodu ==== Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu. ===== Zmienne bazy danych i do nich parametrów ===== * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy. ===== Inne elementy bazy ===== * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku. ==== Funkcje bazy danych i do nich parametrów ==== * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Inne funkcje ==== ===== Funkcje bazy ===== * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych, * {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej). ===== Inne ===== * {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych. ==== Elementy bazy ==== * {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie, * {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. ==== Inne zmienne ==== * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów === Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji) local tab_obiekt=tab_analiza[obiekt]; if(not tab_obiekt)then return;end; for _,wartosc in pairs(tab_obiekt)do local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(element_wartosc)then element_wartosc[kod]=nil; end; end; end; </syntaxhighlight> Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy === A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne: <syntaxhighlight lang="lua"> local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji) tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; end; </syntaxhighlight> Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli. Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}. == {{Code|p.NapisWprowadzeniaTekstu}} == Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - tekst wnętrza rozdziału, * {{Code|poziom}} - numer całkowity dodatni poziomu. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial="Tekst rozdziału"; local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4); local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8); </syntaxhighlight> Wyniki użycia w zmiennych: <syntaxhighlight lang="lua"> local napis_rozdzialu1="\n====Tekst rozdziału====\n"; local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n"; </syntaxhighlight> == {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} == Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu. Defnicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu, * {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu, * {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}}, * {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu. Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę. Przykłady użycia, używając omawianego szablonu: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}} {{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}} </syntaxhighlight> Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki: <syntaxhighlight lang="lua"> local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ==="; local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>"; </syntaxhighlight> A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną): <syntaxhighlight lang="lua"> local zawartosc="Zawartość znacznika"; local zawartosc="Zawartość znacznika"; </syntaxhighlight> W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się: <syntaxhighlight lang="lua"> if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end; if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end; </syntaxhighlight> Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić). == {{Code|p.NapisWprowadzeniaTekstuHNumer}} == Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHNumer(parametr)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też. Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Nagłówek tekstu ===}} {{HNumer|1= ======= Nagłówek tekstu =======}} </syntaxhighlight> Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody: <syntaxhighlight lang="lua"> ---- Nagłówki typowo dodatnie local tekst1="=== Nagłówek tekstu ==="; local tekst2="======= Nagłówek tekstu ======="; ---- Wywołania tworzące nagłówki local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1); local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2); </syntaxhighlight> Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}: <syntaxhighlight lang="lua"> local naglowek1="<h3>Nagłówek tekstu</h3>"; local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>"; </syntaxhighlight> == {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} == Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana, Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="====== Tekst nagłówka ======"; local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst); </syntaxhighlight> Wynikiem działania tego przykładu: <syntaxhighlight lang="lua"> local naglowek="Tekst nagłówka"; local poziom=6; </syntaxhighlight> Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie. == {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} == Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local zawartosc="Tekst nagłówka"; local poziom=5; </syntaxhighlight> == {{Code|p.CzyJestNapisWprowadzeniaTekstu}} == Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n"; local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst); </syntaxhighlight> W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli: <syntaxhighlight lang="lua"> local napis_pierwszy_w_tekscie="== Tekst nagłówka == "; </syntaxhighlight> Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}. == {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w który ma znajdować napis wprowadzenia tekstu w postaci listy. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n"; local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}. == {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} == Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem. Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny). Przykłady funkcji: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst1="====== Tekst nagłówka ======"; local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1); local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local czy_jest_naglowek1,jaki_naglowek1=true,true; local czy_jest_naglowek2,jaki_naglowek2=true,false; </syntaxhighlight> == {{Code|p.WierszHNumer}} == Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WierszHNumer(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - parametr z tymi nagłówkami. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>"; local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n"; </syntaxhighlight> == {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{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> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{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> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja wykorzystuje: * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, * {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}. == {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} == Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez. Zwracane wartości: * {{Code|rozdzial}} - rozdzial bez numeracji, * {{Code|numetracja}} - numeracja. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja="5.1.2.3."; </syntaxhighlight> ; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja=""; </syntaxhighlight> == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}}, * {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}}, * {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} == Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametr funkcji: * {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}. Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa): <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="Spis treści"; local tablica_analizy_obiektow_strony_dany_modul={}; ---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); ---- Koniec tej części kodu; local tablica_danych_parametrow_szablonu_strony={}; local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Funckja w tym wypadku zwraca wynik: <syntaxhighlight lang="lua"> local rozdzial,czy_tak="Spis treści",true; </syntaxhighlight> Weźmy inny przykład: <syntaxhighlight lang="lua"> ---- Przykład pierwszy; local linia="'''Nagłówek'''"; local rozdzial,czy_tak="'''Nagłówek'''",true; ---- Przykład drugi; local linia="'''Nagłówek'''."; local rozdzial,czy_tak="'''Nagłówek'''.",false; </syntaxhighlight> == {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} == Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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: * {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}}, * {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka, * {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}. Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="''[[Książka/Artykuł|Artykuł]]''"; local tablica_analizy_obiektow_strony_dany_modul={}; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local przedrotek_listy=":"; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; ---- Tutaj funkcja zwróci wartość: true; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ---- Tutaj funkcja zwróci wartość: false; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); </syntaxhighlight> == {{Code|p.HnNumerWprowadzeniaTekstu}} == Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa}} - nazwa tagu, * {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''. Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w: <syntaxhighlight lang="lua"> p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; </syntaxhighlight> Funkcja posługuje się jedynie na tych typach znaczników, a nie innych. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h5"; local atrybuty={}; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja zwróci wynik: {{Code|5}}. ; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h6"; local atrybuty={};atrybuty["class"]="mw-hnumber-9"; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja daje wynik: {{Code|9}}. == {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} == Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="5.1.6. Rozdział"; local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local numeracja,rozdzial="5.1.6.","Rozdział"; </syntaxhighlight> == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach. ===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania napisu wprowadzenia tekstu, funkcja dopuszcza rozdziały typu: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem) i {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), wtedy zwraca {{Code|nil}}. Funkcja liczy rozdział i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}, a jeżeli tak z policzonego rozdziału udało się wykluczyć go przy pomocy funkcji: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, wtedy numeracja i rozdział są przyrównywane do wartości {{Code|nil}}, przeciwnie pozostawia je policzone przy pomocy {{LinkPatrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza, czy rozdział jest centrowany szablonami normalnymi, które są opisywane, czy to są szablony normalne centrowania, przy pomocy tabeli {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak to liczy jego zawartość, który jest wyświetlany w postaci centrowanej treści, co na podstawie tej wartości jest rewidowany rozdział funkcją: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}. ==== Zwracany iterator linii ==== Funkcja ma w sobie zwracany iterator, który można wykorzystać do iterowania linii {{LinkPatrz|linia}}, aby sprawdzić, czy to jest rozdział, czy zwykły tekst. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Sukces wyodrębnianiu rozdziału ====== Jeżeli to dało się wyodrębnić {{ZobaczTeż|rozdział}}, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z rozdziału numeracją usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany rozdział i numeracja z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== {{HNumer|1= ======= Wykryta linia cudzysłowu ======= }} W przeciwnym wypadku jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy rozdział jest równy linii, a poczatek i numeracja są równe ciągowi pustemu. {{HNumer|1= ======= Adresu URL linii ======= }} W innym wypadku, gdy poprzedni warunek nie jest spełniony, sprawdzamy, czy któreś z poszczególnych ciągów z czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) ===== Gdy nie jest spełniony warunek {{LinkZobaczTeż|rozdział}}, to wtedy to samo robimy, co tam, tylko bez znaków początku pozycji listy, który usunęliśmy z linii, rozdzielając na dwa łańcuchy znaków. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii podanemu do funkcji. {{Hr}} ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy funkcję iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza. ===== Obiekt szablon, czyli typu SZABLON ===== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, wtedy ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. A dla szablonów będących linkami sprawdzanymi tabelami: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}} i {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}}i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. A wiec wtedy na podstawie tych wartości prawwdziwej, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ===== Linki wewnętrzne i zewnętrzne ===== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak innicjowane jak tam, a tutaj funkcja zwraca wartość domyślną {{Code|nil}}. ===== Obiekty specjalne ===== Podobnie jest dla obiektów: {{Code|PRE}}, {{Code|MATH}}, {{Code|ŹRÓDŁO}} i {{Code|INNEPRE}}, jest jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, ze zwracaną wartością domyślną {{Code|nil}}. ===== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ===== Gdy obiekt jest równy: {{Code|ZNACZNIK}}, wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. W tym pierwwszym ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}, a w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ==== Iterator w linii ==== Uruchamiamy iterator w pętli do zakończenia danych lub przerwania pętli przez funkcję w iteratorze, przez zwracanie przez nią wartości {{Code|nil}}. Rozdział, początek pozycji listy i numeracja, jeżeli poszczególne istnieją, to wtedy działane jest na nich funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. ==== Zwracane parametry (procedura) ==== Funkcja na wiele sposobów może wsazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. Funkcja ta itewratora zwraca według schematu {{Patrz|procedura zwracanych wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdziału_wartosc_ujemna_lub_dodatnia,poczatek,numeracja,czy_rozdział_centrowany; </syntaxhighlight> ===== Rozdział bez specjalnych obiektów ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, na {{Code|false}}, jeśli nie,wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Za pomocą funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, zwracamy wartość rozdziału, jeżeli to jest rozdział zerowy, druga wartość jest {{Code|true}}, jeżeli rozdział nie kończy się na kropkę, znak: {{Code|.}}, a jeżeli końcu się, to funkcja zwraca {{Code|nil}}, czyli ten rozdział, tak naprawdę, nie jest rozdziałem niedodatnim. {{Tab}}Jeśli jednak jest takim rozdziałem, to sprawdzane, czy długość rozdziału jest mniejsza lub równa zmiennej {{Code|maksymalny_rozmiar_rozdzialu_zerowego}}, który przyjmuje wartość ustalaną przed iteratorem, ale w funkcji zwracającej iterator, równą: {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Później jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Przeciwnie jest zwracane {{Code|nil}}. {{Tab}}Sprawdzane, czy {{Code|poczatek}} i {{Code|numeracja}}, czy są nepusta. A gdy niierma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. ===== Rozdział centrowany ===== Gdy zmienna {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli prezyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przeciwnie zwraca {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} ===== Jeżeli w linii odkryto taki rozdział oznaczony, z któryś tych znaczników, wtedy jeśli numeracja i rozmiar nieistnieją, wtedy iterator zwraca wartość {{Code|nil}}, przeciwnie jest liczony numer rozdziału z funkcji {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, dalej jest zwracany wynik {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}}) ===== Jest sprawdzane,czy numeracja i rozdział, czy niestneją, lub czy są równe puste, wtedy jest zwracane {{Code|nil}}, przeciwnie jest rewidowane, czy funkcja spełnia zasadę maksymalności rozdziału zerowego ze zmiennej {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}} funkcją, jeżeli jest spełnione, to: {{Tab}}Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział przed cudzysłowek ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> Przeciwnie funkcja zwraca wartość {{Code|nil}}, czyli wtedy to nie jest rozdział. {{tab}}W innym wypadku, jeżeli poczatek jest jest pusty, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}, lub przeciwnie mamy {{Code|nil}}. == {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} == Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną. Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> {{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}; </syntaxhighlight> Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko: <syntaxhighlight lang="mediawiki"> '''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}. </syntaxhighlight> == {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przerobienia. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} == Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony . Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu funkcji. Parametry ramki funkcji tablicy transportu: * {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony, * {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta. Przykłady użycia: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Uzyskane wyniki w postaci nierozwiniętego wikikodu: <syntaxhighlight lang="mediawiki"> <templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span> </syntaxhighlight> == {{Code|p.NumerSekcjiStrony}} == Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumerSekcjiStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}. == {{Code|p.TekstWprowadzeniaTekstu}} == Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu, * {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Przykład użycia: <syntaxhighlight lang="lua"> local strona="Pomoc:Spis treści"; local title=mw.title.makeTitle('',strona); local tekst=title:getContent(); local id_rozdzialu1="Pomoc Wikibooks"; local id_rozdzialu2="Wstęp"; local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały"); tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); </syntaxhighlight> Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami: <syntaxhighlight lang="lua"> local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}."; </syntaxhighlight> == {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami, * {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}. Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy, * {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość, * {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), * {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jego definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej|klasa=zn_ogromne}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa|klasa=zn_ogromne}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, czy nie, gdy wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona przyjmuje wartość odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami i szablonami nowej linii i kresek w linii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Funkcja znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablony: {{s|Br}} i {{s|Hr}}, zamienia na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa nowe zagnieżdzone linie w nowych liniach z szablonami i znacznikami centrowania, pozostawiając główną nową linię z szablonem i znacznikiem centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Te linie mogą być oznaczone szablonami: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, lub znacznikami: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. Funkcja zwraca tak zmodyfikowany tekst, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu centrowania przy pomocy funkcji: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, nowe linie, nawet kresek, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, nowe linie powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Fukcja zwraca tekst zmodyfikowany lub jego bazę z drugą wartością {{Code|true}}, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikkowany: {{LinkPatrz|szablon}}, podany jako pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy przy pomocy tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, czy znacznikowy, którym jest: {{Tag|center}}, lub określone tabelą: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. W obu tych rozgałęzieniach funkcji jest uruchamiana: {{LinkŚródtytuł|Modyfikacja}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, * Parametry znacznikowe: ** {{Code|parametr1}} {{Patrz|parametr1}} - to nic innego jak: {{Code|nazwa}} {{Patrz|nazwa}}, czyli jak nazwa znacznika, ** {{Code|parametr2}} {{Patrz|parametr2}} - to nic innego jak: {{Code|zawartość}} {{Patrz|zawartość}}, czyli zawartość znacznika, ** {{Code|parametr3}} {{Patrz|parametr3}} - to nic innego jak: {{Code|tab_atrybuty}} {{Patrz|tab_atrybuty}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (ale zwracane bez niej, a z wartością {{LinkPatrz|szablon}}, która się nie zmieniła), z drugą wartością {{Code|true}}. Funkcja jedynie działa w dwóch sprawdzanych zakresach, tzn. {{Code|SZABLON}} i {{Code|ZNACZNIK}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|trimowanie}} - czy jest włączone trimowanie komórki. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością, a ta nowa jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}}, to na poczatek tego czegoś nowego jest dodawany odstęp. Jeżeli trimowanie jest wyłączone, to na poczatek są dodawane dwie nowe linie, a na końcu jedna, i to jest zwracane, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną, lub nie, zawartość. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni {{LinkPatrz|czy_rozdział_dodatni}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni. Funkcja wydziela poszczególne linie wewnętrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, tobi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}), a w nim dla elementu {{Code|SZABLON}}, nowe linie: {{s|Br}}, nawet kreskowe: {{s|Hr}}, są zamieniane na spację. Szablony napisu wprowadzenia tekstu: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, są zamieniane na ich zawartości. A dla elementu {{Code|ZNACZNIK}}, znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, są zamieniane na spację. A całe naczniki, tzn.: {{Tag|center}} i {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, są zamieniane na ich zawartości. Dla znacznika: {{Tag|pre}}, czyli obiekt {{Code|PRE}}, gdy ona nie ma zawartości, to zamiast niego jest wyświetlana zawartość równą jednej spacji, przeciwnie znaki specjalne tagu {{Tag|nowiki}} są zamieniane na znaki kodu {{Strong|HTML}}, czyli według funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}. Gdy mamy rozdział dodatni według {{LinkPatrz|czy_rozdział_dodatni}}, wtedy znaki nowej linii {{Code|\n}} zawartości są zamieniane na znak jednej spacji w przeciwnym wypadku takiego czegoś zwracana jest zmodyfikowana zawartość. Podobnie robimy dla obiektu {{Code|ŻRÓDŁO}}, a dla {{Code|NOWIKI}} też podobnie, ale prawie, bo nie ma sprawdzenia, czy to jest rozdział dodatni, którym jest ta sprawdzana linia, ale poszczególne nowe linie są zamieniane tam na spację. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu krok 1 ====== Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji w odpowiednie kody {{Strong|HTML}}, lub w edytować linki zewnętrzne {{Code|LINKZ}} bez nazwy, by napisać ich numerki uruchomień, aby była zachowana kolejność numerowania szablonów, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}}, która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, zdefiniowane w tym module. {{HNumer|1= ======= Opis funkcji {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}, jako pierwszy argument modyfikujący tekst, w przypadku innym niż szablony i znaczniki referencji - nazwane i nienazwane, oraz numerujące linki zewnętrzne nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, * Parametry znacznikowe: ** {{Code|parametr1}} - jak w: {{LinkPatrz|parametr1}}, jest to: {{LinkPatrz|tabela_parametrow_szablonu}}, ** {{Code|parametr2}} - jak w: {{LinkPatrz|parametr2}}, jest to: {{LinkPatrz|nazwa_szablonu}}, ** {{Code|parametr3}} - jak w: {{LinkPatrz|parametr3}}, jest to: {{LinkPatrz|tabela_modyfikatorow}}, * {{Code|tekst}} - jak w: {{LinkPatrz|tekst}}. Gdy mamy {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, wtedy uruchamiamy funkcję: {{HNumer|1= ======== {{Śródtytuł|FuncSzablon}}{{Code|FuncSzablon}} dla obiektów szablonowych, czyli typu SZABLON ======== }} Funkcja zastępuje pewne elementy pewnym wyliczonym łańcuchem znaków, lub zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}}, * {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}}, * {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}}. {{HNumer|1= ========= Szablony sztucznego wprowadzenia tekstu ========= }} Sprawdzamy, czy to jest jeden z szablonów z tabeli {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, na podstawie, której sprawdzamy, czy istnieje element tekstu, który jest bardzo ważny w analizie tych szablonów. A jeżeli ten paramweetr istnieje w zestawie parametrów, wtedy ustawiamy zmienną: {{Code|czy_modyfikacja}}, na wartość {{Code|false}}, i uruchamiamy funkcję: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, do kompletowania w taki sposób by zawartość znacznika {{Tag|div}} zastąpić jego zawartością, wtedy i tylko wtedy gdy funkcja: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, na podstawie analizy parametru: {{Code|tekst}}, zwróci wartość {{Code|true}}, a jeśli nie zwróci, to ten parametr nie jest kompletowany, w przeciwnym wypadkujest zastępowany jego zawartością odpowiednio zakodowaną. A zaraz przed nią zmienna {{Code|czy_modyfikacja}} przybiera wartość {{Code|true}}. Po wyjściu z funkcji kompletowania jest sprawdzana zmienna {{Code|czy_modyfikacja}}, czy przybiera wartość prawdziwą, a jeżeli tak, to zwracanajest wartość z tej funkcji. {{HNumer|1= ========= {{Śródtytuł|AnalizaSzablonu}}{{Code|AnalizaSzablonu}} ========= }} Uruchamiamy funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|b=tak}}}}, a jeżeli ona zwróci jakiś wynik, to ona właśnie to zwróci, przeciwnie są usuwane szablony z tabel, jeżeli do nich pasują, ale tu pasuje względem jego nazwy, tu mamy na myśli: {{LinkPatrz|p.szablony_do_usuwania_z_tekstu}}, {{LinkPatrz|p.szablony_bez_generowania_napisowego}} i {{LinkPatrz|p.szablony_nie_typowo_linkowe}}. Jeżeli pasuje, do któryś z tych tabel to funkcja zwraca ciąg pusty, przeciwnie zwraca {{Code|nil}}. {{HNumer|1= ========= Parametry funkcji {{LinkŚródtytuł|AnalizaSzablonu}} ========= }} Funkcja analizująca szablon pod pewnymi warunkami zamieniające pewne zawartości wywołań szablonów na wartości puste lub nie zwracające żadnej wartości. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function AnalizaSzablonu(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Gdy funkcja {{LinkŚródtytuł|AnalizaSzablonu}}, zwróci wartość odpowiadających łańcuchowi znaków, wtedy funkcja zwraca wartość pustą, to wtedy funkcja: {{LinkŚródtytuł|FuncSzablon}}, ma zwracaną wartość równą tej wartości, a jeżeli nie ma jej, to ona idzie dalej. {{HNumer|1= ========= Modyfikacja napisów wprowadzenia tekstu szablonowych ========= }} Uruchamiana jest funkcja {{LinkŚródtytuł|UsuwanieZnacznikowe}}, która zwraca dwie wartości {{Code|szablon}} i {{Code|czy_center}}. {{HNumer|1= ========= Szablony generowania nagłówków - generowanie zawartości na podstawie pewnych wniosków ========= }} {{Tab}}Jeżeli pierwszy parametr tej funkcji zwróci wartość nie {{Code|nil}}, wtedy sprawdzamy, czy nazwa szablonu jest z tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, jeżeli jest, to liczy jego zawartość, a jeśli ona istnieje, wtedy sprawdzamy, czy w niej jest napis wprowadzenia tekstu według funkcji: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}}, lub czy jest to pozycja listy z: {{Code|{{sr|#p.CzyJestListaNapisuWprowadzeniaTekstu|b=tak}}}}, a jeżeli wszystko się zgadza, wtedy funkcja zwraca tą zawartość z drugim parametrem {{LinkPatrz|tabela_parametrow_szablonu}}. {{HNumer|1= ========== Aktualizacja bazy danych kodowania '''szablonowego''' zakodowanego wikikodu ========== }} Po wyjściu z tej funkcji jest sprawdzane, czy funkcja zwróci wartość odpowiadająca prawdziwej, jeżeli tak, to ona zwróci ten wynik, jeżeli nie, to aktualizowana jest pozycja z: {{Code|szablon}} {{Code|{{=}}}} {{Code|szablon}}, według: <syntaxhighlight lang="lua"> tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; </syntaxhighlight> A sama funkcja {{LinkŚródtytuł|FuncSzablon}} zakańcza się z wartością {{Code|nil}}. {{HNumer|1= ========= Szablony generowania nagłówków - bez modyfikacji szablonów napisu wprowadzenia tekstu ========= }} A gdy {{Code|szablon}} odpowiada wartości fałszywej, a {{Code|czy_center}} prawdziwej, wtedy sprawdzamy, czy nazwa szablonu pasuje do tej samej tabeli, co poprzednio dla prawdziwej {{Code|szablon}}, ale tutaj jest fałszywe, wtedy wskazanie jest podobne, funkcja zwraca podobnie jak poprzednio, ale tym razem bez tabeli parametrów, w przeciwnych wypadkach ta funkcja zwraca wartość {{Code|nil}}. {{HNumer|1= ========= Szablony znaczników odpowiadające właściwym znacznikom '''HTML''' innym niż centrowania i nagłówków ========= }} A gdy {{Code|szablon}} i {{Code|czy_center}} są równe odpowiadającej wartości fałszywej, wtedy sprawdzamy, czy szablon jest znacznikiem szablonowym z tabeli: {{LinkPatrz|p.znaczniki_szablonowe}}. A jeżeli ma parametr z zawartością, to go przekształcamy szablonem {{LinkŚródtytuł|ZamienNaKody}}, i zwracamy jego wynik. Dla funkcji: {{LinkŚródtytuł|FuncSzablon}}, jeżeli ma wynik odpowiadający prawdziwej wartości, wtedy jest zwracane {{Code|wynik,nil,true}} - co tutaj odpowiada zastępowaniom wartości, przeciwnie {{Code|nil,true}}, co tutaj odpowiada nierozwijaniu tej wartości. {{HNumer|1= ======== Dalszy opis funkcji - obiekty nieszablonowe, czyli typu ZNACZNIK i inne ======== }} {{Tab}}Dla {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}}, gdy nazwa znacznika nie jest {{Tag|center}} lub znacznikem wprowadzenia tekstu z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, wtedy gdy jest nierówny: {{Tag|ref}}, {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, zatem definiujemy funkcją {{Code|fun}}, która zwracamy w postaci parametrów, do funkcji jako w zestawie argumentów zrzuconych: {{Code|fun,nil,true}}. {{HNumer|1= ========= Znaczniki inne niż {{Tag|div}} ========= }} Funkcja {{Code|fun}} ma definicję, która nie przyjmuje żadnych parametrów. W tej funkcji, gdy znacznik nie jest równy {{Tag|div}}, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a potem na jego wyniku {{LinkŚródtytuł|ZamienNaKody}}, a jeżeli zawartość nie istnieje, to ona zwróci wynik równy ciągowi pustemu. {{HNumer|1= ========= Znaczniki warstw {{Tag|div}} ========= }} A gdy jest jednak tym znacznikiem, to wtedy używamy funkcji dla parametru {{Code|tekst}}, tzn. nie spełnia warunku: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, wtedy przetwarzamy jego wynik, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.gsub|b=tak}}}}, i też {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a na samym końcu przetwarzamy wynik funkcją {{LinkŚródtytuł|ZamienNaKody}}, na zawartości wynikającej z elementów znacznikowych. A gdy spełnia jednak ten warunek, to uruchamiamy funkcję: {{LinkŚródtytuł|ZamienNaKody}} na wyniku z: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, jeżeli zawartość istnieje. Gdy zawartość tego znacznikanie nie istnieje lub jest pusta, to funkcja zwróci wynik równy ciągowi pustemu. {{HNumer|1= ========= Inne znaczniki niż rozważane wcześniej jako podstawa ========= }} {{Tab}}Gdy znacznik nie jest tym, co myślimy, wtedy jest sprawdzana zawartość, jeśli istnieje, z funkcji: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} lub {{Code|{{sr|#p.CzyJestListaNapisuWprowadzeniaTekstu|b=tak}}}}, a jeżeli wszystko się zgadza, to zwracany jest wynik taki symbolizujący według dokumentacji zastąpienie znacznika jego zawartośścią. {{HNumer|1= ========= Znaczniki zostały zmodyfikowane przez funkcję obrabające znaczniki do jednej linii ========= }} {{Tab}}Jeżeli funkcja nie przeszła dalszych etapów, to sprawdzany jest wynik funkcji {{LinkŚródtytuł|UsuwanieZnacznikowe}}, jeżeli ma wartość równą odpowiadającej prawdziwej, wtedy w tabeli bazy kodów {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} dla tego obiektu i kodu jest naprawiana treść według tego wyniku uzyskanego z tej ostatniej funkcji. {{Tab}}Dalej rzucany jest wynik nierozwijania, jeśli funkcja doszła do tego etapu. {{HNumer|1= ======== Inne znaczniki specjalne mechanizmu MediaWiki oraz linki zewnętrzne i wewnętrzne ======== }} Gdy obiekt jest równy {{Code|PRE}} i zawartość składa się jego z samych odstępów, wtedy on jest zastępowany ciągiem pustym. Przeciwnie jest zrzucany wynik nierozwijania tego elementu. {{HNumer|1= ========= Obiekty linków zewnętrznych i wewnętrznych ========= }} Gdy mamy obiekt równy: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|b=tak}}}}, opisaną wcześniej, w nim znaczniki są zamieniane na ich zawartość, przeciwnie dla innych elementów zrzucany jest wynik nierozwijania. Gdy dało się wtedy zaktualizować zmienną: {{LinkPatrz|szablon}}, to wtedy zmieniamy zawartość dla tego obiektu i kodu w tabeli bazy kodowania: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Sprawdzamy, czy ten link symbolizuje element spisu według funkcji: {{Code|{{sr|#p.CzyElementSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli nie to funkcja zwraca wartość pustą, którą jest zastępowany taki link. {{HNumer|1= ======== Wikitabele jako obiekty kodowania szablonowego, czyli elementy typu WIKITABELA ======== }} Gdy obiekt jest o wartości {{Code|WIKITABELA}}, to wtedy wykorzystujemy zestaw funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.gsub|b=tak}}}} i {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, aby przetworzyć tekst z tabelką, do zwykłych odnośników z linkami w wikitabeli, na przykład. Na samym końcu funkcja zwraca wynik do zastąpienia takiej wikitabeli pewnym ciągiem w odpowiedni udokomentowany sposób. ====== Zmiana tekstu krok 2 ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w mechanizmie '''MediaWiki''', ta funkcja działa dla każdej linii w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu krok 3 ====== Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, napisu wprowadzenia tekstu, których ich nazwy pasują do: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia, a szablony o nazwach z tabeli: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiana jest nowa linia wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według funkcji podanej w nagłówku, ale też w funkcji w tabeli transportu, czyli {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. ==== Kod dalszy bez wybranej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ==== Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{LinkPatrz|czy_rozdzialy_analizowac}}, zatem: <syntaxhighlight lang="lua"> local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil); </syntaxhighlight> A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcja inicjująca jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}. Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{Code|{{sr|#p.IterTekst|b=tak}}}}. ==== Kod wspólny ==== ===== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ===== W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Wystepowanie(linia,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem. Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}. ====== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ====== Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego argumentami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinie(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. {{Tab}}Dla otrzymanego z ostatniej funkcji zmiennej {{Code|kom}}, która odpowiada wartości fałszywej, sprawdzamy, czy takie coś jak artykuł istnieje, liczymy jego nazwę z funkcji: {{Code|{{sr|#p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu|p=StronicowyParser/Potrzebne}}}}, i sprawdzamy, czy według uzyskanej tej nazwy, czy to jest okładka. Jeżeli to jest artykuł niebędący stroną główną podręcznika lub artykuł podręcznikowy niebędący okładką, wtedy funkcja zrzuca wynik {{Code|1}}, przeciwnie dla istniejącej okładki, dla innego rozgałęzienia, funkcja ustawia wartość: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} na wartość {{Code|true}}, i ta funkcja nie zrzuca żadnego wyniku. {{Tab}}Przeciwnie, wtedy funkcja zrzuca wynik {{Code|0}}. {{Tab}}Funkcja w innych niż opisane zawsze nie zrzuca żadnego wyniku, co odpowiada wartości zrzucanej {{Code|nil}}. ====== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ====== Funkcja rozważa ogólnie linie z obietami {{Code|SZABLON}} albo {{Code|LINKW}} lub {{Code|LINKZ}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinieZnacznikowe(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} {{LinkPatrz|zawartosc}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu. Funkcja uruchamia funkcję iteratora przy pomocy generatora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, a później dla funkcji w niej zdefiniowanej funkcji, która dla wartości zwracanej {{Code|nil}} przerywa od razu pętlę. Po definicji pewnych funkcji jest uruchamiana iteracja otrzymanego z tej funkcji. Pętla na pewno jest zatrzymana po wykorzystaniu wszystkich danych. {{HNumer|1= ======= {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ======= }} Funkcja właściwa do rozwazania szczególnego z obiektami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CenterZnacznikLinia(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} lub {{Code|1}}, wtedy funkcja się zakańcza, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga). {{HNumer|1= ======= Dalszy opis funkcji ======= }} Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce. W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana. ====== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ====== Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function spis_tresci(wystepowanie_linkow,hn_number)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami, * {{Code|hn_number}} {{Patrz|hn_number}} - czy to jest zawartość szablonu centrowania. Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, czy w spisie są jakieś początkowe artykuły, które nie należą do żadnego rozdziału, tzw. artykuły wstępne. {{HNumer|1= ======= {{Śródtytuł|Spis}}{{Code|Spis}} ======= }} Jest to funkcja szczególna do rozwazania szablonów centrowania spisów treści. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Spis(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, wtedy dla istniejącego wpisu w pierwszej wartości sprawdzanej dla artykułu książki, funkcja sprawdza funkcją: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}, odpowiednimi wartościami, i jest zwracana wartość {{Code|1}}. Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}. W pozostałych wypadkach funkcja nie zwraca żadnego wyniku. {{HNumer|1= ======= Dalszy opis funkcji ======= }} Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany. Przeciwnie w innym wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.trim|b=tak}}}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, połączonej z metatabelką, gdy sprawdzanie przeszło, wtedy inicjowane są zmienne: {{LinkPatrz|tak_ce_spis_tresci}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{LinkPatrz|hn_number}} i {{LinkPatrz|wystepowanie_linkow}}, dalej jest zwracana wartość {{Code|1}}. W innym wypadku nie jest zwracana żadna wartość. ====== Kod dalszy funkcji ====== {{HNumer|1= ======= Warunki wstępne ======= }} Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, przeciwnie z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}. Gdy mamy włączoną opcję: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, czyli dla tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, wtedy możemy powiedzieć, ze również {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane. {{Tab}}Gdy: {{LinkPatrz|wystepowanie_linkow}}, istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału na początku otrzymanego spisu treści dla jego początkowych linii. {{HNumer|1= ======= Iterator po rozważanej zmiennej, czyli iteracja po tekście ======= }} Uruchamiamy iterator ze zmienną: {{LinkPatrz|wystepowanie_linkow}}, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest później uruchamiana iteracja, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych. Funkcja wchodzi do ciała właściwego funkcji, gdy: {{LinkPatrz|obiekt}}, jest równe {{ZobaczTeż|obiekt}}: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}. {{HNumer|1= ======== Obiekt szablonowy, czyli typu SZABLON ======== }} W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie o kluczu z tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczone {{Code|szablon_spis_tresci_zawartosc}} z zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}. A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, a gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość {{Code|true}}, przeciwnie na {{Code|false}}. {{HNumer|1= ======== Obiekt znacznikowy, czyli typu ZNACZNIK ======== }} A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, a gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a potem z tym parametrem jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. {{HNumer|1= ======== Obiekty linkowe, czyli typu: LINKW i LINKZ, a więc linki wewnętrzne i zewnętrzne ======== }} Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, przeciwnie na {{Code|false}}. ====== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ====== {{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}} jest {{Code|true}}, i gdy zmienna {{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}, jest bez wartości, wtedy dla {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst nie kończy się za nie na {{Code|.}}, dla określonej linii. W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, przeciwnie ustawiana jest wartość: {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. A gdy {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu, i zwracana jest wartość pusta z drugim nienilowym argumentem, gdy występowań liczonych jest większa niż zero, przeciwnie wartość {{Code|nil}}, to oznacza ze zmienna tekstowa w iteratorze nie jest podmieniana na zmienną {{Code|tekst}}, przeciwnie jest podmieniana. {{Tab}}Gdy {{LinkPatrz|podrecznik}} ma wartość {{Code|false}}, wtedy dla żadnej wartości {{LinkPatrz|wartosc}}, gdy zmienna: {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem jest ciąg znaków określone wzorem {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}}, jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, a jeśli jednak tak, to zmienna: {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, w innym rozgłazieniu instrukcji '''jeśli''' dla: {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}. {{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, wtedy dla {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, też jest zakańczana, w przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}. ====== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ====== Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}. ====== Użytek wartości ze zmiennej {{Code|tak}} ====== Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{LinkPatrz|tak}} jest równa wartości prawdziwej, to uruchamiana jest funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, przeciwnie bezparametrowo {{Code|funkcja2}} {{LinkPatrz|funkcja2}}. ==== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ==== Liczymy poszczególne linie z iteratora otrzymanego z {{LinkPatrz|iter_main}}. Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany}}. Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{LinkPatrz|nazwa_rozdzialu}} i {{LinkPatrz|poziom_rozdzialu}}. Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{LinkPatrz|czy_rozdzialy_analizowac}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy to jest jakiś rozdział, przeciwnie, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{LinkPatrz|linia}} i drugą zdefiniowaną funkcją i trzecią, który z parametru {{LinkPatrz|nazwa_rozdzialu}} usuwa jej wartość. {{Tab}}Tą pierwszą funkcją, jest tak gdy: {{LinkPatrz|tak_ce_spis_tresci}}, z wartością odpowiadającej fałszywej, ustawiamy {{LinkPatrz|nazwa_rozdzialu}} na {{Code|Spis treści}}, a {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. Przeciwnie sprawdzamy wartość zmiennej {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy rozdział jego i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. Przeciwnie, gdy nie ma takiego czegoś jak numeracja (nawet jego pusta) i rozdział, to {{LinkPatrz|nazwa_rozdzialu}} jest ustawiana na {{LinkPatrz|szablon_spis_tresci}}, a {{LinkPatrz|numeracja_rozdzialu}} na {{Code|nil}}. A jeżeli {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{LinkPatrz|numeracja_rozdzialu}} ustawiona jest wtedy na {{Code|nil}}. Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając na zmienną liczbową zmienną: {{LinkPatrz|tak_ce_spis_tresci}}, a jeżeli ona nie istnieje, to przydzielamy wartości {{LinkPatrz|poziom_rozdzialu}} wartość {{Code|2}}, przeciwnie wartość {{LinkPatrz|czy_rozdzial_naglowka_hn}}. Na podstawie przeciwnej wartości {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu}} ustalamy na wartość {{Code|nil}}. Gdy nie udało się znaleźć {{LinkPatrz|nazwa_rozdzialu}}, to potrzebne do tego parametry liczymy z funkcji {{LinkPatrz|parser}}, według: <syntaxhighlight lang="lua"> local linia_temp; linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Ta funkcja sprawdza czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, w przypadku przeciwnym zwraca ona wynik tylko {{Code|nil}}. ==== Wartości zwracane przez iterator ==== Gdy: {{LinkPatrz|nazwa_rozdzialu}}, gdy istnieje, wtedy ustalamy zmienną: {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}: <syntaxhighlight lang="lua"> {naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany; </syntaxhighlight> Gdzie parametry wartości zwracanych: * {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str}} w kodzie, * {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu}}, * {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu}}, * {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany}}. Gdy {{LinkPatrz|__FUNKCJA2}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji. Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2}} z parametrem identyfikującym, że to jest rozdział {{LinkPatrz|nazwa_rozdzialu}}, czy tekst rozdzialu {{LinkPatrz|tekst_rozdzialu}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> a5x0tye1q2ue2a0l8771b26n5cxsdes 548306 548305 2026-07-25T19:19:07Z Persino 2851 /* Kod dalszy funkcji */ 548306 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Wstęp == Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. === Rozdziały === * Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane: ** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}}, ** Inne (nierównaniowe): *** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}}, *** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}}, * Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}}, * Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}. === Zmienne spotykane w opisywanych tutaj funkcjach === ==== Zmienne bazy ==== W poniższych funkcjach często spotykamy parametry: * {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst przeważnie zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje, * {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony szablonowe jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych. Jest liczona bez nazwy przestrzeni {{Np|Template|link=tak}}, w tej przestrzeni, a w innych z przestrzeniami, a w {{Np|(main)|link=tak}} z dwukropkiem na początku. ==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ==== * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów. ==== Baza danych wikikodu ==== Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu. ===== Zmienne bazy danych i do nich parametrów ===== * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy. ===== Inne elementy bazy ===== * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku. ==== Funkcje bazy danych i do nich parametrów ==== * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Inne funkcje ==== ===== Funkcje bazy ===== * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych, * {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej). ===== Inne ===== * {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych. ==== Elementy bazy ==== * {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie, * {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. ==== Inne zmienne ==== * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów === Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji) local tab_obiekt=tab_analiza[obiekt]; if(not tab_obiekt)then return;end; for _,wartosc in pairs(tab_obiekt)do local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(element_wartosc)then element_wartosc[kod]=nil; end; end; end; </syntaxhighlight> Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy === A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne: <syntaxhighlight lang="lua"> local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji) tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; end; </syntaxhighlight> Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli. Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}. == {{Code|p.NapisWprowadzeniaTekstu}} == Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - tekst wnętrza rozdziału, * {{Code|poziom}} - numer całkowity dodatni poziomu. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial="Tekst rozdziału"; local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4); local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8); </syntaxhighlight> Wyniki użycia w zmiennych: <syntaxhighlight lang="lua"> local napis_rozdzialu1="\n====Tekst rozdziału====\n"; local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n"; </syntaxhighlight> == {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} == Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu. Defnicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu, * {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu, * {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}}, * {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu. Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę. Przykłady użycia, używając omawianego szablonu: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}} {{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}} </syntaxhighlight> Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki: <syntaxhighlight lang="lua"> local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ==="; local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>"; </syntaxhighlight> A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną): <syntaxhighlight lang="lua"> local zawartosc="Zawartość znacznika"; local zawartosc="Zawartość znacznika"; </syntaxhighlight> W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się: <syntaxhighlight lang="lua"> if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end; if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end; </syntaxhighlight> Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić). == {{Code|p.NapisWprowadzeniaTekstuHNumer}} == Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHNumer(parametr)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też. Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Nagłówek tekstu ===}} {{HNumer|1= ======= Nagłówek tekstu =======}} </syntaxhighlight> Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody: <syntaxhighlight lang="lua"> ---- Nagłówki typowo dodatnie local tekst1="=== Nagłówek tekstu ==="; local tekst2="======= Nagłówek tekstu ======="; ---- Wywołania tworzące nagłówki local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1); local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2); </syntaxhighlight> Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}: <syntaxhighlight lang="lua"> local naglowek1="<h3>Nagłówek tekstu</h3>"; local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>"; </syntaxhighlight> == {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} == Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana, Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="====== Tekst nagłówka ======"; local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst); </syntaxhighlight> Wynikiem działania tego przykładu: <syntaxhighlight lang="lua"> local naglowek="Tekst nagłówka"; local poziom=6; </syntaxhighlight> Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie. == {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} == Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local zawartosc="Tekst nagłówka"; local poziom=5; </syntaxhighlight> == {{Code|p.CzyJestNapisWprowadzeniaTekstu}} == Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n"; local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst); </syntaxhighlight> W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli: <syntaxhighlight lang="lua"> local napis_pierwszy_w_tekscie="== Tekst nagłówka == "; </syntaxhighlight> Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}. == {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w który ma znajdować napis wprowadzenia tekstu w postaci listy. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n"; local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}. == {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} == Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem. Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny). Przykłady funkcji: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst1="====== Tekst nagłówka ======"; local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1); local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local czy_jest_naglowek1,jaki_naglowek1=true,true; local czy_jest_naglowek2,jaki_naglowek2=true,false; </syntaxhighlight> == {{Code|p.WierszHNumer}} == Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WierszHNumer(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - parametr z tymi nagłówkami. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>"; local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n"; </syntaxhighlight> == {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{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> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{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> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja wykorzystuje: * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, * {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}. == {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} == Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez. Zwracane wartości: * {{Code|rozdzial}} - rozdzial bez numeracji, * {{Code|numetracja}} - numeracja. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja="5.1.2.3."; </syntaxhighlight> ; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja=""; </syntaxhighlight> == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}}, * {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}}, * {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} == Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametr funkcji: * {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}. Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa): <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="Spis treści"; local tablica_analizy_obiektow_strony_dany_modul={}; ---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); ---- Koniec tej części kodu; local tablica_danych_parametrow_szablonu_strony={}; local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Funckja w tym wypadku zwraca wynik: <syntaxhighlight lang="lua"> local rozdzial,czy_tak="Spis treści",true; </syntaxhighlight> Weźmy inny przykład: <syntaxhighlight lang="lua"> ---- Przykład pierwszy; local linia="'''Nagłówek'''"; local rozdzial,czy_tak="'''Nagłówek'''",true; ---- Przykład drugi; local linia="'''Nagłówek'''."; local rozdzial,czy_tak="'''Nagłówek'''.",false; </syntaxhighlight> == {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} == Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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: * {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}}, * {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka, * {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}. Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="''[[Książka/Artykuł|Artykuł]]''"; local tablica_analizy_obiektow_strony_dany_modul={}; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local przedrotek_listy=":"; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; ---- Tutaj funkcja zwróci wartość: true; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ---- Tutaj funkcja zwróci wartość: false; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); </syntaxhighlight> == {{Code|p.HnNumerWprowadzeniaTekstu}} == Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa}} - nazwa tagu, * {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''. Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w: <syntaxhighlight lang="lua"> p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; </syntaxhighlight> Funkcja posługuje się jedynie na tych typach znaczników, a nie innych. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h5"; local atrybuty={}; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja zwróci wynik: {{Code|5}}. ; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h6"; local atrybuty={};atrybuty["class"]="mw-hnumber-9"; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja daje wynik: {{Code|9}}. == {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} == Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="5.1.6. Rozdział"; local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local numeracja,rozdzial="5.1.6.","Rozdział"; </syntaxhighlight> == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach. ===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania napisu wprowadzenia tekstu, funkcja dopuszcza rozdziały typu: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem) i {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), wtedy zwraca {{Code|nil}}. Funkcja liczy rozdział i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}, a jeżeli tak z policzonego rozdziału udało się wykluczyć go przy pomocy funkcji: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, wtedy numeracja i rozdział są przyrównywane do wartości {{Code|nil}}, przeciwnie pozostawia je policzone przy pomocy {{LinkPatrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza, czy rozdział jest centrowany szablonami normalnymi, które są opisywane, czy to są szablony normalne centrowania, przy pomocy tabeli {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak to liczy jego zawartość, który jest wyświetlany w postaci centrowanej treści, co na podstawie tej wartości jest rewidowany rozdział funkcją: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}. ==== Zwracany iterator linii ==== Funkcja ma w sobie zwracany iterator, który można wykorzystać do iterowania linii {{LinkPatrz|linia}}, aby sprawdzić, czy to jest rozdział, czy zwykły tekst. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Sukces wyodrębnianiu rozdziału ====== Jeżeli to dało się wyodrębnić {{ZobaczTeż|rozdział}}, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z rozdziału numeracją usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany rozdział i numeracja z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== {{HNumer|1= ======= Wykryta linia cudzysłowu ======= }} W przeciwnym wypadku jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy rozdział jest równy linii, a poczatek i numeracja są równe ciągowi pustemu. {{HNumer|1= ======= Adresu URL linii ======= }} W innym wypadku, gdy poprzedni warunek nie jest spełniony, sprawdzamy, czy któreś z poszczególnych ciągów z czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) ===== Gdy nie jest spełniony warunek {{LinkZobaczTeż|rozdział}}, to wtedy to samo robimy, co tam, tylko bez znaków początku pozycji listy, który usunęliśmy z linii, rozdzielając na dwa łańcuchy znaków. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii podanemu do funkcji. {{Hr}} ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy funkcję iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza. ===== Obiekt szablon, czyli typu SZABLON ===== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, wtedy ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. A dla szablonów będących linkami sprawdzanymi tabelami: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}} i {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}}i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. A wiec wtedy na podstawie tych wartości prawwdziwej, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ===== Linki wewnętrzne i zewnętrzne ===== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak innicjowane jak tam, a tutaj funkcja zwraca wartość domyślną {{Code|nil}}. ===== Obiekty specjalne ===== Podobnie jest dla obiektów: {{Code|PRE}}, {{Code|MATH}}, {{Code|ŹRÓDŁO}} i {{Code|INNEPRE}}, jest jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, ze zwracaną wartością domyślną {{Code|nil}}. ===== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ===== Gdy obiekt jest równy: {{Code|ZNACZNIK}}, wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. W tym pierwwszym ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}, a w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ==== Iterator w linii ==== Uruchamiamy iterator w pętli do zakończenia danych lub przerwania pętli przez funkcję w iteratorze, przez zwracanie przez nią wartości {{Code|nil}}. Rozdział, początek pozycji listy i numeracja, jeżeli poszczególne istnieją, to wtedy działane jest na nich funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. ==== Zwracane parametry (procedura) ==== Funkcja na wiele sposobów może wsazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. Funkcja ta itewratora zwraca według schematu {{Patrz|procedura zwracanych wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdziału_wartosc_ujemna_lub_dodatnia,poczatek,numeracja,czy_rozdział_centrowany; </syntaxhighlight> ===== Rozdział bez specjalnych obiektów ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, na {{Code|false}}, jeśli nie,wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Za pomocą funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, zwracamy wartość rozdziału, jeżeli to jest rozdział zerowy, druga wartość jest {{Code|true}}, jeżeli rozdział nie kończy się na kropkę, znak: {{Code|.}}, a jeżeli końcu się, to funkcja zwraca {{Code|nil}}, czyli ten rozdział, tak naprawdę, nie jest rozdziałem niedodatnim. {{Tab}}Jeśli jednak jest takim rozdziałem, to sprawdzane, czy długość rozdziału jest mniejsza lub równa zmiennej {{Code|maksymalny_rozmiar_rozdzialu_zerowego}}, który przyjmuje wartość ustalaną przed iteratorem, ale w funkcji zwracającej iterator, równą: {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Później jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Przeciwnie jest zwracane {{Code|nil}}. {{Tab}}Sprawdzane, czy {{Code|poczatek}} i {{Code|numeracja}}, czy są nepusta. A gdy niierma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. ===== Rozdział centrowany ===== Gdy zmienna {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli prezyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przeciwnie zwraca {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} ===== Jeżeli w linii odkryto taki rozdział oznaczony, z któryś tych znaczników, wtedy jeśli numeracja i rozmiar nieistnieją, wtedy iterator zwraca wartość {{Code|nil}}, przeciwnie jest liczony numer rozdziału z funkcji {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, dalej jest zwracany wynik {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}}) ===== Jest sprawdzane,czy numeracja i rozdział, czy niestneją, lub czy są równe puste, wtedy jest zwracane {{Code|nil}}, przeciwnie jest rewidowane, czy funkcja spełnia zasadę maksymalności rozdziału zerowego ze zmiennej {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}} funkcją, jeżeli jest spełnione, to: {{Tab}}Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział przed cudzysłowek ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> Przeciwnie funkcja zwraca wartość {{Code|nil}}, czyli wtedy to nie jest rozdział. {{tab}}W innym wypadku, jeżeli poczatek jest jest pusty, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}, lub przeciwnie mamy {{Code|nil}}. == {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} == Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną. Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> {{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}; </syntaxhighlight> Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko: <syntaxhighlight lang="mediawiki"> '''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}. </syntaxhighlight> == {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przerobienia. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} == Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony . Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu funkcji. Parametry ramki funkcji tablicy transportu: * {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony, * {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta. Przykłady użycia: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Uzyskane wyniki w postaci nierozwiniętego wikikodu: <syntaxhighlight lang="mediawiki"> <templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span> </syntaxhighlight> == {{Code|p.NumerSekcjiStrony}} == Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumerSekcjiStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}. == {{Code|p.TekstWprowadzeniaTekstu}} == Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu, * {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Przykład użycia: <syntaxhighlight lang="lua"> local strona="Pomoc:Spis treści"; local title=mw.title.makeTitle('',strona); local tekst=title:getContent(); local id_rozdzialu1="Pomoc Wikibooks"; local id_rozdzialu2="Wstęp"; local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały"); tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); </syntaxhighlight> Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami: <syntaxhighlight lang="lua"> local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}."; </syntaxhighlight> == {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami, * {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}. Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy, * {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość, * {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), * {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jego definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej|klasa=zn_ogromne}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa|klasa=zn_ogromne}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, czy nie, gdy wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona przyjmuje wartość odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami i szablonami nowej linii i kresek w linii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Funkcja znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablony: {{s|Br}} i {{s|Hr}}, zamienia na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa nowe zagnieżdzone linie w nowych liniach z szablonami i znacznikami centrowania, pozostawiając główną nową linię z szablonem i znacznikiem centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. Te linie mogą być oznaczone szablonami: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, lub znacznikami: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. Funkcja zwraca tak zmodyfikowany tekst, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu centrowania przy pomocy funkcji: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, nowe linie, nawet kresek, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, nowe linie powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Fukcja zwraca tekst zmodyfikowany lub jego bazę z drugą wartością {{Code|true}}, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikkowany: {{LinkPatrz|szablon}}, podany jako pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy przy pomocy tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, czy znacznikowy, którym jest: {{Tag|center}}, lub określone tabelą: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. W obu tych rozgałęzieniach funkcji jest uruchamiana: {{LinkŚródtytuł|Modyfikacja}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, * Parametry znacznikowe: ** {{Code|parametr1}} {{Patrz|parametr1}} - to nic innego jak: {{Code|nazwa}} {{Patrz|nazwa}}, czyli jak nazwa znacznika, ** {{Code|parametr2}} {{Patrz|parametr2}} - to nic innego jak: {{Code|zawartość}} {{Patrz|zawartość}}, czyli zawartość znacznika, ** {{Code|parametr3}} {{Patrz|parametr3}} - to nic innego jak: {{Code|tab_atrybuty}} {{Patrz|tab_atrybuty}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (ale zwracane bez niej, a z wartością {{LinkPatrz|szablon}}, która się nie zmieniła), z drugą wartością {{Code|true}}. Funkcja jedynie działa w dwóch sprawdzanych zakresach, tzn. {{Code|SZABLON}} i {{Code|ZNACZNIK}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|trimowanie}} - czy jest włączone trimowanie komórki. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością, a ta nowa jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}}, to na poczatek tego czegoś nowego jest dodawany odstęp. Jeżeli trimowanie jest wyłączone, to na poczatek są dodawane dwie nowe linie, a na końcu jedna, i to jest zwracane, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną, lub nie, zawartość. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni {{LinkPatrz|czy_rozdział_dodatni}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni. Funkcja wydziela poszczególne linie wewnętrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, tobi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}), a w nim dla elementu {{Code|SZABLON}}, nowe linie: {{s|Br}}, nawet kreskowe: {{s|Hr}}, są zamieniane na spację. Szablony napisu wprowadzenia tekstu: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, są zamieniane na ich zawartości. A dla elementu {{Code|ZNACZNIK}}, znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, są zamieniane na spację. A całe naczniki, tzn.: {{Tag|center}} i {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, są zamieniane na ich zawartości. Dla znacznika: {{Tag|pre}}, czyli obiekt {{Code|PRE}}, gdy ona nie ma zawartości, to zamiast niego jest wyświetlana zawartość równą jednej spacji, przeciwnie znaki specjalne tagu {{Tag|nowiki}} są zamieniane na znaki kodu {{Strong|HTML}}, czyli według funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}. Gdy mamy rozdział dodatni według {{LinkPatrz|czy_rozdział_dodatni}}, wtedy znaki nowej linii {{Code|\n}} zawartości są zamieniane na znak jednej spacji w przeciwnym wypadku takiego czegoś zwracana jest zmodyfikowana zawartość. Podobnie robimy dla obiektu {{Code|ŻRÓDŁO}}, a dla {{Code|NOWIKI}} też podobnie, ale prawie, bo nie ma sprawdzenia, czy to jest rozdział dodatni, którym jest ta sprawdzana linia, ale poszczególne nowe linie są zamieniane tam na spację. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu krok 1 ====== Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji w odpowiednie kody {{Strong|HTML}}, lub w edytować linki zewnętrzne {{Code|LINKZ}} bez nazwy, by napisać ich numerki uruchomień, aby była zachowana kolejność numerowania szablonów, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}}, która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, zdefiniowane w tym module. {{HNumer|1= ======= Opis funkcji {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}, jako pierwszy argument modyfikujący tekst, w przypadku innym niż szablony i znaczniki referencji - nazwane i nienazwane, oraz numerujące linki zewnętrzne nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, * Parametry znacznikowe: ** {{Code|parametr1}} - jak w: {{LinkPatrz|parametr1}}, jest to: {{LinkPatrz|tabela_parametrow_szablonu}}, ** {{Code|parametr2}} - jak w: {{LinkPatrz|parametr2}}, jest to: {{LinkPatrz|nazwa_szablonu}}, ** {{Code|parametr3}} - jak w: {{LinkPatrz|parametr3}}, jest to: {{LinkPatrz|tabela_modyfikatorow}}, * {{Code|tekst}} - jak w: {{LinkPatrz|tekst}}. Gdy mamy {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, wtedy uruchamiamy funkcję: {{HNumer|1= ======== {{Śródtytuł|FuncSzablon}}{{Code|FuncSzablon}} dla obiektów szablonowych, czyli typu SZABLON ======== }} Funkcja zastępuje pewne elementy pewnym wyliczonym łańcuchem znaków, lub zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}}, * {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}}, * {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}}. {{HNumer|1= ========= Szablony sztucznego wprowadzenia tekstu ========= }} Sprawdzamy, czy to jest jeden z szablonów z tabeli {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, na podstawie, której sprawdzamy, czy istnieje element tekstu, który jest bardzo ważny w analizie tych szablonów. A jeżeli ten paramweetr istnieje w zestawie parametrów, wtedy ustawiamy zmienną: {{Code|czy_modyfikacja}}, na wartość {{Code|false}}, i uruchamiamy funkcję: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, do kompletowania w taki sposób by zawartość znacznika {{Tag|div}} zastąpić jego zawartością, wtedy i tylko wtedy gdy funkcja: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, na podstawie analizy parametru: {{Code|tekst}}, zwróci wartość {{Code|true}}, a jeśli nie zwróci, to ten parametr nie jest kompletowany, w przeciwnym wypadkujest zastępowany jego zawartością odpowiednio zakodowaną. A zaraz przed nią zmienna {{Code|czy_modyfikacja}} przybiera wartość {{Code|true}}. Po wyjściu z funkcji kompletowania jest sprawdzana zmienna {{Code|czy_modyfikacja}}, czy przybiera wartość prawdziwą, a jeżeli tak, to zwracanajest wartość z tej funkcji. {{HNumer|1= ========= {{Śródtytuł|AnalizaSzablonu}}{{Code|AnalizaSzablonu}} ========= }} Uruchamiamy funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|b=tak}}}}, a jeżeli ona zwróci jakiś wynik, to ona właśnie to zwróci, przeciwnie są usuwane szablony z tabel, jeżeli do nich pasują, ale tu pasuje względem jego nazwy, tu mamy na myśli: {{LinkPatrz|p.szablony_do_usuwania_z_tekstu}}, {{LinkPatrz|p.szablony_bez_generowania_napisowego}} i {{LinkPatrz|p.szablony_nie_typowo_linkowe}}. Jeżeli pasuje, do któryś z tych tabel to funkcja zwraca ciąg pusty, przeciwnie zwraca {{Code|nil}}. {{HNumer|1= ========= Parametry funkcji {{LinkŚródtytuł|AnalizaSzablonu}} ========= }} Funkcja analizująca szablon pod pewnymi warunkami zamieniające pewne zawartości wywołań szablonów na wartości puste lub nie zwracające żadnej wartości. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function AnalizaSzablonu(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Gdy funkcja {{LinkŚródtytuł|AnalizaSzablonu}}, zwróci wartość odpowiadających łańcuchowi znaków, wtedy funkcja zwraca wartość pustą, to wtedy funkcja: {{LinkŚródtytuł|FuncSzablon}}, ma zwracaną wartość równą tej wartości, a jeżeli nie ma jej, to ona idzie dalej. {{HNumer|1= ========= Modyfikacja napisów wprowadzenia tekstu szablonowych ========= }} Uruchamiana jest funkcja {{LinkŚródtytuł|UsuwanieZnacznikowe}}, która zwraca dwie wartości {{Code|szablon}} i {{Code|czy_center}}. {{HNumer|1= ========= Szablony generowania nagłówków - generowanie zawartości na podstawie pewnych wniosków ========= }} {{Tab}}Jeżeli pierwszy parametr tej funkcji zwróci wartość nie {{Code|nil}}, wtedy sprawdzamy, czy nazwa szablonu jest z tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, jeżeli jest, to liczy jego zawartość, a jeśli ona istnieje, wtedy sprawdzamy, czy w niej jest napis wprowadzenia tekstu według funkcji: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}}, lub czy jest to pozycja listy z: {{Code|{{sr|#p.CzyJestListaNapisuWprowadzeniaTekstu|b=tak}}}}, a jeżeli wszystko się zgadza, wtedy funkcja zwraca tą zawartość z drugim parametrem {{LinkPatrz|tabela_parametrow_szablonu}}. {{HNumer|1= ========== Aktualizacja bazy danych kodowania '''szablonowego''' zakodowanego wikikodu ========== }} Po wyjściu z tej funkcji jest sprawdzane, czy funkcja zwróci wartość odpowiadająca prawdziwej, jeżeli tak, to ona zwróci ten wynik, jeżeli nie, to aktualizowana jest pozycja z: {{Code|szablon}} {{Code|{{=}}}} {{Code|szablon}}, według: <syntaxhighlight lang="lua"> tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; </syntaxhighlight> A sama funkcja {{LinkŚródtytuł|FuncSzablon}} zakańcza się z wartością {{Code|nil}}. {{HNumer|1= ========= Szablony generowania nagłówków - bez modyfikacji szablonów napisu wprowadzenia tekstu ========= }} A gdy {{Code|szablon}} odpowiada wartości fałszywej, a {{Code|czy_center}} prawdziwej, wtedy sprawdzamy, czy nazwa szablonu pasuje do tej samej tabeli, co poprzednio dla prawdziwej {{Code|szablon}}, ale tutaj jest fałszywe, wtedy wskazanie jest podobne, funkcja zwraca podobnie jak poprzednio, ale tym razem bez tabeli parametrów, w przeciwnych wypadkach ta funkcja zwraca wartość {{Code|nil}}. {{HNumer|1= ========= Szablony znaczników odpowiadające właściwym znacznikom '''HTML''' innym niż centrowania i nagłówków ========= }} A gdy {{Code|szablon}} i {{Code|czy_center}} są równe odpowiadającej wartości fałszywej, wtedy sprawdzamy, czy szablon jest znacznikiem szablonowym z tabeli: {{LinkPatrz|p.znaczniki_szablonowe}}. A jeżeli ma parametr z zawartością, to go przekształcamy szablonem {{LinkŚródtytuł|ZamienNaKody}}, i zwracamy jego wynik. Dla funkcji: {{LinkŚródtytuł|FuncSzablon}}, jeżeli ma wynik odpowiadający prawdziwej wartości, wtedy jest zwracane {{Code|wynik,nil,true}} - co tutaj odpowiada zastępowaniom wartości, przeciwnie {{Code|nil,true}}, co tutaj odpowiada nierozwijaniu tej wartości. {{HNumer|1= ======== Dalszy opis funkcji - obiekty nieszablonowe, czyli typu ZNACZNIK i inne ======== }} {{Tab}}Dla {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}}, gdy nazwa znacznika nie jest {{Tag|center}} lub znacznikem wprowadzenia tekstu z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, wtedy gdy jest nierówny: {{Tag|ref}}, {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, zatem definiujemy funkcją {{Code|fun}}, która zwracamy w postaci parametrów, do funkcji jako w zestawie argumentów zrzuconych: {{Code|fun,nil,true}}. {{HNumer|1= ========= Znaczniki inne niż {{Tag|div}} ========= }} Funkcja {{Code|fun}} ma definicję, która nie przyjmuje żadnych parametrów. W tej funkcji, gdy znacznik nie jest równy {{Tag|div}}, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a potem na jego wyniku {{LinkŚródtytuł|ZamienNaKody}}, a jeżeli zawartość nie istnieje, to ona zwróci wynik równy ciągowi pustemu. {{HNumer|1= ========= Znaczniki warstw {{Tag|div}} ========= }} A gdy jest jednak tym znacznikiem, to wtedy używamy funkcji dla parametru {{Code|tekst}}, tzn. nie spełnia warunku: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, wtedy przetwarzamy jego wynik, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.gsub|b=tak}}}}, i też {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a na samym końcu przetwarzamy wynik funkcją {{LinkŚródtytuł|ZamienNaKody}}, na zawartości wynikającej z elementów znacznikowych. A gdy spełnia jednak ten warunek, to uruchamiamy funkcję: {{LinkŚródtytuł|ZamienNaKody}} na wyniku z: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, jeżeli zawartość istnieje. Gdy zawartość tego znacznikanie nie istnieje lub jest pusta, to funkcja zwróci wynik równy ciągowi pustemu. {{HNumer|1= ========= Inne znaczniki niż rozważane wcześniej jako podstawa ========= }} {{Tab}}Gdy znacznik nie jest tym, co myślimy, wtedy jest sprawdzana zawartość, jeśli istnieje, z funkcji: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} lub {{Code|{{sr|#p.CzyJestListaNapisuWprowadzeniaTekstu|b=tak}}}}, a jeżeli wszystko się zgadza, to zwracany jest wynik taki symbolizujący według dokumentacji zastąpienie znacznika jego zawartośścią. {{HNumer|1= ========= Znaczniki zostały zmodyfikowane przez funkcję obrabające znaczniki do jednej linii ========= }} {{Tab}}Jeżeli funkcja nie przeszła dalszych etapów, to sprawdzany jest wynik funkcji {{LinkŚródtytuł|UsuwanieZnacznikowe}}, jeżeli ma wartość równą odpowiadającej prawdziwej, wtedy w tabeli bazy kodów {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} dla tego obiektu i kodu jest naprawiana treść według tego wyniku uzyskanego z tej ostatniej funkcji. {{Tab}}Dalej rzucany jest wynik nierozwijania, jeśli funkcja doszła do tego etapu. {{HNumer|1= ======== Inne znaczniki specjalne mechanizmu MediaWiki oraz linki zewnętrzne i wewnętrzne ======== }} Gdy obiekt jest równy {{Code|PRE}} i zawartość składa się jego z samych odstępów, wtedy on jest zastępowany ciągiem pustym. Przeciwnie jest zrzucany wynik nierozwijania tego elementu. {{HNumer|1= ========= Obiekty linków zewnętrznych i wewnętrznych ========= }} Gdy mamy obiekt równy: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|b=tak}}}}, opisaną wcześniej, w nim znaczniki są zamieniane na ich zawartość, przeciwnie dla innych elementów zrzucany jest wynik nierozwijania. Gdy dało się wtedy zaktualizować zmienną: {{LinkPatrz|szablon}}, to wtedy zmieniamy zawartość dla tego obiektu i kodu w tabeli bazy kodowania: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Sprawdzamy, czy ten link symbolizuje element spisu według funkcji: {{Code|{{sr|#p.CzyElementSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli nie to funkcja zwraca wartość pustą, którą jest zastępowany taki link. {{HNumer|1= ======== Wikitabele jako obiekty kodowania szablonowego, czyli elementy typu WIKITABELA ======== }} Gdy obiekt jest o wartości {{Code|WIKITABELA}}, to wtedy wykorzystujemy zestaw funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.gsub|b=tak}}}} i {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, aby przetworzyć tekst z tabelką, do zwykłych odnośników z linkami w wikitabeli, na przykład. Na samym końcu funkcja zwraca wynik do zastąpienia takiej wikitabeli pewnym ciągiem w odpowiedni udokomentowany sposób. ====== Zmiana tekstu krok 2 ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w mechanizmie '''MediaWiki''', ta funkcja działa dla każdej linii w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu krok 3 ====== Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, napisu wprowadzenia tekstu, których ich nazwy pasują do: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia, a szablony o nazwach z tabeli: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiana jest nowa linia wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według funkcji podanej w nagłówku, ale też w funkcji w tabeli transportu, czyli {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. ==== Kod dalszy bez wybranej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ==== Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{LinkPatrz|czy_rozdzialy_analizowac}}, zatem: <syntaxhighlight lang="lua"> local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil); </syntaxhighlight> A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcja inicjująca jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}. Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{Code|{{sr|#p.IterTekst|b=tak}}}}. ==== Kod wspólny ==== ===== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ===== W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Wystepowanie(linia,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem. Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}. ====== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ====== Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego argumentami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinie(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. {{Tab}}Dla otrzymanego z ostatniej funkcji zmiennej {{Code|kom}}, która odpowiada wartości fałszywej, sprawdzamy, czy takie coś jak artykuł istnieje, liczymy jego nazwę z funkcji: {{Code|{{sr|#p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu|p=StronicowyParser/Potrzebne}}}}, i sprawdzamy, czy według uzyskanej tej nazwy, czy to jest okładka. Jeżeli to jest artykuł niebędący stroną główną podręcznika lub artykuł podręcznikowy niebędący okładką, wtedy funkcja zrzuca wynik {{Code|1}}, przeciwnie dla istniejącej okładki, dla innego rozgałęzienia, funkcja ustawia wartość: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} na wartość {{Code|true}}, i ta funkcja nie zrzuca żadnego wyniku. {{Tab}}Przeciwnie, wtedy funkcja zrzuca wynik {{Code|0}}. {{Tab}}Funkcja w innych niż opisane zawsze nie zrzuca żadnego wyniku, co odpowiada wartości zrzucanej {{Code|nil}}. ====== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ====== Funkcja rozważa ogólnie linie z obietami {{Code|SZABLON}} albo {{Code|LINKW}} lub {{Code|LINKZ}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinieZnacznikowe(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} {{LinkPatrz|zawartosc}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu. Funkcja uruchamia funkcję iteratora przy pomocy generatora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, a później dla funkcji w niej zdefiniowanej funkcji, która dla wartości zwracanej {{Code|nil}} przerywa od razu pętlę. Po definicji pewnych funkcji jest uruchamiana iteracja otrzymanego z tej funkcji. Pętla na pewno jest zatrzymana po wykorzystaniu wszystkich danych. {{HNumer|1= ======= {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ======= }} Funkcja właściwa do rozwazania szczególnego z obiektami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CenterZnacznikLinia(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} lub {{Code|1}}, wtedy funkcja się zakańcza, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga). {{HNumer|1= ======= Dalszy opis funkcji ======= }} Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce. W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana. ====== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ====== Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function spis_tresci(wystepowanie_linkow,hn_number)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami, * {{Code|hn_number}} {{Patrz|hn_number}} - czy to jest zawartość szablonu centrowania. Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, czy w spisie są jakieś początkowe artykuły, które nie należą do żadnego rozdziału, tzw. artykuły wstępne. {{HNumer|1= ======= {{Śródtytuł|Spis}}{{Code|Spis}} ======= }} Jest to funkcja szczególna do rozwazania szablonów centrowania spisów treści. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Spis(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, wtedy dla istniejącego wpisu w pierwszej wartości sprawdzanej dla artykułu książki, funkcja sprawdza funkcją: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}, odpowiednimi wartościami, i jest zwracana wartość {{Code|1}}. Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}. W pozostałych wypadkach funkcja nie zwraca żadnego wyniku. {{HNumer|1= ======= Dalszy opis funkcji ======= }} Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany. Przeciwnie w innym wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.trim|b=tak}}}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, połączonej z metatabelką, gdy sprawdzanie przeszło, wtedy inicjowane są zmienne: {{LinkPatrz|tak_ce_spis_tresci}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{LinkPatrz|hn_number}} i {{LinkPatrz|wystepowanie_linkow}}, dalej jest zwracana wartość {{Code|1}}. W innym wypadku nie jest zwracana żadna wartość. ====== Kod dalszy funkcji ====== {{HNumer|1= ======= Warunki wstępne ======= }} Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, przeciwnie z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}. Gdy mamy włączoną opcję: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, czyli dla tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, wtedy możemy powiedzieć, ze również {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane. {{Tab}}Gdy: {{LinkPatrz|wystepowanie_linkow}}, istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału na początku otrzymanego spisu treści dla jego początkowych linii. {{HNumer|1= ======= Iterator po rozważanej zmiennej, czyli iteracja po tekście ======= }} Uruchamiamy iterator ze zmienną: {{LinkPatrz|wystepowanie_linkow}}, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest później uruchamiana iteracja, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych. Funkcja wchodzi do ciała właściwego funkcji, gdy: {{LinkPatrz|obiekt}}, jest równe {{ZobaczTeż|obiekt}}: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}. {{HNumer|1= ======== Obiekt szablonowy, czyli typu SZABLON ======== }} W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczone {{Code|szablon_spis_tresci_zawartosc}} z zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}. A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, a gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość {{Code|true}}, przeciwnie na {{Code|false}}. {{HNumer|1= ======== Obiekt znacznikowy, czyli typu ZNACZNIK ======== }} A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, a gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a potem z tym parametrem jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. {{HNumer|1= ======== Obiekty linkowe, czyli typu: LINKW i LINKZ, a więc linki wewnętrzne i zewnętrzne ======== }} Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, przeciwnie na {{Code|false}}. ====== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ====== {{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}} jest {{Code|true}}, i gdy zmienna {{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}, jest bez wartości, wtedy dla {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst nie kończy się za nie na {{Code|.}}, dla określonej linii. W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, przeciwnie ustawiana jest wartość: {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. A gdy {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu, i zwracana jest wartość pusta z drugim nienilowym argumentem, gdy występowań liczonych jest większa niż zero, przeciwnie wartość {{Code|nil}}, to oznacza ze zmienna tekstowa w iteratorze nie jest podmieniana na zmienną {{Code|tekst}}, przeciwnie jest podmieniana. {{Tab}}Gdy {{LinkPatrz|podrecznik}} ma wartość {{Code|false}}, wtedy dla żadnej wartości {{LinkPatrz|wartosc}}, gdy zmienna: {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem jest ciąg znaków określone wzorem {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}}, jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, a jeśli jednak tak, to zmienna: {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, w innym rozgłazieniu instrukcji '''jeśli''' dla: {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}. {{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, wtedy dla {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, też jest zakańczana, w przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}. ====== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ====== Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}. ====== Użytek wartości ze zmiennej {{Code|tak}} ====== Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{LinkPatrz|tak}} jest równa wartości prawdziwej, to uruchamiana jest funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, przeciwnie bezparametrowo {{Code|funkcja2}} {{LinkPatrz|funkcja2}}. ==== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ==== Liczymy poszczególne linie z iteratora otrzymanego z {{LinkPatrz|iter_main}}. Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany}}. Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{LinkPatrz|nazwa_rozdzialu}} i {{LinkPatrz|poziom_rozdzialu}}. Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{LinkPatrz|czy_rozdzialy_analizowac}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy to jest jakiś rozdział, przeciwnie, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{LinkPatrz|linia}} i drugą zdefiniowaną funkcją i trzecią, który z parametru {{LinkPatrz|nazwa_rozdzialu}} usuwa jej wartość. {{Tab}}Tą pierwszą funkcją, jest tak gdy: {{LinkPatrz|tak_ce_spis_tresci}}, z wartością odpowiadającej fałszywej, ustawiamy {{LinkPatrz|nazwa_rozdzialu}} na {{Code|Spis treści}}, a {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. Przeciwnie sprawdzamy wartość zmiennej {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy rozdział jego i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. Przeciwnie, gdy nie ma takiego czegoś jak numeracja (nawet jego pusta) i rozdział, to {{LinkPatrz|nazwa_rozdzialu}} jest ustawiana na {{LinkPatrz|szablon_spis_tresci}}, a {{LinkPatrz|numeracja_rozdzialu}} na {{Code|nil}}. A jeżeli {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{LinkPatrz|numeracja_rozdzialu}} ustawiona jest wtedy na {{Code|nil}}. Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając na zmienną liczbową zmienną: {{LinkPatrz|tak_ce_spis_tresci}}, a jeżeli ona nie istnieje, to przydzielamy wartości {{LinkPatrz|poziom_rozdzialu}} wartość {{Code|2}}, przeciwnie wartość {{LinkPatrz|czy_rozdzial_naglowka_hn}}. Na podstawie przeciwnej wartości {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu}} ustalamy na wartość {{Code|nil}}. Gdy nie udało się znaleźć {{LinkPatrz|nazwa_rozdzialu}}, to potrzebne do tego parametry liczymy z funkcji {{LinkPatrz|parser}}, według: <syntaxhighlight lang="lua"> local linia_temp; linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Ta funkcja sprawdza czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, w przypadku przeciwnym zwraca ona wynik tylko {{Code|nil}}. ==== Wartości zwracane przez iterator ==== Gdy: {{LinkPatrz|nazwa_rozdzialu}}, gdy istnieje, wtedy ustalamy zmienną: {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}: <syntaxhighlight lang="lua"> {naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany; </syntaxhighlight> Gdzie parametry wartości zwracanych: * {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str}} w kodzie, * {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu}}, * {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu}}, * {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany}}. Gdy {{LinkPatrz|__FUNKCJA2}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji. Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2}} z parametrem identyfikującym, że to jest rozdział {{LinkPatrz|nazwa_rozdzialu}}, czy tekst rozdzialu {{LinkPatrz|tekst_rozdzialu}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jhrdyxhakob27r4trzfhrx014rrpm1f Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Gęstość lagrangianu i równanie Eulera-Lagrange'a, a paradoks niespełnienia zasady najmniejszego działania 0 63784 548295 2026-07-25T13:32:47Z Persino 2851 Utworzono nową stronę „<noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> Weźmy wzór na gęstość lagrangianu całkowitego w ogólnej teorii względności, na podstawie definicji ogólnej gęstości lagrangianu całkowitego {{LinkWzór|4.4|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} i definicji gęstości l…” 548295 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> Weźmy wzór na gęstość lagrangianu całkowitego w ogólnej teorii względności, na podstawie definicji ogólnej gęstości lagrangianu całkowitego {{LinkWzór|4.4|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} i definicji gęstości lagrangianu przestrzennego {{LinkWzór|4.8|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, w postaci {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}. Wykorzystajmy wzór na jedynkę {{LinkWzór|1.9|Wprowadzenie do ogólnej teorii względności|Ogólna teoria względności|OTW}}, którą wstawiamy do {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, wtedy są cztery jego postacie, co: {{ElastycznyWiersz |{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{2\kappa}}(R-2\Lambda u_{\mu}g^{\mu\nu}u_{\nu})+\mathfrak{L}_m\;</MATH>|P21}} |{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{2\kappa}}(R u_{\mu}g^{\mu\nu}u_{\nu}-2\Lambda)+\mathfrak{L}_m\;</MATH>|P311}} }} A trzecia i czwarta postać lagrangianu całkowitego: {{ElastycznyWiersz |{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{2\kappa}}(R-2\Lambda)+\mathfrak{L}_mu_{\mu}g^{\mu\nu}u_{\nu}\;</MATH>|O1}} |{{CentrujWzór|<MATH>\mathfrak{L}=\mathfrak{L}u_{\mu}g^{\mu\nu}u_{\nu}\;</MATH>|Y1}} }} Gęstości lagrangianu całkowitego {{LinkWzór|P311}}, {{LinkWzór|O1}} i {{LinkWzór|Y1}} są niefizyczne, a {{LinkWzór|P21}} jest opcjonalnie fizyczny. Wykorzystując z definicji równania Eulera-Lagrange'a {{LinkWzór|4.13|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} w ogólnej teorii względności dla {{LinkWzór|4.2|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, wtedy weźmy {{LinkWzór|P21}} (inna postać gęstości całkowitej lagrangianu {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}), dochodzimy do wniosku: {{CentrujWzór|<MATH>{{1}\over{2\kappa}}2\Lambda u_{\mu}u_{\nu}\sqrt{-g}+{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial\mathfrak{g}^{\mu\nu}}}=0\;</MATH>|P41}} Wykorzystując z definicji równania Eulera-Lagrange'a {{LinkWzór|4.13|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} w ogólnej teorii względności dla {{LinkWzór|4.2|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, wtedy weźmy {{LinkWzór|P311}} (inna postać gęstości całkowitej lagrangianu {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}), dochodzimy do wniosku: {{CentrujWzór|<MATH>-{{1}\over{2\kappa}}R u_{\mu}u_{\nu}\sqrt{-g}+{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial\mathfrak{g}^{\mu\nu}}}=0\;</MATH>|P51}} Wykorzystując z definicji równania Eulera-Lagrange'a {{LinkWzór|4.13|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} w ogólnej teorii względności dla {{LinkWzór|4.2|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, wtedy weźmy {{LinkWzór|O1}} (inna postać gęstości całkowitej lagrangianu {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}), dochodzimy do wniosku: {{CentrujWzór|<MATH>\mathfrak{L}_mu_{\mu}u_{\nu}\sqrt{-g}+{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial\mathfrak{g}^{\mu\nu}}}=0\;</MATH>|O2}} Wykorzystując z definicji równania Eulera-Lagrange'a {{LinkWzór|4.13|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} w ogólnej teorii względności dla {{LinkWzór|4.2|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, wtedy weźmy {{LinkWzór|Y1}} (inna postać gęstości całkowitej lagrangianu {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}), dochodzimy do wniosku: {{CentrujWzór|<MATH>\mathfrak{L}u_{\mu}u_{\nu}\sqrt{-g}+{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial\mathfrak{g}^{\mu\nu}}}=0\;</MATH>|Y2}} Ale zachodzi dla gęstości lagrangianu całkowitego {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} równanie Eulera-Lagrange'a {{LinkWzór|4.13|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}. Wykorzystując wniosek {{LinkWzór|4.13|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} będący równaniem Eulera-Lagrange'a dla gęstości lagrangianu całkowitego {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, co na tej podstawie {{LinkWzór|P41}}, {{LinkWzór|P51}}, {{LinkWzór|O2}} i {{LinkWzór|Y2}} dla gęstości lagrangianu całkowitego {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} wynika, że stała kosmologiczna {{Formuła|<MATH>\Lambda\;</MATH>}}, skalar krzywizny {{Formuła|<MATH>R(x^{\mu})\;</MATH>}}, gęstości lagrangianu masowego {{Formuła|<MATH>\mathfrak{L}_m(x^{\mu})\;</MATH>}}, i gęstości lagrangianu całkowitego {{Formuła|<MATH>\mathfrak{L}(x^{\mu})\;</MATH>}} są ogólnie różne od zera wykorzystując wniosek końcowy z {{LinkWzór|KLHT11|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}. Skonstrułujmy gęstość lagrangianu dodając do niej zero i wykorzystując {{LinkWzór|4.11|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, mamy: {{CentrujWzór|<MATH>\mathfrak{L}^'=\mathfrak{L}+\alpha(1-u^{\mu}g_{\mu\nu}u^{\nu})\Rightarrow 0={{\partial}\over{\partial x^{\gamma}}}{{\partial \mathfrak L}\over{\partial {g_{\mu\nu,\gamma}}}}-{{\partial \mathfrak L}\over{\partial g_{\mu\nu}}}+\alpha u^{\mu}u^{\nu}\Rightarrow u^{\mu}=0\;</MATH>|KLHT11}} Czyli jeżeli będziemy dodawać do całkowitego lagrangianu jedynki i zero, to wychodzą, że układy są globalnie (lokalnie) płaskie matematyczne, które badaliśmy w książce opisującą [[Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|szczególną teorię względności]], a więc ta zasada najmniejszego działania jest spełniona tylko dla układów globalnie (lokalnie) płaskich matematycznych, a nie zakrzywionych, bo dadawaliśmy tam jedynki i zera, stąd do całki działania nie można dodawać zer i jedynek, by zastosować go do układów zakrzywionych, by z rachunku wariacyjnego wyszły poprawne równania fizyki dla układów zakrzywionych. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> es8vd0zumemyifehh4ve1wjr6ss613f 548301 548295 2026-07-25T14:19:06Z Persino 2851 548301 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> Weźmy wzór na gęstość lagrangianu całkowitego w ogólnej teorii względności, na podstawie definicji ogólnej gęstości lagrangianu całkowitego {{LinkWzór|4.4|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} i definicji gęstości lagrangianu przestrzennego {{LinkWzór|4.8|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, w postaci {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}. Wykorzystajmy wzór na jedynkę {{LinkWzór|1.9|Wprowadzenie do ogólnej teorii względności|Ogólna teoria względności|OTW}}, którą wstawiamy do {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, wtedy są cztery jego postacie, co: {{ElastycznyWiersz |{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{2\kappa}}(R-2\Lambda u_{\mu}g^{\mu\nu}u_{\nu})+\mathfrak{L}_m\;</MATH>|P21}} |{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{2\kappa}}(R u_{\mu}g^{\mu\nu}u_{\nu}-2\Lambda)+\mathfrak{L}_m\;</MATH>|P311}} }} A trzecia i czwarta postać lagrangianu całkowitego: {{ElastycznyWiersz |{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{2\kappa}}(R-2\Lambda)+\mathfrak{L}_mu_{\mu}g^{\mu\nu}u_{\nu}\;</MATH>|O1}} |{{CentrujWzór|<MATH>\mathfrak{L}=\mathfrak{L}u_{\mu}g^{\mu\nu}u_{\nu}\;</MATH>|Y1}} }} Gęstości lagrangianu całkowitego {{LinkWzór|P311}}, {{LinkWzór|O1}} i {{LinkWzór|Y1}} są niefizyczne, a {{LinkWzór|P21}} jest opcjonalnie fizyczny. Wykorzystując z definicji równania Eulera-Lagrange'a {{LinkWzór|4.13|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} w ogólnej teorii względności dla {{LinkWzór|4.2|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, wtedy weźmy {{LinkWzór|P21}} (inna postać gęstości całkowitej lagrangianu {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}), dochodzimy do wniosku: {{CentrujWzór|<MATH>{{1}\over{2\kappa}}2\Lambda u_{\mu}u_{\nu}\sqrt{-g}+{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial\mathfrak{g}^{\mu\nu}}}=0\;</MATH>|P41}} Wykorzystując z definicji równania Eulera-Lagrange'a {{LinkWzór|4.13|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} w ogólnej teorii względności dla {{LinkWzór|4.2|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, wtedy weźmy {{LinkWzór|P311}} (inna postać gęstości całkowitej lagrangianu {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}), dochodzimy do wniosku: {{CentrujWzór|<MATH>-{{1}\over{2\kappa}}R u_{\mu}u_{\nu}\sqrt{-g}+{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial\mathfrak{g}^{\mu\nu}}}=0\;</MATH>|P51}} Wykorzystując z definicji równania Eulera-Lagrange'a {{LinkWzór|4.13|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} w ogólnej teorii względności dla {{LinkWzór|4.2|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, wtedy weźmy {{LinkWzór|O1}} (inna postać gęstości całkowitej lagrangianu {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}), dochodzimy do wniosku: {{CentrujWzór|<MATH>\mathfrak{L}_mu_{\mu}u_{\nu}\sqrt{-g}+{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial\mathfrak{g}^{\mu\nu}}}=0\;</MATH>|O2}} Wykorzystując z definicji równania Eulera-Lagrange'a {{LinkWzór|4.13|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} w ogólnej teorii względności dla {{LinkWzór|4.2|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, wtedy weźmy {{LinkWzór|Y1}} (inna postać gęstości całkowitej lagrangianu {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}), dochodzimy do wniosku: {{CentrujWzór|<MATH>\mathfrak{L}u_{\mu}u_{\nu}\sqrt{-g}+{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial\mathfrak{g}^{\mu\nu}}}=0\;</MATH>|Y2}} Ale zachodzi dla gęstości lagrangianu całkowitego {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} równanie Eulera-Lagrange'a {{LinkWzór|4.13|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}. Wykorzystując wniosek {{LinkWzór|4.13|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} będący równaniem Eulera-Lagrange'a dla gęstości lagrangianu całkowitego {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, co na tej podstawie {{LinkWzór|P41}}, {{LinkWzór|P51}}, {{LinkWzór|O2}} i {{LinkWzór|Y2}} dla gęstości lagrangianu całkowitego {{LinkWzór|4.15|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}} wynika, że stała kosmologiczna {{Formuła|<MATH>\Lambda\;</MATH>}}, skalar krzywizny {{Formuła|<MATH>R(x^{\mu})\;</MATH>}}, gęstości lagrangianu masowego {{Formuła|<MATH>\mathfrak{L}_m(x^{\mu})\;</MATH>}}, i gęstości lagrangianu całkowitego {{Formuła|<MATH>\mathfrak{L}(x^{\mu})\;</MATH>}} są ogólnie różne od zera wykorzystując wniosek końcowy z {{LinkWzór|KLHT11}}. Skonstrułujmy gęstość lagrangianu dodając do niej zero i wykorzystując {{LinkWzór|4.11|Zasada wariacyjna w ogólnej teorii względności|Ogólna teoria względności|OTW}}, mamy: {{CentrujWzór|<MATH>\mathfrak{L}^'=\mathfrak{L}+\alpha(1-u^{\mu}g_{\mu\nu}u^{\nu})\Rightarrow 0={{\partial}\over{\partial x^{\gamma}}}{{\partial \mathfrak L}\over{\partial {g_{\mu\nu,\gamma}}}}-{{\partial \mathfrak L}\over{\partial g_{\mu\nu}}}+\alpha u^{\mu}u^{\nu}\Rightarrow u^{\mu}=0\;</MATH>|KLHT11}} Czyli jeżeli będziemy dodawać do całkowitego lagrangianu jedynki i zero, to wychodzą, że układy są globalnie (lokalnie) płaskie matematyczne, które badaliśmy w książce opisującą [[Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|szczególną teorię względności]], a więc ta zasada najmniejszego działania jest spełniona tylko dla układów globalnie (lokalnie) płaskich matematycznych, a nie zakrzywionych, bo dadawaliśmy tam jedynki i zera, stąd do całki działania nie można dodawać zer i jedynek, by zastosować go do układów zakrzywionych, by z rachunku wariacyjnego wyszły poprawne równania fizyki dla układów zakrzywionych. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> 2u5m5nkefuiyoxgyl64p7ogxck7afeh Śpiewnik/Śliczne gwoździki, piękne tulipany/Tekst 0 63785 548329 2026-07-26T09:03:32Z Persino 2851 To jest strona autorstwa [[User:Ashaio|Ashaio]], umieszczona w przestrzeni głównej w książce [[Śpiewnik]] przez [[User:Persino|Persino]]. 548329 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaTekst}} == Wersje z 1877 == '''Autor:''' nieznany (pieśni ludowe „od Mazurów w Prusiech książęcych”<ref>Prawie taką samą piosnkę śpiewa lud w Krakowskiem. (Z. Gloger)</ref>) '''Opracowanie:''' Zygmunt Gloger {{Kolumny|2| <poem> 1. Smutne moje serce, co mi za radę dasz? Którego ja kochałam, tego nie mam teraz. Czyli on poszedł z tym ciemnym obłokiem, Co ja go nie ujrzę mojem smętnem okiem. 2. A czylić go wzięli żeglarze na morze, Co go moje serce obżalić nie może. A czyli go wiatry w polu zasypały, Czyli inne dziewki jechać mu nie dały? </poem> }} '''Źródło:''' Zygmunt Gloger, ''[https://polona.pl/item-view/ad684b68-43ed-4441-a8c2-771e92efabac?page=98 Starodawne dumy i pieśni]''. Warszawa, 1877. S.&nbsp;89. '''Autor:''' nieznany (pieśń ludowa) '''Opracowanie:''' Zygmunt Gloger {{Kolumny|2| <poem> O serce, serce, co mi za radę dasz, Kogo ja kochałam, teraz go niemasz. ::Oj nie mam-ci, nie mam, bodaj i nie będzie, ::Z kimże moje serce rozgadywać będzie? Wzięlić mi go wzięlić cudzy wojownicy, Pochowali mi go przy szląskiej granicy. ::Pojadę ja do niego, na mogiłkę jego, ::I będę płakała, aż nocka przenijdzie. O mój najmilejszy, odzywaj się do mnie, Co się rozweseli moje serce we mnie. :: „Moja najmilejsza, trudne odezwanie, ::Bo już trzeci roczek jak jam pochowany. A mój grób kochana na poły spróchniały, A moje gnaciki w proch się rozsypały.” </poem> }} '''Źródło:''' Zygmunt Gloger, ''[https://polona.pl/item-view/ad684b68-43ed-4441-a8c2-771e92efabac?page=98 Starodawne dumy i pieśni]''. Warszawa, 1877. S.&nbsp;90. == Przypisy == {{Przypisy}} 8nkxz4pzgrc33n8wwer2po7lr07wsvu