Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.22 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 AutoIt/Ćwiczenia dla zaawansowanych - przykładowe rozwiązania 0 24905 558432 398934 2026-10-03T16:49:31Z Wasta 12503 558432 wikitext text/x-wiki ==Funkcje rekurencyjne== '''1. Napisać funkcję rekurencyjną sumująca liczby całkowite w przedziale od m do n (m i n podawane jako parametry).''' '''Funkcja powinna działać prawidłowo także dla liczb ujemnych, oraz niezależnie od kolejności podanych parametrów.''' '''Jeżeli podamy jeden parametr to sumowanie powinno być od zera lub do zera (dla liczb ujemnych).''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> Func suma($n, $m=0.0) ;drugi parametr opcjonalny, z domyślną wartością 0.0 If $n<$m Then ;kalibrowanie danych, aby można było wpisywać liczby w dowolnej kolejności $pom=$n $n=$p $m=$pom EndIf if $n=$m Then Return $m ;przypadek bazowy dla najmniejszej liczby Return $n+suma($n-1,$m) ;obliczenia rekurencyjne EndFunc </syntaxhighlight> Ilość sumowanych liczb jest ograniczona do ok.4000, przy większej ilości ze względu na możliwość przepełnienia stosu działanie funkcji zostanie przerwane. '''2. Napisać rekurencyjną funkcję obliczającą liczbę e. Funkcja ta powinna korzystać z rekurencyjnej funkcji silna zdefiniowanej w powyższym przykładzie.''' '''Skorzystać z rozwinięcia w szereg e = 1 + 1/1! + 1/2! + ... + 1/n! + ... (graniczna wartość n podawana jako parametr).''' '''(dla sprawdzenia przybliżona wartość e = 2.718281828459...)''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> Func e($n) if $n=0 Then Return 1.0 ;przypadek bazowy dla n=0 Return 1/silnia($n)+e($n-1) ;wywołanie rekurencyjne i wywołanie innej funkcji rekurencyjnej EndFunc Func silnia($n) if $n=0 Then Return 1.0 Return $n*silnia($n-1) EndFunc </syntaxhighlight> Jak widać w powyższym przykładzie funkcja rekurencyjna może w swojej definicji wywoływać inną funkcję rekurencyjną. ==Napisy (stringi)== '''1. Napisać skrypt wyświetlający ile procent znaków w wczytanym z dysku pliku tekstowym stanowi litera a (wielkość litery nie ma znaczenia). Skrypt powinien zawierać zdefiniowaną funkcję zliczającą w stringu ilość wystąpień dowolnego znaku.''' <syntaxhighlight lang="autoit"> ;wywołanie systemowego selektora plików i wczytanie do zmiennej nazwy wybranego pliku $sFile = FileOpenDialog("Wybierz plik tekstowy","","(*.txt)") $sTxt = FileRead($sFile);wczytanie pliku tekstowego do zmiennej $sChr = "a" ;wyliczenie procentowego udziału litery a w całym tekście ;(ilość_a/ilość_znaków w tekście, x100 żeby było w procentach) $iUdzial = 100 * licz_znaki($sTxt, $sChr) / StringLen($sTxt) ; $iUdzial = Round($iUdzial, 2) ;zaokrąglenie wyniku do 2 miejsc po kropce dziesiętnej ;wyświetlenie wyniku na ekranie MsgBox(0,"Stringi - ćwiczenie 1", "Litera '" & $sChr & "' stanowi " & $iUdzial & "% wszystkich znaków") ;funkcja zliczająca ilość wystąpień znaku $sChr w stringu $sTxt Func licz_znaki($sTxt, $schr) StringReplace($sTxt,$sChr,$sChr) ;zamiana znaków na te same znaki Return @extended ;to makro podaje ilość zamian EndFunc </syntaxhighlight> '''2. Używając funkcji formatującej StringFormat napisać skrypt wyświetlający liczby -445.987, 0.00878, 2011 z wyrównaniem na kropce dziesiętnej jak poniżej:''' -445.987 +0.00878 +2011.00 Tego typu wyrównanie będzie możliwe tylko dla fontów nieproporcjonalnych (o stałej szerokości), np. '''Courier''', '''Courier New''', itp. Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> $v1 = -445.987 $v2 = 0.00878 $v3 = 2011 $format = "%+11.5f\n%+11.5f\n%+11.5f" ;łańcuch formatujący SplashTextOn("Formatowanie liczb:", StringFormat($format, $v1, $v2, $v3),-1,-1,-1,-1,-1,"Courier") Sleep(5000) </syntaxhighlight> ==Wyrażenia regularne== '''1. Napisać skrypt sprawdzający czy podany string jest prawidłową (pod względem formalnym) ścieżką dostępu do pliku.''' Rozwiązanie rozpoczynamy od określenia formatu ścieżki dostępu. Wygląda on następująco: x:\...\...\...\nazwa_pliku itd., gdzie x - dowolna litera od a do z, ... - nazwa podfolderów. W systemie plików NTFS nazwa folderów i plików może składać się z dowolnych znaków z wyjątkiem /\*?<>|:" Maksymalna długość pełnej ścieżki 260 znaków. Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> $sPath = "c:\folder1\folder2\folder3\program.exe" ;przykładowa ścieżka dostępu ;eliminujemy łańcuchy za długie lub zawierające niedozwolone znaki (wzorce alternatywne) ;więcej niż 1 dwukropek, któryś ze znaków /*?<>|" lub jest dłuższy niż 260 znaków ;lub między \\ nic lub tylko białe znaki If StringRegExp($sPath, ':{2,}|[/*?<>|"]|.{260,}|\\\s*\\') Then MsgBox(0, "", "Zła ścieżka dostępu") Else If StringRegExp($sPath,"(?i)^[a-z]:\\") Then ;sprawdzenie formatu ścieżki MsgBox(0, "" ,"Prawidłowa ścieżka dostępu") Else MsgBox(0, "", "Zła ścieżka dostępu") Endif Endif </syntaxhighlight> '''2. Napisać skrypt dzielący dany tekst na pojedyncze słowa. Separatorem słów są białe znaki.''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <Array.au3> ;dołączenie biblioteki Array.au3, aby uzyskać dostęp do funkcji _ArrayDisplay() $txt="matma tata kasetka. roma 1278a" ;przykładowy tekst $tab=StringRegExp($txt,"\S+",3) ;w tablicy $tab znajdą się wszystkie dopasowania, czyli wyrazy ;(w naszym wypadku wyraz może się składać z dowolnych czarnych znaków) _ArrayDisplay($tab) ;a tu można obejrzeć zawartość tablicy </syntaxhighlight> '''3. Zamienić amerykański zapis dowolnej daty (mm-dd-rrrr) na zapis w formacie europejskim (rrrr.mm.dd).''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> $sDataA = "12-22-1952" ;przykładowa data po amerykańsku ;zamiana na europejską z użyciem zapamiętanych dopasowań $sDataE = StringRegExpReplace($sDataA, "(\d{2})-(\d{2})-(\d{4})", "$3.$1.$2") MsgBox(0, $sDataA, $sDataE) </syntaxhighlight> '''4. Napisać skrypt wyszukujący we wczytanym z dysku pliku tekstowym wszystkie słowa zaczynające się i kończące na te same dwie litery.''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <Array.au3> ;wywołanie systemowego selektora plików i wczytanie do zmiennej nazwy wybranego pliku $sFtxt = FileOpenDialog("Wybierz plik tekstowy","","(*.txt)") $sTxt = FileRead($sFtxt) ;wczytanie pliku tekstowego do zmiennej $aTab = _StringRegExp($sTxt,"(?i)\b([a-z]{2})[a-z]*\1\b",1) ;porównanie tekstu z wzorcem _ArrayDisplay($aTab) ;podgląd wyników ;============================================================================================== ;funkcja _StringRegExp (jest to zmodyfikowana funkcja StringRegExp z flagą 4) ;dla $iFlag=0 funkcja zwraca ilość dopasowań, dla $iFlag<>0 zwraca jednowymiarową tablicę ;zawierającą w kolejnych komórkach wszystkie dopasowania ;pozostałe parametry jak dla StringRegExp ;============================================================================================== Func _StringRegExp($sTxt, $sPat, $iFlag=0, $iCount=1) $aTab = StringRegExp($sTxt, $sPat, 4, $iCount) If $iFlag = 0 Then Return UBound($aTab) ;zwrócenie odczytanej ilości dopasowań (dla flag=0) Local $aRes[UBound($aTab)] ;tworzymy tablicę wyników For $i = 0 to UBound($aTab)-1 ;w pętli wpisujemy do tablicy wyników kolejne dopasowania $aRes[$i] = ($aTab[$i])[0] Next Return $aRes ;zwrócenie tablicy wyników (dla flag<>0) EndFunc </syntaxhighlight> ==Wyskakujące okna - prosta interakcja ze skryptem== '''1. Napisać skrypt porównujący wprowadzone z klawiatury hasło, z hasłem zapamiętanym w zmiennej. Skrypt powinien wyświetlić komunikat, czy hasło jest poprawne (w komunikacie umieścić odpowiednie ikonki informacyjne). Na wprowadzenie poprawnego hasła mamy 3 próby, potem skrypt powinien zakończyć działanie (wyświetlając stosowny komunikat).''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> $pas="AutoIt" ;przykładowe hasło (wzorzec) $title="SPRAWDZANIE HASŁA" ;stała część komunikatu wyświetlanego na belce For $i=1 To 3 ;3 krotne sprawdzanie w pętli For...Next ;wprowadzenie hasła z klawiatury, znaki są maskowane $wpas=InputBox($title&" - próba "&$i,"Wprowadź hasło","","*") If $wpas==$pas Then ;sprawdzenie czy hasło i wzorzec są jednakowe (== sprawdza wielkość liter) ;jeżeli tak to wyświetla stosowny komunikat (z ikoną informacyjną) MsgBox(64,$title&" - próba "&$i,"Hasło prawidłowe. ",5) ExitLoop ;i kończymy pętlę po 5 sekundach (ExitLoop) ElseIf $i<3 Then ;jeżeli hasło jest nieprawidłowe, a ilość prób mniejsza od ;można wybrać, czy kończymy, czy próbujemy dalej If MsgBox(5+48,$title&" - próba "&$i,"Hasło nieprawidłowe!"&@LF&"Czy próbujesz ponownie?")=2 Then ;w przypadku rezygnacji stosowny komunikat MsgBox(16,$title&" - próba "&$i,"Hasło nieprawidłowe!"&@LF&"Rezygnacja użytkownika.",5) Exit ;i opuszczenie skryptu EndIf ElseIf $i=3 Then ;nieprawidłowe hasło w trzeciej próbie ;stosowny komunikat, po 5 sekundach MsgBox(16,$title&" - próba "&$i,"Wprowadzono 3 razy złe hasło!"&@LF&"Program zostanie zamknięty.",5) Exit ;kończymy program EndIf Next ;........................................... ;dalej część skryptu, ;działająca gdy wprowadzono prawidłowe hasło ;........................................... </syntaxhighlight> '''2. Napisać skrypt będący przeglądarką plików. Powinien wczytywać wybrany na dysku plik i wyświetlić w okienku. Obsługa plików TXT, BMP, GIF i JPG.''' '''Sposób wyświetlania uzależniony od typu pliku (rozpoznanie po rozszerzeniu).''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> While 1 ;pętla nieskończona ;wywołanie systemowego selektora plików, z domyślnymi rozszerzeniami $file=FileOpenDialog("Wybierz plik tekstowy lub obrazek","","(*.txt; *.bmp; *.jpg; *.gif)") If @error Then Exit ;jeżeli użyto klawisz anuluj lub zamknięcia okna to makro @error=1 i koniec skryptu If StringRight($file,4)=".txt" Then ;jeżeli nazwa pliku kończy się na ".txt" $txt=FileRead($file,10000) ;wczytanie pliku tekstowego do zmiennej SplashTextOn($file,$txt,600,900,20,20,2+4+16,Default,6) ;wywołanie okienka tekstowego Else SplashImageOn($file,$file,800,600,20,100,2+16) ;wywołanie okienka z obrazkiem EndIf WEnd ;koniec pętli </syntaxhighlight> ==GUI== '''1. W oparciu o funkcję GUICtrlCreateInput napisać funkcję umożliwiającą wprowadzanie wyłącznie liczb dziesiętnych. Liczby mogą być dodatnie lub ujemne, całkowite lub z kropką dziesiętną. Stworzoną funkcję użyj w prostym skrypcie demonstracyjnym.''' Wprowadzony string może mieć na początku znak minus (-), następnie dowolną ilość cyfr, kropkę dziesiętną i znowu dowolną ilość cyfr. Oczywiście znak minus i kropka są opcjonalne. Minus może być tylko na początku, a kropka może wystąpić najwyżej jeden raz np.: -1.25, -.02, .1, 0.1, 356 itp. Do sprawdzania poprawności wpisywanej liczby najprościej będzie użyć wyrażeń regularnych. Będzie ono wyglądać następująco: ^-?\d*\.?\d*$ Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> GUICreate("Wprowadź liczbę",250,200,-1,250) $f1=GUICtrlCreateInput("", 10, 5, 200, 20,2) ;wyrównanie do lewej $f2=GUICtrlCreateInput("", 10, 35, 200, 20,2) $f3=GUICtrlCreateInput("", 10, 65, 200, 20,2) $f4=GUICtrlCreateInput("", 10, 95, 200, 20,2) $btn=GUICtrlCreateButton("Ok", 90, 140, 60, 20) GUISetState() Do $msg=GUIGetMsg() $l1= _GUICtrlReadInputNumber($f1) ;liczby rzeczywiste $l2= _GUICtrlReadInputNumber($f2,"+") ;liczby rzeczywiste dodatnia $l3= _GUICtrlReadInputNumber($f3,"I") ;tylko liczby całkowite ze znakiem $l4= _GUICtrlReadInputNumber($f4,"I+") ;tylko liczby całkowite dodatnia If $msg=$btn Then ExitLoop Until $msg=$GUI_EVENT_CLOSE MsgBox(4096, "","Wprowadziłes liczbę: "&Number($l1)&" "&Number($l2)&" "&Number($l3)&" i "&Number($l4)) ;================================================================================================================ ;funkcja umożliwiająca wprowadzenie tylko stringu będącego prawidłowym zapisem liczby dziesiętnej ;do sprawdzenia poprawności stringu używamy wyrażenia regularnego ;aby odtworzyć wartość poprzednią wartość stringu przy kolejnym wywołaniu funkcji używamy ;zmiennej statycznej w postaci tablicy (aby można było obsłużyć jednocześnie większą ilość kontrolek) ;zadeklarowana ilość komórek powinna być większa od łącznej ilości kontrolek (na wszelki wypadek z dużym zapasem) ;Parametry: ;$handle_input - zaczep do kontrolki INPUT ;Parametr opcjonalny: ;$op="R+" lub $op="+" - liczby rzeczywiste dodatnie i 0 ;$op="I" - liczby całkowite ;$op="I+" - liczby całkowite dodatnie i 0 ;dowolna inna wartość - liczba rzeczywista (domyślne) ;================================================================================================================ Func _GUICtrlReadInputNumber($handle_input,$op=Default) Local $liczba, $WR="^-?\d*\.?\d*$" ;deklarowanie statycznej tablicy do przechowywania aktualnej prawidłowej wartości wprowadzanego stringu Static $liczba1[100] If $op="R+" Or $op="r+" Or $op="+" Then $WR="^\d*\.?\d*$" If $op="I" Or $op="i" Then $WR="^-?\d*$" If $op="I+" Or $op="i+" Then $WR="^\d*$" $liczba=GUICtrlRead($handle_input) ;odczytanie aktualnej wartości stringu If StringRegExp($liczba,$WR) Then $liczba1[$handle_input]=$liczba ;jeżeli string jest prawidłowy to zostanie zapamiętany Else GUICtrlSetData($handle_input,$liczba1[$handle_input]) ;jeżeli nie to odtwarzamy poprzednią wersję EndIf Return $liczba EndFunc </syntaxhighlight> '''2. Korzystając z kontrolek GUI napisać skrypt wyświetlający na ekranie zegar analogowo cyfrowy. Aby zajmować jak najmniej miejsca na ekranie zegar powinien mieć możliwość wyświetlania okna bez belki i ramki. W tym stanie zegar powinien mieć atrybut "zawsze na wierzchu". Należy także zapewnić możliwość przemieszczanie zegara w wygodne dla użytkownika miejsce ekranu.''' Wyświetlacz analogowy można by zrealizować rysowania w okienku graficznym, ale prościej będzie użyć jakiejś kontrolki odwzorowującej graficznie zadaną wartość. Do wyboru mamy suwak (SLIDER) lub pasek postępu (PROGRESS). Zdecydowałem się na suwak. Okienko GUI za pomocą parametru exstyle (0x800+8=0x808) ma ustawiony atrybut "zawsze na wierzchu", oraz styl okienka narzędziowego (dzięki temu ikona nie pojawi się na pasku zadań). Ponieważ dla style = 0xc00000 nie są wyświetlane przyciski systemowe okna, musimy je stworzyć sami. Przycisk "X" służy do zamykania okna, natomiast przycisk "S" jest przełącznikiem zmieniającym styl okna (okno z belką i ramką / okno bez belki i ramki). Wyświetlacz cyfrowy został zrealizowany za pomocą kontrolki LABEL. Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> Local $iS1, $msg, $fWSK=True $hGUI=GUICreate("Zegar:", 255, 95, 600, 300, 0xc00000, 0x88) GUISetBkColor(0x00e6ff) GUICtrlSetDefBkColor(0x00e6ff) $hGodziny = GUICtrlCreateSlider(14, 2, 230, 30) GUICtrlSetLimit(-1, 23) ;godziny $hMinuty = GUICtrlCreateSlider(14, 24, 230, 22) GUICtrlSetLimit(-1, 59) ;minuty $hSekundy = GUICtrlCreateSlider(14, 46, 230, 22) GUICtrlSetLimit(-1, 59) ;sekundy $hZegar = GUICtrlCreateLabel("", 45, 68, 190, 40, 0x800) GUICtrlSetFont(-1, 20, 1000, 2, "Comic Sans MS") GUICtrlCreateLabel("H", 4, 6, 12, 12) GUICtrlCreateLabel("M", 4, 28, 12, 12) GUICtrlCreateLabel("S", 4, 50, 12, 12) $hEnd = GUICtrlCreateButton("X", 245, 1, 10, 10) GUICtrlSetBkColor(-1, 0xe07000) $hStyle = GUICtrlCreateButton("S", 244, 20, 10, 10) GUICtrlSetBkColor(-1, 0x00ff00) GUISetState() Do $iH=@HOUR ;odczyt godziny $iM=@MIN ;odczyt minuty $iS=@SEC ;odczyt sekundy If $msg=$hStyle Then ;obsługa przełącznika stylu okna GUISetStyle(0x80000000 * $fWSK + (0xc00000*(Not $fWSK))) $fWSK = Not $fWSK EndIf If $iS<>$iS1 Then ;zmiana ustawień gdy zmieniły się sekundy GUICtrlSetData($hGodziny, $iH) ;ustawienie suwaka godzin GUICtrlSetData($hMinuty, $iM) ;ustawienie suwaka minut GUICtrlSetData($hSekundy, $iS) ;ustawienie suwaka sekund GUICtrlSetData($hZegar, $iH&" : " & $iM & " : " & $iS) ;wyświetlacz cyfrowy $iS1 = $iS EndIf $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $hEnd </syntaxhighlight> ==Przejmowanie kontroli== '''1. W oparciu o zdobyte w tym rozdziale informacje, zmodyfikować program zegara z ćwiczeń w GUI tak, aby możliwa była regulacja przejrzystości okna zegara. Wykorzystamy funkcję ustalającą stopień przejrzystości okna '''WinSetTrans'''. Funkcja ta działa na wszystkich oknach, tak utworzonych przez zewnętrzne procesy, jak i przez sam skrypt. Wystarczy znać zaczep do okna. Nie ma z tym problemu, ponieważ sami je utworzyliśmy. Do okna zegara dodajemy dwa przyciski, jeden ze znakiem '''+''', drugi ze znakiem '''-'''. Naciśnięcie pierwszego powoduje, że okno staje się wyraźniejsze (mniejsze przezroczystość), drugiego jego zblednięcie (większa przezroczystość). Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> Local $iS1, $msg, $fWSK=True, $iTrans=255 $hGUI = GUICreate("Zegar:", 255, 95, 600, 300, 0xc00000, 0x88) GUISetBkColor(0x00e6ff) GUICtrlSetDefBkColor(0x00e6ff) $hGodziny = GUICtrlCreateSlider(14, 2, 230, 30) GUICtrlSetLimit(-1, 23) ;godziny $hMinuty = GUICtrlCreateSlider(14, 24, 230, 22) GUICtrlSetLimit(-1, 59) ;minuty $hSekundy = GUICtrlCreateSlider(14, 46, 230, 22) GUICtrlSetLimit(-1, 59) ;sekundy $hZegar = GUICtrlCreateLabel("", 45, 68, 190, 40, 0x800) GUICtrlSetFont(-1, 20, 1000, 2, "Comic Sans MS") GUICtrlCreateLabel("H", 4, 6, 12, 12) GUICtrlCreateLabel("M", 4, 28, 12, 12) GUICtrlCreateLabel("S", 4, 50, 12, 12) $hEnd = GUICtrlCreateButton("X", 245, 1, 10, 10) GUICtrlSetBkColor(-1, 0xe07000) $hStyle = GUICtrlCreateButton("S", 244, 20, 10, 10) GUICtrlSetBkColor(-1, 0x00ff00) ;dwa nowe przyciski $hPlus = GUICtrlCreateButton("+", 244, 40, 10, 10) GUICtrlSetBkColor(-1, 0xaaff00) $hMinus = GUICtrlCreateButton("-", 244, 60, 10, 10) GUICtrlSetBkColor(-1, 0xaaff00) GUISetState() Do $iH = @HOUR ;odczyt godziny $iM = @MIN ;odczyt minuty $iS = @SEC ;odczyt sekundy Switch $msg Case $hStyle ;obsługa przełącznika stylu okna GUISetStyle(0x80000000 * $fWSK + (0xc00000 * (Not $fWSK))) $fWSK = Not $fWSK Case $hPlus $iTrans = min($iTrans+20, 255) WinSetTrans($hGUI, "", $iTrans) ;zmniejszenie przezroczystości Case $hMinus $iTrans = max($iTrans-20, 30) WinSetTrans($hGUI, "", $iTrans) ;zwiększenie przezroczystości EndSwitch If $iS <> $iS1 Then ;zmiana ustawień gdy zmieniły się sekundy GUICtrlSetData($hGodziny, $iH) ;ustawienie suwaka godzin GUICtrlSetData($hMinuty, $iM) ;ustawienie suwaka minut GUICtrlSetData($hSekundy, $iS) ;ustawienie suwaka sekund GUICtrlSetData($hZegar, $iH & " : " & $iM&" : " & $iS) ;wyświetlacz cyfrowy $iS1 = $iS EndIf $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $hEnd ;funkcje pomocnicze Func min($a, $b) If $a<=$b Then Return $a Return $b EndFunc Func max($a, $b) If $a<=$b Then Return $b Return $a EndFunc </syntaxhighlight> ==Tworzenie bibliotek== '''1. Napisać pozostałą część biblioteki matematycznej, oraz prosty skrypt testujący jej działanie.''' Przykładowe rozwiązanie (zwróćmy uwagę, że funkcje _am(), _gm() i _permutation() są polimorficzne): <syntaxhighlight lang="autoit"> #include-once ; #INDEX# ==================================================================== ; Nazwa .........: Mathematic function ; AutoIt Version : 3.3.8.1 ; Language ......: Polish ; Description ...: Dodatkowe funkcje matematyczne (Additional math functions) ; Author(s) .....: Wasta (2012) ; ============================================================================ ; #CURRENT# ================================================================== ;Const $_PI ;_max ;_min ;_sign ;_am ;_gm ;_log10 ;_logA ;_sinh ;_cosh ;_QRoots ;_factorial ;_combination ;_combinationWR ;_variation ;_variationWR ;_permutation ;_Bin ;_BinToDec ; ============================================================================= Global Const $_PI = 3.14159265358979323846264338328 ; #FUNCTION# ================================================================== ; Name...........: _max ; Description ...: Większy z dwóch parametrów (The larger of the two parameters) ; Syntax.........: _max($var1, $var2) ; Parameters ....: Dwie liczby rzeczywiste (Two real numbers) ; Return values .: Większy z dwóch parametrów (The larger of the two parameters) Func _max ($iVar1, $iVar2) Return $iVar1>=$iVar2 ? $iVar1 : $iVar2 EndFunc ; #FUNCTION# ================================================================== ; Name...........: _min ; Description ...: Mniejszy z dwóch parametrów (The smaller of the two parameters) ; Syntax.........: _max($var1, $var2) ; Parameters ....: Dwie liczby rzeczywiste (Two real numbers) ; Return values .: Większy z dwóch parametrów (The smaller of the two parameters) Func _min ($iVar1, $iVar2) Return $iVar1>=$iVar2 ? $iVar2 : $iVar1 EndFunc ; #FUNCTION# ================================================================== ; Name...........: _sign ; Description ...: Znak liczby (The sign of number) ; Syntax.........: _sign($var) ; Parameters ....: liczba rzeczywista (Real number) ; Return values .: -1 - $var<0 ; 0 - $var=0 ; 1 - $var>0 Func _sign ($iVar) Return ($iVar>0)-($iVar<0) EndFunc ; #FUNCTION# ================================================================== ; Name...........: _am ; Description ...: Średnia arytmetyczna (The arithmetic mean) ; Syntax.........: _am($var1[, $var2]) ; : _am($array) ; Parameters ....: Dwie liczby rzeczywiste (Two real numbers) ; : Jednowymiarowa tablica (One-dimensional array) ; Return values .: Success - Średnia arytmetyczna dwu liczb, lub elementów tablicy. ; (The arithmetic mean of two numbers, or elements of the array) ; Failure - "-1.#IND" ; @error=1 Func _am ($vVar1, $vVar2=False) Local $i, $iSum=0 If @NumParams=2 Then Return ($vVar1+$vVar2)/2 If @NumParams=1 Then If IsArray($vVar1) Then If UBound($vVar1,0)>1 Then SetError(1) Return "-1.#IND" EndIf $n=UBound($vVar1) For $i=0 To $n-1 $iSum+=$vVar1[$i] Next Return $iSum/$n Else Return $vVar1 EndIf EndIf EndFunc ; #FUNCTION# ================================================================== ; Name...........: _gm ; Description ...: Średnia geometryczna (The geometric mean) ; Syntax.........: _gm($var1[, $var2]) ; : _gm($array) ; Parameters ....: Dwie liczby rzeczywiste dodatnie (Two positive real numbers) ; : Jednowymiarowa tablica liczb dodatnich ; (One-dimensional array of positive numbers) ; Return values .: Success - Średnia geometryczna dwu liczb, lub elementów tablicy ; (The geometric mean of two numbers, or elements of the array) ; Failure - "-1.#IND" - tablica wielowymiarowa, lub występuje liczba <=0 ; @error=1 - tablica wielowymiarowa (multidimensional array) ; @error=2 - występuje liczba <=0 (by a number <= 0) Func _gm ($vVar1, $vVar2=False) Local $i, $n, $il=1 If @NumParams=2 Then If $vVar1>0 And $vVar2>0 Then Return Sqrt($vVar1*$vVar2) Else SetError(2) Return "-1.#IND" EndIf EndIf If @NumParams=1 Then If IsArray($vVar1) Then If UBound($vVar1,0)<>1 Then SetError(1) Return "-1.#IND" EndIf $n=UBound($vVar1) For $i=0 To $n-1 If $vVar1[$i]<=0 Then SetError(2) Return "-1.#IND" Else $il*=$vVar1[$i] EndIf Next Return $il^(1/$n) Else If $vVar1>0 Then Return $vVar1 Else SetError(2) Return "-1.#IND" EndIf EndIf EndIf EndFunc ; #FUNCTION# ================================================================== ; Name...........: _log10 ; Description ...: Logarytm dziesiętny (Decimal logarithm) ; Syntax.........: _log10($var) ; Parameters ....: Liczba rzeczywista dodatnia (Positive real number) ; Return values .: Success - Logarytm dziesiętny (Decimal logarithm) ; Failure - "-1.#IND" - $var <= 0 ; @error=1 Func _log10 ($iVar) If $iVar>0 Then Return Log($iVar)/Log(10) SetError(1) Return "-1.#IND" EndFunc ; #FUNCTION# ================================================================== ; Name...........: _logA ; Description ...: Logarytm o dowolnej podstawie (Logarithm of any basis) ; Syntax.........: _logA($var, $base) ; Parameters ....: Liczby rzeczywiste dodatnie (Positive real numbers) ; Return values .: Success - Logarytm o dowolnej podstawie (The logarithm of any base) ; Failure - "-1.#IND" - $var <= 0 or $base <= 0 or $base = 1 ; @error=1 Func _logA ($iVar, $iBase) If $iVar>0 And $iBase>0 And $iBase<>1 Then Return Log($iVar)/Log($iBase) SetError(1) Return "-1.#IND" EndFunc ; #FUNCTION# ================================================================== ; Name...........: _sinh ; Description ...: Sinus hiperboliczny (Hyperbolic sine) ; Syntax.........: _sinh($var) ; Parameters ....: Liczba rzeczywista (Real number) ; Return values .: Sinus hiperboliczny (hyperbolic sine) Func _sinh ($iVar) Return (Exp($iVar)- Exp(-$iVar))/2 EndFunc ; #FUNCTION# ================================================================== ; Name...........: _cosh ; Description ...: Cosinus hiperboliczny (Hyperbolic cosine) ; Syntax.........: _cosh($var) ; Parameters ....: Liczba rzeczywista (Real number) ; Return values .: Cosinus hiperboliczny (hyperbolic cosine) Func _cosh ($iVar) Return (Exp($iVar)+ Exp(-$iVar))/2 EndFunc ; #FUNCTION# ================================================================== ; Name...........: _QRoots ; Description ...: Pierwiastki równania kwadratowego a*x^2 + b*x + c ; (Roots of a quadratic equation) ; Syntax.........: _QRoots($a, $b, $c) ; Parameters ....: Liczbay rzeczywiste (Real numbers) ; Return values .: 3-elementawa tablica wyników (Three-element array results) ; $res[0] - ilość pierwiastków (Number of roots) ; $res[1] - wartość 1 pierwiastka lub "-1.#IND" gdy nie ma pierwiastków ; $res[2] - wartość 2 pierwiastka lub "-1.#IND" gdy nie ma pierwiastków ; $res[2]=$res[1] if $res[0]=1 Func _QRoots ($iA, $iB, $iC) Local $iDelta, $aRes[3]=[0,"-1.#IND","-1.#IND"] $iDelta=$iB^2-4*$iA*$iC Select Case $iDelta=0 $aRes[0]=1 $aRes[1]=-$iB/(2*$iA) $aRes[2]=$aRes[1] Case $iDelta>0 $aRes[0]=2 $aRes[1]=(-$iB-Sqrt($iDelta))/(2*$iA) $aRes[2]=(-$iB+Sqrt($IDelta))/(2*$iA) EndSelect Return $aRes EndFunc ; #FUNCTION# ================================================================== ; Name...........: _factorial ; Description ...: Silnia (Factorial) ; Syntax.........: _factorial($var) ; Parameters ....: Liczba naturalna 0-170 (Natural number) ; Return values .: Success - Silnia (Factorial) ; Failure - "-1.#IND" ; @error=1 - zły parametr (bad parameter) ; @error=2 - przekroczony zakres (range exceeded) Func _factorial($iVar) If $iVar<0 Or (Not IsInt($iVar)) Then SetError(1) Return "-1.#IND" EndIf If $iVar>170 Then SetError(2) Return "-1.#IND" EndIf If $iVar=0 Then Return 1.0 Return $iVar*_factorial($iVar-1) EndFunc ; #FUNCTION# ================================================================== ; Name...........: _combination ; Description ...: Kombinacja (Combination) ; Syntax.........: _combination($k, $n) ; Parameters ....: Liczby naturalne 0-170 (Natural numbers) ; Return values .: Success - Kombinacja (Combination) ; Failure - "-1.#IND" ; @error=1 Func _combination($iK, $iN) Local $iFk=_factorial($iK), $iFn=_factorial($iN), $iFnk=_factorial($iN-$iK) If $iFk="-1.#IND" Or $iFn="-1.#IND" Or $iFnk="-1.#IND" Then SetError(1) Return "-1.#IND" EndIf Return $iFn/($iFk*$iFnk) EndFunc ; #FUNCTION# ================================================================== ; Name...........: _combinationWR ; Description ...: Kombinacja z powtórzeniami (Combination with repetition) ; Syntax.........: _combinationWR($k, $n) ; Parameters ....: Liczby naturalne 0-170 (Natural numbers) ; Return values .: Success - Kombinacja (Combination) ; Failure - "-1.#IND" ; @error=1 Func _combinationWR($iK, $iN) Local $iFk=_factorial($iK), $iFkn1=_factorial($iK+$iN-1), $iFn1=_factorial($iN-1) If $iFk="-1.#IND" Or $iFkn1="-1.#IND" Or $iFn1="-1.#IND" Then SetError(1) Return "-1.#IND" EndIf Return $iFkn1/($iFk*$iFn1) EndFunc ; #FUNCTION# ================================================================== ; Name...........: _variation ; Description ...: Wariacja (Variation) ; Syntax.........: _variation($k, $n) ; Parameters ....: Liczby naturalne 0-170 (Natural numbers) ; Return values .: Success - Wariacja (Variation) ; Failure - "-1.#IND" ; @error=1 Func _variation($iK, $iN) Local $iFn=_factorial($iN), $iFnk=_factorial($iN-$iK) If $iFn="-1.#IND" Or $iFnk="-1.#IND" Then SetError(1) Return "-1.#IND" EndIf Return $iFn/$iFnk EndFunc ; #FUNCTION# ================================================================== ; Name...........: _variationWR ; Description ...: Wariacja z powtórzeniami (Variation with repetition) ; Syntax.........: _variationWR($k, $n) ; Parameters ....: Liczby naturalne 0-170 (Natural numbers) ; Return values .: Success - Wariacja z powtórzeniami (Variation with repetition) ; Failure - "-1.#IND" ; @error=1 Func _variationWR($iK, $iN) If $iK<0 Or (Not IsInt($iK)) Or $iN<0 Or (Not IsInt($iN)) Then SetError(1) Return "-1.#IND" EndIf Return $iN^$iK EndFunc ; #FUNCTION# ================================================================== ; Name...........: _permutation ; Description ...: Permutacja (Permutation) ; Syntax.........: _permutation($n) ; : _permutation($array) - permutacja z powtórzeniami ; (Permutation with repetition) ; Parameters ....: Liczba naturalna 0-170 (Natural number) ; : Jednowymiarowa tablica liczb naturalnych ; (One-dimensional array of natural numbers) ; Return values .: Success - Permutacja (Permutation) ; Failure - "-1.#IND" ; @error=1 Func _permutation($vVar) Local $iPer, $a, $f, $i, $m=1, $s=0 If IsArray($vVar) Then $a=UBound($vVar) If UBound($vVar,0)>1 Then SetError(1) Return "-1.#IND" EndIf If UBound($vVar)>1 Then For $i=1 To $a-1 $f=_factorial($vVar[$i]) If $f="-1.#IND" Then SetError(1) Return "-1.#IND" EndIf $m*=$f $s+=$vVar[$i] Next If $s>$vVar[0] Then SetError(1) Return "-1.#IND" EndIf $f=_factorial($vVar[0]) If $f="-1.#IND" Then SetError(1) Return "-1.#IND" EndIf $iPer=$f/$m Else $iPer=_factorial($vVar[0]) EndIf Else $iPer=_factorial($vVar) EndIf If $iPer="-1.#IND" Then SetError(1) EndIf Return $iPer EndFunc ; #FUNCTION# ================================================================== ; Name...........: _Bin ; Description ...: Zamiana wyrażenia na string liczby binarnej ; (Replacing the expression for the string of binary number) ; Syntax.........: _Bin($var, $len) ; Parameters ....: $var - liczba naturalna (Natural number) ; Return values .: Success - string liczby binarnej (string of binary number) ; Failure - "-1.#IND" - parametr ujemny (negative parameter) ; @error=1 Func _Bin($iVar) Local $sBin="" If $iVar<0 Then SetError(1) Return "-1.#IND" EndIf Do If Mod($iVar,2)=0 Then $iVar/=2 $sBin="0"&$sBin Else $iVar=($iVar-1)/2 $sBin="1"&$sBin EndIf Until $iVar=0 Return $sBin EndFunc ; #FUNCTION# ================================================================== ; Name...........: _BinToDec ; Description ...: Zamienia string liczby binarnej na liczbę dziesiętną ; (Converts binary number string to a decimal number) ; Syntax.........: _BinToDec($bin) ; Parameters ....: $bin - string liczby binarnej (string of binary number) ; Return values .: Success - liczba dziesiętna ; Failure - "-1.#IND" - zawiera znak inny niż 0 lub 1 ; (contains a character other than 0 or 1) ; @error=1 Func _BinToDec($sBin) Local $iLen=StringLen($sBin), $iDec=0, $i, $j, $a For $i=$iLen to 1 Step -1 $j=$iLen-$i $a=StringMid($sBin,$i,1) If $a<>"0" And $a<>1 Then SetError(1) Return "-1.#IND" EndIf $iDec+=Number($a)*2^$j Next Return $iDec EndFunc </syntaxhighlight> Przykład programu testującego bibliotekę UDF (bibliteka powinna mieć nazwę '''math+.au3'''): <syntaxhighlight lang="autoit"> #include"Math+.au3" MsgBox (0,"Max:",_max(1,2.2)) MsgBox (0,"Min:",_min(1,2.2)) MsgBox (0,"Sign",_sign(-17.4)) MsgBox (0,"Średnia arytmetyczna:",_am(1,2)) MsgBox (0,"Średnia arytmetyczna:",_am(1)) Dim $array[5]=[1,2,-3,4,-5.9] MsgBox (0,"Średnia arytmetyczna:",_am($array)&@LF&@error) Dim $array[2][2]=[[1,2],[3,4]] MsgBox (0,"Średnia arytmetyczna:",_am($array)&@LF&@error) Dim $array[5]=[1,2,3,4,5] MsgBox (0,"Średnia geometyczna:",_gm($array)&@LF&@error) MsgBox (0,"Średnia geometyczna:",_gm(2)&@LF&@error) MsgBox (0,"Średnia geometyczna:",_gm(-1)&@LF&@error) MsgBox (0,"Średnia geometyczna:",_gm(2, 3)&@LF&@error) MsgBox (0,"Logarytm dziesiętny:",_log10(100)) MsgBox (0,"Logarytm o dowolnej podstawie:",_logA(8, 2)) MsgBox (0,"Sinus hiperboliczny:",_sinh(-2)) $t=_QRoots(1,2,1) MsgBox (0,"Pierwiastki równania kwadratowego",$t[0]&@LF&$t[1]&@LF&$t[2]) MsgBox (0,"Silnia:",_factorial(10)&@LF&@error) MsgBox (0,"Kombinacja:",_combination(6, 49)&@LF&@error) MsgBox (0,"Kombinacja z powtórzeniami:",_combinationWR(6, 49)&@LF&@error) MsgBox (0,"Permutacja:",_permutation(4)&@LF&@error) Dim $array[3]=[4,2,2] MsgBox (0,"Permutacja:",_permutation($array)&@LF&@error) MsgBox (0,"Liczba binarna:",_Bin(666)&@LF&@error) MsgBox (0,"Liczba binarna:",_Bin(-2)&@LF&@error) MsgBox (0,"BIN>DEC:",_BinToDec(10)&@LF&@error) MsgBox (0,"BIN>DEC:",_BinToDec(12)&@LF&@error) </syntaxhighlight> ==Korzystanie z bibliotek DLL== '''1. W oparciu o funkcję GUICtrlCreateInput napisać funkcję umożliwiającą wprowadzanie stringów określonego typu, np.:liczby rzeczywiste i całkowite, szesnastkowe, ósemkowe, dwójkowe, itp.''' '''Ponadto używając funkcji systemowych wywoływanych przez DllCall(), umożliwić nawigację między polami INPUT klawiszami ENTER oraz strzałka w górę i w dół.''' '''Stworzoną funkcję użyj w prostym skrypcie demonstracyjnym.''' Zadanie jest rozwinięciem zadania z rozdziału '''GUI'''. Została zmieniona i rozbudowana składnie funkcji, ponadto dodano część obsługującą klawisze nawigacyjne. Rozpoznanie użycia dodatkowych klawiszy nawigacyjnych uzyskano za pomocą funkcji systemowej '''GetAsyncKeyState''' z biblioteki "user32.dll". Jej składnia wygląda następująco: SHORT WINAPI GetAsyncKeyState( __in int vKey ); Funkcja przyjmuje jeden parametr typu int, który jest kodem sprawdzanego klawisza. Wartość zwracana jest >0 gdy klawisz został wciśnięty. Kody sprawdzanych klawiszy to (szesnastkowo): ENTER - 0x0d strzałka w dół - 0x28 strzałka w górę - 0x26 Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> $HWin = GUICreate("Wprowadź znaki:",380,200,-1,250) GUICtrlCreateLabel("Dowolne znaki:", 10, 5) $hF1 = GUICtrlCreateInput("", 155, 5, 200, 20,0) GUICtrlCreateLabel("Liczba rzeczywista:", 10, 35) $hF2 = GUICtrlCreateInput("", 155, 35, 200, 20,2) GUICtrlCreateLabel("Liczba całkowita dodatnia i 0:", 10, 65) $hF3 = GUICtrlCreateInput("", 155, 65, 200, 20,2) GUICtrlCreateLabel("Liczbe szesnastkowa:", 10, 95) $hF4 = GUICtrlCreateInput("", 155, 95, 200, 20,2) $hBtn = GUICtrlCreateButton("Ok", 170, 160, 60, 20) GUISetState() Do $msg=GUIGetMsg() $sL1 = _GUICtrlInputRead($hF1, "", "", "begin", $hF4) $sL2 = _GUICtrlInputRead($hF2, "", "R") $sL3 = _GUICtrlInputRead($hF3, "", "I+") $sL4 = _GUICtrlInputRead($hF4, "", "X", "end", $hF1) Until $msg = $GUI_EVENT_CLOSE Or $msg = $hBtn MsgBox(0, "Test:", "Wprowadziłeś: "&@LF&@LF&$sL1&@LF&$sL2&@LF&$sL3&@LF&$sL4, 5) #cs===================================================================== Funkcja umożliwia określenie jakiego typu string ma być akceptowany przez okienko INPUT. Umożliwia wprowadzanie tylko takich znaków, które pasują do zadanego typu stringu. Ponadto umożliwia przemieszczanie się po okienkach INPUT za pomocą klawiszów ENTER, strzalka w górę i w dół Wartosć zwracana - prawidłowy wprowadzony w okienku łańcuch. Składnia: --------- _GUICtrlInputRead ( $hIDCtrl, [ $hWin [, $sOp [, $sPos [, $hJump ]]]] ) Parametry: ---------- $hIDCtrl - ID kontrolki (zwracane przez GUICtrlCreateInput) $hWin - uchwyt do okna GUI, lub jego nazwa, domyślna wartość "" oznacza to samo co "[ACTIVE]" $sOp - rodzaj wprowadzanego stringu -------------------------------------------------------------- "" - dowolne znaki (wartość domyślna) "R" - liczba rzeczywista "R+" - liczby rzeczywiste dodatnie i 0 "I" - liczby całkowite "I+" - liczby całkowite dodatnie i 0 "X" - liczba heksadecymalna "O" - liczba ósemkowa "B" - liczba dwójkowa "A" - tylko litery (także polskie) "A+" - tylko wielkie litery "A-" - tylko małe litery dowolna inna wartość jest traktowana jako wyrazenie regularne $sPos - pozycja kontrolki -------------------------------------------------------------- "" - wewnętrzne, wartość domyślna "begin" - początkowe "end" - końcowe $hJump - ID kontrolki do której należy przeskoczyć po wyjści poza początek lub koniec, tylko dla $sPos="begin" i $sPos="end" #ce;=================================================================== Func _GUICtrlInputRead($hIDCtrl, $hWin="", $sOp="", $sPos="", $hJump=0) Local $sStr, $sWR, $hCtrl Static $aStr1[99] Switch $sOp Case Default, "" $sWR=".*" Case "R", "r" $sWR="^-?\d*\.?\d*$" Case "R+","r+" $sWR="^\d*\.?\d*$" Case "I","i" $sWR="^-?\d*$" Case "I+","i+" $sWR="^\d*$" Case "X","x" $sWR="^[0-9a-fA-F]*$" Case "O","o" $sWR="^[0-7]*$" Case "B","b" $sWR="^[01]*$" Case "A","a" $sWR="^(?i)[a-ząęćłńóśżźĄĆĘŁŃÓŚŻŹ ]*$" Case "A+","a+" $sWR="^[A-ZĄĆĘŁŃÓŚŻŹ ]*$" Case "A-","a-" $sWR="^[a-ząęćłńóśżź ]*$" Case Else $sWR=$sOp EndSwitch $sStr = GUICtrlRead($hIDCtrl) If StringRegExp($sStr, $sWR) Then $aStr1[$hIDCtrl] = $sStr Else GUICtrlSetData($hIDCtrl, $aStr1[$hIDCtrl]) EndIf ;---------obsłga klawiszy nawigacyjnych---------- If $hWin = "" Or $hWin = Default Then $hWin = "[ACTIVE]" $hCtrl = ControlGetHandle($hWin,"", $hIDCtrl) If ControlGetHandle($hWin, "", ControlGetFocus($hWin)) = $hCtrl Then If DllCall("user32.dll", "short", "GetAsyncKeyState", "int", 0x0d)[0] Then Send("{TAB}") Sleep(300) EndIf If DllCall("user32.dll", "short", "GetAsyncKeyState", "int", 0x28)[0] Then Send("{TAB}") If $hJump>0 And $sPos = "end" Then ControlFocus($HWin, "", $hJump) Sleep(300) EndIf If DllCall("user32.dll", "short", "GetAsyncKeyState", "int", 0x26)[0] Then Send("+{TAB}") If $hJump>0 And $sPos = "begin" Then ControlFocus($hWin, "", $hJump) Sleep(300) EndIf EndIf ;----------------------------------------------- Return $sStr EndFunc </syntaxhighlight> ==Konsola tekstowa== '''1. Napisać skrypt umożliwiający uruchamiane w trybie interakcji poleceń i skryptów napisanych w języku interpretera poleceń "cmd.exe". Wyświetlanie wyników i komunikatów błędów w MsgBox.''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <Constants.au3> #include <GUIConstantsEx.au3> GUICreate("Edytor", 300, 600, 800, 250) $hEdit = GUICtrlCreateEdit("", 10, 10, 280, 500) $hStart = GUICtrlCreateButton("Wykonać", 10, 560, 100) $hExit = GUICtrlCreateButton("Rezygnacja", 190, 560, 100) GUISetState() Do Do $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Or $msg=$hExit Then Exit Until $msg = $hStart $hID = Run("cmd.exe ", "", "", $STDERR_CHILD + $STDOUT_CHILD + $STDIN_CHILD) $sMes = "" $sErrmes = "" $sCode = GUICtrlRead($hEdit) If StringRight($sCode, 1) <> @LF Then $sCode &= @LF StdinWrite($hID,$sCode) StdinWrite($hID) Do $sMes &= StdoutRead($hID) Until @error Do $sErrmes &= StderrRead($hID) Until @error If $sErrmes <> "" Then MsgBox(0, "Błąd:", $sErrmes) Else MsgBox(0, "Wynik:", $sMes) EndIf Until False </syntaxhighlight> myiezaw0ykxppo1rn7pqw1pv5b9vrtp 558433 558432 2026-10-03T16:53:18Z Wasta 12503 558433 wikitext text/x-wiki ==Funkcje rekurencyjne== '''1. Napisać funkcję rekurencyjną sumująca liczby całkowite w przedziale od m do n (m i n podawane jako parametry).''' '''Funkcja powinna działać prawidłowo także dla liczb ujemnych, oraz niezależnie od kolejności podanych parametrów.''' '''Jeżeli podamy jeden parametr to sumowanie powinno być od zera lub do zera (dla liczb ujemnych).''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> Func suma($n, $m=0.0) ;drugi parametr opcjonalny, z domyślną wartością 0.0 If $n<$m Then ;kalibrowanie danych, aby można było wpisywać liczby w dowolnej kolejności $pom=$n $n=$p $m=$pom EndIf if $n=$m Then Return $m ;przypadek bazowy dla najmniejszej liczby Return $n+suma($n-1,$m) ;obliczenia rekurencyjne EndFunc </syntaxhighlight> Ilość sumowanych liczb jest ograniczona do ok.4000, przy większej ilości ze względu na możliwość przepełnienia stosu działanie funkcji zostanie przerwane. '''2. Napisać rekurencyjną funkcję obliczającą liczbę e. Funkcja ta powinna korzystać z rekurencyjnej funkcji silna zdefiniowanej w powyższym przykładzie.''' '''Skorzystać z rozwinięcia w szereg e = 1 + 1/1! + 1/2! + ... + 1/n! + ... (graniczna wartość n podawana jako parametr).''' '''(dla sprawdzenia przybliżona wartość e = 2.718281828459...)''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> Func e($n) if $n=0 Then Return 1.0 ;przypadek bazowy dla n=0 Return 1/silnia($n)+e($n-1) ;wywołanie rekurencyjne i wywołanie innej funkcji rekurencyjnej EndFunc Func silnia($n) if $n=0 Then Return 1.0 Return $n*silnia($n-1) EndFunc </syntaxhighlight> Jak widać w powyższym przykładzie funkcja rekurencyjna może w swojej definicji wywoływać inną funkcję rekurencyjną. ==Napisy (stringi)== '''1. Napisać skrypt wyświetlający ile procent znaków w wczytanym z dysku pliku tekstowym stanowi litera a (wielkość litery nie ma znaczenia). Skrypt powinien zawierać zdefiniowaną funkcję zliczającą w stringu ilość wystąpień dowolnego znaku.''' <syntaxhighlight lang="autoit"> ;wywołanie systemowego selektora plików i wczytanie do zmiennej nazwy wybranego pliku $sFile = FileOpenDialog("Wybierz plik tekstowy","","(*.txt)") $sTxt = FileRead($sFile);wczytanie pliku tekstowego do zmiennej $sChr = "a" ;wyliczenie procentowego udziału litery a w całym tekście ;(ilość_a/ilość_znaków w tekście, x100 żeby było w procentach) $iUdzial = 100 * licz_znaki($sTxt, $sChr) / StringLen($sTxt) ; $iUdzial = Round($iUdzial, 2) ;zaokrąglenie wyniku do 2 miejsc po kropce dziesiętnej ;wyświetlenie wyniku na ekranie MsgBox(0,"Stringi - ćwiczenie 1", "Litera '" & $sChr & "' stanowi " & $iUdzial & "% wszystkich znaków") ;funkcja zliczająca ilość wystąpień znaku $sChr w stringu $sTxt Func licz_znaki($sTxt, $sChr) StringReplace($sTxt,$sChr,$sChr) ;zamiana znaków na te same znaki Return @extended ;to makro podaje ilość zamian EndFunc </syntaxhighlight> '''2. Używając funkcji formatującej StringFormat napisać skrypt wyświetlający liczby -445.987, 0.00878, 2011 z wyrównaniem na kropce dziesiętnej jak poniżej:''' -445.987 +0.00878 +2011.00 Tego typu wyrównanie będzie możliwe tylko dla fontów nieproporcjonalnych (o stałej szerokości), np. '''Courier''', '''Courier New''', itp. Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> $v1 = -445.987 $v2 = 0.00878 $v3 = 2011 $format = "%+11.5f\n%+11.5f\n%+11.5f" ;łańcuch formatujący SplashTextOn("Formatowanie liczb:", StringFormat($format, $v1, $v2, $v3),-1,-1,-1,-1,-1,"Courier") Sleep(5000) </syntaxhighlight> ==Wyrażenia regularne== '''1. Napisać skrypt sprawdzający czy podany string jest prawidłową (pod względem formalnym) ścieżką dostępu do pliku.''' Rozwiązanie rozpoczynamy od określenia formatu ścieżki dostępu. Wygląda on następująco: x:\...\...\...\nazwa_pliku itd., gdzie x - dowolna litera od a do z, ... - nazwa podfolderów. W systemie plików NTFS nazwa folderów i plików może składać się z dowolnych znaków z wyjątkiem /\*?<>|:" Maksymalna długość pełnej ścieżki 260 znaków. Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> $sPath = "c:\folder1\folder2\folder3\program.exe" ;przykładowa ścieżka dostępu ;eliminujemy łańcuchy za długie lub zawierające niedozwolone znaki (wzorce alternatywne) ;więcej niż 1 dwukropek, któryś ze znaków /*?<>|" lub jest dłuższy niż 260 znaków ;lub między \\ nic lub tylko białe znaki If StringRegExp($sPath, ':{2,}|[/*?<>|"]|.{260,}|\\\s*\\') Then MsgBox(0, "", "Zła ścieżka dostępu") Else If StringRegExp($sPath,"(?i)^[a-z]:\\") Then ;sprawdzenie formatu ścieżki MsgBox(0, "" ,"Prawidłowa ścieżka dostępu") Else MsgBox(0, "", "Zła ścieżka dostępu") Endif Endif </syntaxhighlight> '''2. Napisać skrypt dzielący dany tekst na pojedyncze słowa. Separatorem słów są białe znaki.''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <Array.au3> ;dołączenie biblioteki Array.au3, aby uzyskać dostęp do funkcji _ArrayDisplay() $txt="matma tata kasetka. roma 1278a" ;przykładowy tekst $tab=StringRegExp($txt,"\S+",3) ;w tablicy $tab znajdą się wszystkie dopasowania, czyli wyrazy ;(w naszym wypadku wyraz może się składać z dowolnych czarnych znaków) _ArrayDisplay($tab) ;a tu można obejrzeć zawartość tablicy </syntaxhighlight> '''3. Zamienić amerykański zapis dowolnej daty (mm-dd-rrrr) na zapis w formacie europejskim (rrrr.mm.dd).''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> $sDataA = "12-22-1952" ;przykładowa data po amerykańsku ;zamiana na europejską z użyciem zapamiętanych dopasowań $sDataE = StringRegExpReplace($sDataA, "(\d{2})-(\d{2})-(\d{4})", "$3.$1.$2") MsgBox(0, $sDataA, $sDataE) </syntaxhighlight> '''4. Napisać skrypt wyszukujący we wczytanym z dysku pliku tekstowym wszystkie słowa zaczynające się i kończące na te same dwie litery.''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <Array.au3> ;wywołanie systemowego selektora plików i wczytanie do zmiennej nazwy wybranego pliku $sFtxt = FileOpenDialog("Wybierz plik tekstowy","","(*.txt)") $sTxt = FileRead($sFtxt) ;wczytanie pliku tekstowego do zmiennej $aTab = _StringRegExp($sTxt,"(?i)\b([a-z]{2})[a-z]*\1\b",1) ;porównanie tekstu z wzorcem _ArrayDisplay($aTab) ;podgląd wyników ;============================================================================================== ;funkcja _StringRegExp (jest to zmodyfikowana funkcja StringRegExp z flagą 4) ;dla $iFlag=0 funkcja zwraca ilość dopasowań, dla $iFlag<>0 zwraca jednowymiarową tablicę ;zawierającą w kolejnych komórkach wszystkie dopasowania ;pozostałe parametry jak dla StringRegExp ;============================================================================================== Func _StringRegExp($sTxt, $sPat, $iFlag=0, $iCount=1) $aTab = StringRegExp($sTxt, $sPat, 4, $iCount) If $iFlag = 0 Then Return UBound($aTab) ;zwrócenie odczytanej ilości dopasowań (dla flag=0) Local $aRes[UBound($aTab)] ;tworzymy tablicę wyników For $i = 0 to UBound($aTab)-1 ;w pętli wpisujemy do tablicy wyników kolejne dopasowania $aRes[$i] = ($aTab[$i])[0] Next Return $aRes ;zwrócenie tablicy wyników (dla flag<>0) EndFunc </syntaxhighlight> ==Wyskakujące okna - prosta interakcja ze skryptem== '''1. Napisać skrypt porównujący wprowadzone z klawiatury hasło, z hasłem zapamiętanym w zmiennej. Skrypt powinien wyświetlić komunikat, czy hasło jest poprawne (w komunikacie umieścić odpowiednie ikonki informacyjne). Na wprowadzenie poprawnego hasła mamy 3 próby, potem skrypt powinien zakończyć działanie (wyświetlając stosowny komunikat).''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> $pas="AutoIt" ;przykładowe hasło (wzorzec) $title="SPRAWDZANIE HASŁA" ;stała część komunikatu wyświetlanego na belce For $i=1 To 3 ;3 krotne sprawdzanie w pętli For...Next ;wprowadzenie hasła z klawiatury, znaki są maskowane $wpas=InputBox($title&" - próba "&$i,"Wprowadź hasło","","*") If $wpas==$pas Then ;sprawdzenie czy hasło i wzorzec są jednakowe (== sprawdza wielkość liter) ;jeżeli tak to wyświetla stosowny komunikat (z ikoną informacyjną) MsgBox(64,$title&" - próba "&$i,"Hasło prawidłowe. ",5) ExitLoop ;i kończymy pętlę po 5 sekundach (ExitLoop) ElseIf $i<3 Then ;jeżeli hasło jest nieprawidłowe, a ilość prób mniejsza od ;można wybrać, czy kończymy, czy próbujemy dalej If MsgBox(5+48,$title&" - próba "&$i,"Hasło nieprawidłowe!"&@LF&"Czy próbujesz ponownie?")=2 Then ;w przypadku rezygnacji stosowny komunikat MsgBox(16,$title&" - próba "&$i,"Hasło nieprawidłowe!"&@LF&"Rezygnacja użytkownika.",5) Exit ;i opuszczenie skryptu EndIf ElseIf $i=3 Then ;nieprawidłowe hasło w trzeciej próbie ;stosowny komunikat, po 5 sekundach MsgBox(16,$title&" - próba "&$i,"Wprowadzono 3 razy złe hasło!"&@LF&"Program zostanie zamknięty.",5) Exit ;kończymy program EndIf Next ;........................................... ;dalej część skryptu, ;działająca gdy wprowadzono prawidłowe hasło ;........................................... </syntaxhighlight> '''2. Napisać skrypt będący przeglądarką plików. Powinien wczytywać wybrany na dysku plik i wyświetlić w okienku. Obsługa plików TXT, BMP, GIF i JPG.''' '''Sposób wyświetlania uzależniony od typu pliku (rozpoznanie po rozszerzeniu).''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> While 1 ;pętla nieskończona ;wywołanie systemowego selektora plików, z domyślnymi rozszerzeniami $file=FileOpenDialog("Wybierz plik tekstowy lub obrazek","","(*.txt; *.bmp; *.jpg; *.gif)") If @error Then Exit ;jeżeli użyto klawisz anuluj lub zamknięcia okna to makro @error=1 i koniec skryptu If StringRight($file,4)=".txt" Then ;jeżeli nazwa pliku kończy się na ".txt" $txt=FileRead($file,10000) ;wczytanie pliku tekstowego do zmiennej SplashTextOn($file,$txt,600,900,20,20,2+4+16,Default,6) ;wywołanie okienka tekstowego Else SplashImageOn($file,$file,800,600,20,100,2+16) ;wywołanie okienka z obrazkiem EndIf WEnd ;koniec pętli </syntaxhighlight> ==GUI== '''1. W oparciu o funkcję GUICtrlCreateInput napisać funkcję umożliwiającą wprowadzanie wyłącznie liczb dziesiętnych. Liczby mogą być dodatnie lub ujemne, całkowite lub z kropką dziesiętną. Stworzoną funkcję użyj w prostym skrypcie demonstracyjnym.''' Wprowadzony string może mieć na początku znak minus (-), następnie dowolną ilość cyfr, kropkę dziesiętną i znowu dowolną ilość cyfr. Oczywiście znak minus i kropka są opcjonalne. Minus może być tylko na początku, a kropka może wystąpić najwyżej jeden raz np.: -1.25, -.02, .1, 0.1, 356 itp. Do sprawdzania poprawności wpisywanej liczby najprościej będzie użyć wyrażeń regularnych. Będzie ono wyglądać następująco: ^-?\d*\.?\d*$ Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> GUICreate("Wprowadź liczbę",250,200,-1,250) $f1=GUICtrlCreateInput("", 10, 5, 200, 20,2) ;wyrównanie do lewej $f2=GUICtrlCreateInput("", 10, 35, 200, 20,2) $f3=GUICtrlCreateInput("", 10, 65, 200, 20,2) $f4=GUICtrlCreateInput("", 10, 95, 200, 20,2) $btn=GUICtrlCreateButton("Ok", 90, 140, 60, 20) GUISetState() Do $msg=GUIGetMsg() $l1= _GUICtrlReadInputNumber($f1) ;liczby rzeczywiste $l2= _GUICtrlReadInputNumber($f2,"+") ;liczby rzeczywiste dodatnia $l3= _GUICtrlReadInputNumber($f3,"I") ;tylko liczby całkowite ze znakiem $l4= _GUICtrlReadInputNumber($f4,"I+") ;tylko liczby całkowite dodatnia If $msg=$btn Then ExitLoop Until $msg=$GUI_EVENT_CLOSE MsgBox(4096, "","Wprowadziłes liczbę: "&Number($l1)&" "&Number($l2)&" "&Number($l3)&" i "&Number($l4)) ;================================================================================================================ ;funkcja umożliwiająca wprowadzenie tylko stringu będącego prawidłowym zapisem liczby dziesiętnej ;do sprawdzenia poprawności stringu używamy wyrażenia regularnego ;aby odtworzyć wartość poprzednią wartość stringu przy kolejnym wywołaniu funkcji używamy ;zmiennej statycznej w postaci tablicy (aby można było obsłużyć jednocześnie większą ilość kontrolek) ;zadeklarowana ilość komórek powinna być większa od łącznej ilości kontrolek (na wszelki wypadek z dużym zapasem) ;Parametry: ;$handle_input - zaczep do kontrolki INPUT ;Parametr opcjonalny: ;$op="R+" lub $op="+" - liczby rzeczywiste dodatnie i 0 ;$op="I" - liczby całkowite ;$op="I+" - liczby całkowite dodatnie i 0 ;dowolna inna wartość - liczba rzeczywista (domyślne) ;================================================================================================================ Func _GUICtrlReadInputNumber($handle_input,$op=Default) Local $liczba, $WR="^-?\d*\.?\d*$" ;deklarowanie statycznej tablicy do przechowywania aktualnej prawidłowej wartości wprowadzanego stringu Static $liczba1[100] If $op="R+" Or $op="r+" Or $op="+" Then $WR="^\d*\.?\d*$" If $op="I" Or $op="i" Then $WR="^-?\d*$" If $op="I+" Or $op="i+" Then $WR="^\d*$" $liczba=GUICtrlRead($handle_input) ;odczytanie aktualnej wartości stringu If StringRegExp($liczba,$WR) Then $liczba1[$handle_input]=$liczba ;jeżeli string jest prawidłowy to zostanie zapamiętany Else GUICtrlSetData($handle_input,$liczba1[$handle_input]) ;jeżeli nie to odtwarzamy poprzednią wersję EndIf Return $liczba EndFunc </syntaxhighlight> '''2. Korzystając z kontrolek GUI napisać skrypt wyświetlający na ekranie zegar analogowo cyfrowy. Aby zajmować jak najmniej miejsca na ekranie zegar powinien mieć możliwość wyświetlania okna bez belki i ramki. W tym stanie zegar powinien mieć atrybut "zawsze na wierzchu". Należy także zapewnić możliwość przemieszczanie zegara w wygodne dla użytkownika miejsce ekranu.''' Wyświetlacz analogowy można by zrealizować rysowania w okienku graficznym, ale prościej będzie użyć jakiejś kontrolki odwzorowującej graficznie zadaną wartość. Do wyboru mamy suwak (SLIDER) lub pasek postępu (PROGRESS). Zdecydowałem się na suwak. Okienko GUI za pomocą parametru exstyle (0x800+8=0x808) ma ustawiony atrybut "zawsze na wierzchu", oraz styl okienka narzędziowego (dzięki temu ikona nie pojawi się na pasku zadań). Ponieważ dla style = 0xc00000 nie są wyświetlane przyciski systemowe okna, musimy je stworzyć sami. Przycisk "X" służy do zamykania okna, natomiast przycisk "S" jest przełącznikiem zmieniającym styl okna (okno z belką i ramką / okno bez belki i ramki). Wyświetlacz cyfrowy został zrealizowany za pomocą kontrolki LABEL. Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> Local $iS1, $msg, $fWSK=True $hGUI=GUICreate("Zegar:", 255, 95, 600, 300, 0xc00000, 0x88) GUISetBkColor(0x00e6ff) GUICtrlSetDefBkColor(0x00e6ff) $hGodziny = GUICtrlCreateSlider(14, 2, 230, 30) GUICtrlSetLimit(-1, 23) ;godziny $hMinuty = GUICtrlCreateSlider(14, 24, 230, 22) GUICtrlSetLimit(-1, 59) ;minuty $hSekundy = GUICtrlCreateSlider(14, 46, 230, 22) GUICtrlSetLimit(-1, 59) ;sekundy $hZegar = GUICtrlCreateLabel("", 45, 68, 190, 40, 0x800) GUICtrlSetFont(-1, 20, 1000, 2, "Comic Sans MS") GUICtrlCreateLabel("H", 4, 6, 12, 12) GUICtrlCreateLabel("M", 4, 28, 12, 12) GUICtrlCreateLabel("S", 4, 50, 12, 12) $hEnd = GUICtrlCreateButton("X", 245, 1, 10, 10) GUICtrlSetBkColor(-1, 0xe07000) $hStyle = GUICtrlCreateButton("S", 244, 20, 10, 10) GUICtrlSetBkColor(-1, 0x00ff00) GUISetState() Do $iH=@HOUR ;odczyt godziny $iM=@MIN ;odczyt minuty $iS=@SEC ;odczyt sekundy If $msg=$hStyle Then ;obsługa przełącznika stylu okna GUISetStyle(0x80000000 * $fWSK + (0xc00000*(Not $fWSK))) $fWSK = Not $fWSK EndIf If $iS<>$iS1 Then ;zmiana ustawień gdy zmieniły się sekundy GUICtrlSetData($hGodziny, $iH) ;ustawienie suwaka godzin GUICtrlSetData($hMinuty, $iM) ;ustawienie suwaka minut GUICtrlSetData($hSekundy, $iS) ;ustawienie suwaka sekund GUICtrlSetData($hZegar, $iH&" : " & $iM & " : " & $iS) ;wyświetlacz cyfrowy $iS1 = $iS EndIf $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $hEnd </syntaxhighlight> ==Przejmowanie kontroli== '''1. W oparciu o zdobyte w tym rozdziale informacje, zmodyfikować program zegara z ćwiczeń w GUI tak, aby możliwa była regulacja przejrzystości okna zegara. Wykorzystamy funkcję ustalającą stopień przejrzystości okna '''WinSetTrans'''. Funkcja ta działa na wszystkich oknach, tak utworzonych przez zewnętrzne procesy, jak i przez sam skrypt. Wystarczy znać zaczep do okna. Nie ma z tym problemu, ponieważ sami je utworzyliśmy. Do okna zegara dodajemy dwa przyciski, jeden ze znakiem '''+''', drugi ze znakiem '''-'''. Naciśnięcie pierwszego powoduje, że okno staje się wyraźniejsze (mniejsze przezroczystość), drugiego jego zblednięcie (większa przezroczystość). Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> Local $iS1, $msg, $fWSK=True, $iTrans=255 $hGUI = GUICreate("Zegar:", 255, 95, 600, 300, 0xc00000, 0x88) GUISetBkColor(0x00e6ff) GUICtrlSetDefBkColor(0x00e6ff) $hGodziny = GUICtrlCreateSlider(14, 2, 230, 30) GUICtrlSetLimit(-1, 23) ;godziny $hMinuty = GUICtrlCreateSlider(14, 24, 230, 22) GUICtrlSetLimit(-1, 59) ;minuty $hSekundy = GUICtrlCreateSlider(14, 46, 230, 22) GUICtrlSetLimit(-1, 59) ;sekundy $hZegar = GUICtrlCreateLabel("", 45, 68, 190, 40, 0x800) GUICtrlSetFont(-1, 20, 1000, 2, "Comic Sans MS") GUICtrlCreateLabel("H", 4, 6, 12, 12) GUICtrlCreateLabel("M", 4, 28, 12, 12) GUICtrlCreateLabel("S", 4, 50, 12, 12) $hEnd = GUICtrlCreateButton("X", 245, 1, 10, 10) GUICtrlSetBkColor(-1, 0xe07000) $hStyle = GUICtrlCreateButton("S", 244, 20, 10, 10) GUICtrlSetBkColor(-1, 0x00ff00) ;dwa nowe przyciski $hPlus = GUICtrlCreateButton("+", 244, 40, 10, 10) GUICtrlSetBkColor(-1, 0xaaff00) $hMinus = GUICtrlCreateButton("-", 244, 60, 10, 10) GUICtrlSetBkColor(-1, 0xaaff00) GUISetState() Do $iH = @HOUR ;odczyt godziny $iM = @MIN ;odczyt minuty $iS = @SEC ;odczyt sekundy Switch $msg Case $hStyle ;obsługa przełącznika stylu okna GUISetStyle(0x80000000 * $fWSK + (0xc00000 * (Not $fWSK))) $fWSK = Not $fWSK Case $hPlus $iTrans = min($iTrans+20, 255) WinSetTrans($hGUI, "", $iTrans) ;zmniejszenie przezroczystości Case $hMinus $iTrans = max($iTrans-20, 30) WinSetTrans($hGUI, "", $iTrans) ;zwiększenie przezroczystości EndSwitch If $iS <> $iS1 Then ;zmiana ustawień gdy zmieniły się sekundy GUICtrlSetData($hGodziny, $iH) ;ustawienie suwaka godzin GUICtrlSetData($hMinuty, $iM) ;ustawienie suwaka minut GUICtrlSetData($hSekundy, $iS) ;ustawienie suwaka sekund GUICtrlSetData($hZegar, $iH & " : " & $iM&" : " & $iS) ;wyświetlacz cyfrowy $iS1 = $iS EndIf $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $hEnd ;funkcje pomocnicze Func min($a, $b) If $a<=$b Then Return $a Return $b EndFunc Func max($a, $b) If $a<=$b Then Return $b Return $a EndFunc </syntaxhighlight> ==Tworzenie bibliotek== '''1. Napisać pozostałą część biblioteki matematycznej, oraz prosty skrypt testujący jej działanie.''' Przykładowe rozwiązanie (zwróćmy uwagę, że funkcje _am(), _gm() i _permutation() są polimorficzne): <syntaxhighlight lang="autoit"> #include-once ; #INDEX# ==================================================================== ; Nazwa .........: Mathematic function ; AutoIt Version : 3.3.8.1 ; Language ......: Polish ; Description ...: Dodatkowe funkcje matematyczne (Additional math functions) ; Author(s) .....: Wasta (2012) ; ============================================================================ ; #CURRENT# ================================================================== ;Const $_PI ;_max ;_min ;_sign ;_am ;_gm ;_log10 ;_logA ;_sinh ;_cosh ;_QRoots ;_factorial ;_combination ;_combinationWR ;_variation ;_variationWR ;_permutation ;_Bin ;_BinToDec ; ============================================================================= Global Const $_PI = 3.14159265358979323846264338328 ; #FUNCTION# ================================================================== ; Name...........: _max ; Description ...: Większy z dwóch parametrów (The larger of the two parameters) ; Syntax.........: _max($var1, $var2) ; Parameters ....: Dwie liczby rzeczywiste (Two real numbers) ; Return values .: Większy z dwóch parametrów (The larger of the two parameters) Func _max ($iVar1, $iVar2) Return $iVar1>=$iVar2 ? $iVar1 : $iVar2 EndFunc ; #FUNCTION# ================================================================== ; Name...........: _min ; Description ...: Mniejszy z dwóch parametrów (The smaller of the two parameters) ; Syntax.........: _max($var1, $var2) ; Parameters ....: Dwie liczby rzeczywiste (Two real numbers) ; Return values .: Większy z dwóch parametrów (The smaller of the two parameters) Func _min ($iVar1, $iVar2) Return $iVar1>=$iVar2 ? $iVar2 : $iVar1 EndFunc ; #FUNCTION# ================================================================== ; Name...........: _sign ; Description ...: Znak liczby (The sign of number) ; Syntax.........: _sign($var) ; Parameters ....: liczba rzeczywista (Real number) ; Return values .: -1 - $var<0 ; 0 - $var=0 ; 1 - $var>0 Func _sign ($iVar) Return ($iVar>0)-($iVar<0) EndFunc ; #FUNCTION# ================================================================== ; Name...........: _am ; Description ...: Średnia arytmetyczna (The arithmetic mean) ; Syntax.........: _am($var1[, $var2]) ; : _am($array) ; Parameters ....: Dwie liczby rzeczywiste (Two real numbers) ; : Jednowymiarowa tablica (One-dimensional array) ; Return values .: Success - Średnia arytmetyczna dwu liczb, lub elementów tablicy. ; (The arithmetic mean of two numbers, or elements of the array) ; Failure - "-1.#IND" ; @error=1 Func _am ($vVar1, $vVar2=False) Local $i, $iSum=0 If @NumParams=2 Then Return ($vVar1+$vVar2)/2 If @NumParams=1 Then If IsArray($vVar1) Then If UBound($vVar1,0)>1 Then SetError(1) Return "-1.#IND" EndIf $n=UBound($vVar1) For $i=0 To $n-1 $iSum+=$vVar1[$i] Next Return $iSum/$n Else Return $vVar1 EndIf EndIf EndFunc ; #FUNCTION# ================================================================== ; Name...........: _gm ; Description ...: Średnia geometryczna (The geometric mean) ; Syntax.........: _gm($var1[, $var2]) ; : _gm($array) ; Parameters ....: Dwie liczby rzeczywiste dodatnie (Two positive real numbers) ; : Jednowymiarowa tablica liczb dodatnich ; (One-dimensional array of positive numbers) ; Return values .: Success - Średnia geometryczna dwu liczb, lub elementów tablicy ; (The geometric mean of two numbers, or elements of the array) ; Failure - "-1.#IND" - tablica wielowymiarowa, lub występuje liczba <=0 ; @error=1 - tablica wielowymiarowa (multidimensional array) ; @error=2 - występuje liczba <=0 (by a number <= 0) Func _gm ($vVar1, $vVar2=False) Local $i, $n, $il=1 If @NumParams=2 Then If $vVar1>0 And $vVar2>0 Then Return Sqrt($vVar1*$vVar2) Else SetError(2) Return "-1.#IND" EndIf EndIf If @NumParams=1 Then If IsArray($vVar1) Then If UBound($vVar1,0)<>1 Then SetError(1) Return "-1.#IND" EndIf $n=UBound($vVar1) For $i=0 To $n-1 If $vVar1[$i]<=0 Then SetError(2) Return "-1.#IND" Else $il*=$vVar1[$i] EndIf Next Return $il^(1/$n) Else If $vVar1>0 Then Return $vVar1 Else SetError(2) Return "-1.#IND" EndIf EndIf EndIf EndFunc ; #FUNCTION# ================================================================== ; Name...........: _log10 ; Description ...: Logarytm dziesiętny (Decimal logarithm) ; Syntax.........: _log10($var) ; Parameters ....: Liczba rzeczywista dodatnia (Positive real number) ; Return values .: Success - Logarytm dziesiętny (Decimal logarithm) ; Failure - "-1.#IND" - $var <= 0 ; @error=1 Func _log10 ($iVar) If $iVar>0 Then Return Log($iVar)/Log(10) SetError(1) Return "-1.#IND" EndFunc ; #FUNCTION# ================================================================== ; Name...........: _logA ; Description ...: Logarytm o dowolnej podstawie (Logarithm of any basis) ; Syntax.........: _logA($var, $base) ; Parameters ....: Liczby rzeczywiste dodatnie (Positive real numbers) ; Return values .: Success - Logarytm o dowolnej podstawie (The logarithm of any base) ; Failure - "-1.#IND" - $var <= 0 or $base <= 0 or $base = 1 ; @error=1 Func _logA ($iVar, $iBase) If $iVar>0 And $iBase>0 And $iBase<>1 Then Return Log($iVar)/Log($iBase) SetError(1) Return "-1.#IND" EndFunc ; #FUNCTION# ================================================================== ; Name...........: _sinh ; Description ...: Sinus hiperboliczny (Hyperbolic sine) ; Syntax.........: _sinh($var) ; Parameters ....: Liczba rzeczywista (Real number) ; Return values .: Sinus hiperboliczny (hyperbolic sine) Func _sinh ($iVar) Return (Exp($iVar)- Exp(-$iVar))/2 EndFunc ; #FUNCTION# ================================================================== ; Name...........: _cosh ; Description ...: Cosinus hiperboliczny (Hyperbolic cosine) ; Syntax.........: _cosh($var) ; Parameters ....: Liczba rzeczywista (Real number) ; Return values .: Cosinus hiperboliczny (hyperbolic cosine) Func _cosh ($iVar) Return (Exp($iVar)+ Exp(-$iVar))/2 EndFunc ; #FUNCTION# ================================================================== ; Name...........: _QRoots ; Description ...: Pierwiastki równania kwadratowego a*x^2 + b*x + c ; (Roots of a quadratic equation) ; Syntax.........: _QRoots($a, $b, $c) ; Parameters ....: Liczbay rzeczywiste (Real numbers) ; Return values .: 3-elementawa tablica wyników (Three-element array results) ; $res[0] - ilość pierwiastków (Number of roots) ; $res[1] - wartość 1 pierwiastka lub "-1.#IND" gdy nie ma pierwiastków ; $res[2] - wartość 2 pierwiastka lub "-1.#IND" gdy nie ma pierwiastków ; $res[2]=$res[1] if $res[0]=1 Func _QRoots ($iA, $iB, $iC) Local $iDelta, $aRes[3]=[0,"-1.#IND","-1.#IND"] $iDelta=$iB^2-4*$iA*$iC Select Case $iDelta=0 $aRes[0]=1 $aRes[1]=-$iB/(2*$iA) $aRes[2]=$aRes[1] Case $iDelta>0 $aRes[0]=2 $aRes[1]=(-$iB-Sqrt($iDelta))/(2*$iA) $aRes[2]=(-$iB+Sqrt($IDelta))/(2*$iA) EndSelect Return $aRes EndFunc ; #FUNCTION# ================================================================== ; Name...........: _factorial ; Description ...: Silnia (Factorial) ; Syntax.........: _factorial($var) ; Parameters ....: Liczba naturalna 0-170 (Natural number) ; Return values .: Success - Silnia (Factorial) ; Failure - "-1.#IND" ; @error=1 - zły parametr (bad parameter) ; @error=2 - przekroczony zakres (range exceeded) Func _factorial($iVar) If $iVar<0 Or (Not IsInt($iVar)) Then SetError(1) Return "-1.#IND" EndIf If $iVar>170 Then SetError(2) Return "-1.#IND" EndIf If $iVar=0 Then Return 1.0 Return $iVar*_factorial($iVar-1) EndFunc ; #FUNCTION# ================================================================== ; Name...........: _combination ; Description ...: Kombinacja (Combination) ; Syntax.........: _combination($k, $n) ; Parameters ....: Liczby naturalne 0-170 (Natural numbers) ; Return values .: Success - Kombinacja (Combination) ; Failure - "-1.#IND" ; @error=1 Func _combination($iK, $iN) Local $iFk=_factorial($iK), $iFn=_factorial($iN), $iFnk=_factorial($iN-$iK) If $iFk="-1.#IND" Or $iFn="-1.#IND" Or $iFnk="-1.#IND" Then SetError(1) Return "-1.#IND" EndIf Return $iFn/($iFk*$iFnk) EndFunc ; #FUNCTION# ================================================================== ; Name...........: _combinationWR ; Description ...: Kombinacja z powtórzeniami (Combination with repetition) ; Syntax.........: _combinationWR($k, $n) ; Parameters ....: Liczby naturalne 0-170 (Natural numbers) ; Return values .: Success - Kombinacja (Combination) ; Failure - "-1.#IND" ; @error=1 Func _combinationWR($iK, $iN) Local $iFk=_factorial($iK), $iFkn1=_factorial($iK+$iN-1), $iFn1=_factorial($iN-1) If $iFk="-1.#IND" Or $iFkn1="-1.#IND" Or $iFn1="-1.#IND" Then SetError(1) Return "-1.#IND" EndIf Return $iFkn1/($iFk*$iFn1) EndFunc ; #FUNCTION# ================================================================== ; Name...........: _variation ; Description ...: Wariacja (Variation) ; Syntax.........: _variation($k, $n) ; Parameters ....: Liczby naturalne 0-170 (Natural numbers) ; Return values .: Success - Wariacja (Variation) ; Failure - "-1.#IND" ; @error=1 Func _variation($iK, $iN) Local $iFn=_factorial($iN), $iFnk=_factorial($iN-$iK) If $iFn="-1.#IND" Or $iFnk="-1.#IND" Then SetError(1) Return "-1.#IND" EndIf Return $iFn/$iFnk EndFunc ; #FUNCTION# ================================================================== ; Name...........: _variationWR ; Description ...: Wariacja z powtórzeniami (Variation with repetition) ; Syntax.........: _variationWR($k, $n) ; Parameters ....: Liczby naturalne 0-170 (Natural numbers) ; Return values .: Success - Wariacja z powtórzeniami (Variation with repetition) ; Failure - "-1.#IND" ; @error=1 Func _variationWR($iK, $iN) If $iK<0 Or (Not IsInt($iK)) Or $iN<0 Or (Not IsInt($iN)) Then SetError(1) Return "-1.#IND" EndIf Return $iN^$iK EndFunc ; #FUNCTION# ================================================================== ; Name...........: _permutation ; Description ...: Permutacja (Permutation) ; Syntax.........: _permutation($n) ; : _permutation($array) - permutacja z powtórzeniami ; (Permutation with repetition) ; Parameters ....: Liczba naturalna 0-170 (Natural number) ; : Jednowymiarowa tablica liczb naturalnych ; (One-dimensional array of natural numbers) ; Return values .: Success - Permutacja (Permutation) ; Failure - "-1.#IND" ; @error=1 Func _permutation($vVar) Local $iPer, $a, $f, $i, $m=1, $s=0 If IsArray($vVar) Then $a=UBound($vVar) If UBound($vVar,0)>1 Then SetError(1) Return "-1.#IND" EndIf If UBound($vVar)>1 Then For $i=1 To $a-1 $f=_factorial($vVar[$i]) If $f="-1.#IND" Then SetError(1) Return "-1.#IND" EndIf $m*=$f $s+=$vVar[$i] Next If $s>$vVar[0] Then SetError(1) Return "-1.#IND" EndIf $f=_factorial($vVar[0]) If $f="-1.#IND" Then SetError(1) Return "-1.#IND" EndIf $iPer=$f/$m Else $iPer=_factorial($vVar[0]) EndIf Else $iPer=_factorial($vVar) EndIf If $iPer="-1.#IND" Then SetError(1) EndIf Return $iPer EndFunc ; #FUNCTION# ================================================================== ; Name...........: _Bin ; Description ...: Zamiana wyrażenia na string liczby binarnej ; (Replacing the expression for the string of binary number) ; Syntax.........: _Bin($var, $len) ; Parameters ....: $var - liczba naturalna (Natural number) ; Return values .: Success - string liczby binarnej (string of binary number) ; Failure - "-1.#IND" - parametr ujemny (negative parameter) ; @error=1 Func _Bin($iVar) Local $sBin="" If $iVar<0 Then SetError(1) Return "-1.#IND" EndIf Do If Mod($iVar,2)=0 Then $iVar/=2 $sBin="0"&$sBin Else $iVar=($iVar-1)/2 $sBin="1"&$sBin EndIf Until $iVar=0 Return $sBin EndFunc ; #FUNCTION# ================================================================== ; Name...........: _BinToDec ; Description ...: Zamienia string liczby binarnej na liczbę dziesiętną ; (Converts binary number string to a decimal number) ; Syntax.........: _BinToDec($bin) ; Parameters ....: $bin - string liczby binarnej (string of binary number) ; Return values .: Success - liczba dziesiętna ; Failure - "-1.#IND" - zawiera znak inny niż 0 lub 1 ; (contains a character other than 0 or 1) ; @error=1 Func _BinToDec($sBin) Local $iLen=StringLen($sBin), $iDec=0, $i, $j, $a For $i=$iLen to 1 Step -1 $j=$iLen-$i $a=StringMid($sBin,$i,1) If $a<>"0" And $a<>1 Then SetError(1) Return "-1.#IND" EndIf $iDec+=Number($a)*2^$j Next Return $iDec EndFunc </syntaxhighlight> Przykład programu testującego bibliotekę UDF (bibliteka powinna mieć nazwę '''math+.au3'''): <syntaxhighlight lang="autoit"> #include"Math+.au3" MsgBox (0,"Max:",_max(1,2.2)) MsgBox (0,"Min:",_min(1,2.2)) MsgBox (0,"Sign",_sign(-17.4)) MsgBox (0,"Średnia arytmetyczna:",_am(1,2)) MsgBox (0,"Średnia arytmetyczna:",_am(1)) Dim $array[5]=[1,2,-3,4,-5.9] MsgBox (0,"Średnia arytmetyczna:",_am($array)&@LF&@error) Dim $array[2][2]=[[1,2],[3,4]] MsgBox (0,"Średnia arytmetyczna:",_am($array)&@LF&@error) Dim $array[5]=[1,2,3,4,5] MsgBox (0,"Średnia geometyczna:",_gm($array)&@LF&@error) MsgBox (0,"Średnia geometyczna:",_gm(2)&@LF&@error) MsgBox (0,"Średnia geometyczna:",_gm(-1)&@LF&@error) MsgBox (0,"Średnia geometyczna:",_gm(2, 3)&@LF&@error) MsgBox (0,"Logarytm dziesiętny:",_log10(100)) MsgBox (0,"Logarytm o dowolnej podstawie:",_logA(8, 2)) MsgBox (0,"Sinus hiperboliczny:",_sinh(-2)) $t=_QRoots(1,2,1) MsgBox (0,"Pierwiastki równania kwadratowego",$t[0]&@LF&$t[1]&@LF&$t[2]) MsgBox (0,"Silnia:",_factorial(10)&@LF&@error) MsgBox (0,"Kombinacja:",_combination(6, 49)&@LF&@error) MsgBox (0,"Kombinacja z powtórzeniami:",_combinationWR(6, 49)&@LF&@error) MsgBox (0,"Permutacja:",_permutation(4)&@LF&@error) Dim $array[3]=[4,2,2] MsgBox (0,"Permutacja:",_permutation($array)&@LF&@error) MsgBox (0,"Liczba binarna:",_Bin(666)&@LF&@error) MsgBox (0,"Liczba binarna:",_Bin(-2)&@LF&@error) MsgBox (0,"BIN>DEC:",_BinToDec(10)&@LF&@error) MsgBox (0,"BIN>DEC:",_BinToDec(12)&@LF&@error) </syntaxhighlight> ==Korzystanie z bibliotek DLL== '''1. W oparciu o funkcję GUICtrlCreateInput napisać funkcję umożliwiającą wprowadzanie stringów określonego typu, np.:liczby rzeczywiste i całkowite, szesnastkowe, ósemkowe, dwójkowe, itp.''' '''Ponadto używając funkcji systemowych wywoływanych przez DllCall(), umożliwić nawigację między polami INPUT klawiszami ENTER oraz strzałka w górę i w dół.''' '''Stworzoną funkcję użyj w prostym skrypcie demonstracyjnym.''' Zadanie jest rozwinięciem zadania z rozdziału '''GUI'''. Została zmieniona i rozbudowana składnie funkcji, ponadto dodano część obsługującą klawisze nawigacyjne. Rozpoznanie użycia dodatkowych klawiszy nawigacyjnych uzyskano za pomocą funkcji systemowej '''GetAsyncKeyState''' z biblioteki "user32.dll". Jej składnia wygląda następująco: SHORT WINAPI GetAsyncKeyState( __in int vKey ); Funkcja przyjmuje jeden parametr typu int, który jest kodem sprawdzanego klawisza. Wartość zwracana jest >0 gdy klawisz został wciśnięty. Kody sprawdzanych klawiszy to (szesnastkowo): ENTER - 0x0d strzałka w dół - 0x28 strzałka w górę - 0x26 Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> $HWin = GUICreate("Wprowadź znaki:",380,200,-1,250) GUICtrlCreateLabel("Dowolne znaki:", 10, 5) $hF1 = GUICtrlCreateInput("", 155, 5, 200, 20,0) GUICtrlCreateLabel("Liczba rzeczywista:", 10, 35) $hF2 = GUICtrlCreateInput("", 155, 35, 200, 20,2) GUICtrlCreateLabel("Liczba całkowita dodatnia i 0:", 10, 65) $hF3 = GUICtrlCreateInput("", 155, 65, 200, 20,2) GUICtrlCreateLabel("Liczbe szesnastkowa:", 10, 95) $hF4 = GUICtrlCreateInput("", 155, 95, 200, 20,2) $hBtn = GUICtrlCreateButton("Ok", 170, 160, 60, 20) GUISetState() Do $msg=GUIGetMsg() $sL1 = _GUICtrlInputRead($hF1, "", "", "begin", $hF4) $sL2 = _GUICtrlInputRead($hF2, "", "R") $sL3 = _GUICtrlInputRead($hF3, "", "I+") $sL4 = _GUICtrlInputRead($hF4, "", "X", "end", $hF1) Until $msg = $GUI_EVENT_CLOSE Or $msg = $hBtn MsgBox(0, "Test:", "Wprowadziłeś: "&@LF&@LF&$sL1&@LF&$sL2&@LF&$sL3&@LF&$sL4, 5) #cs===================================================================== Funkcja umożliwia określenie jakiego typu string ma być akceptowany przez okienko INPUT. Umożliwia wprowadzanie tylko takich znaków, które pasują do zadanego typu stringu. Ponadto umożliwia przemieszczanie się po okienkach INPUT za pomocą klawiszów ENTER, strzalka w górę i w dół Wartosć zwracana - prawidłowy wprowadzony w okienku łańcuch. Składnia: --------- _GUICtrlInputRead ( $hIDCtrl, [ $hWin [, $sOp [, $sPos [, $hJump ]]]] ) Parametry: ---------- $hIDCtrl - ID kontrolki (zwracane przez GUICtrlCreateInput) $hWin - uchwyt do okna GUI, lub jego nazwa, domyślna wartość "" oznacza to samo co "[ACTIVE]" $sOp - rodzaj wprowadzanego stringu -------------------------------------------------------------- "" - dowolne znaki (wartość domyślna) "R" - liczba rzeczywista "R+" - liczby rzeczywiste dodatnie i 0 "I" - liczby całkowite "I+" - liczby całkowite dodatnie i 0 "X" - liczba heksadecymalna "O" - liczba ósemkowa "B" - liczba dwójkowa "A" - tylko litery (także polskie) "A+" - tylko wielkie litery "A-" - tylko małe litery dowolna inna wartość jest traktowana jako wyrazenie regularne $sPos - pozycja kontrolki -------------------------------------------------------------- "" - wewnętrzne, wartość domyślna "begin" - początkowe "end" - końcowe $hJump - ID kontrolki do której należy przeskoczyć po wyjści poza początek lub koniec, tylko dla $sPos="begin" i $sPos="end" #ce;=================================================================== Func _GUICtrlInputRead($hIDCtrl, $hWin="", $sOp="", $sPos="", $hJump=0) Local $sStr, $sWR, $hCtrl Static $aStr1[99] Switch $sOp Case Default, "" $sWR=".*" Case "R", "r" $sWR="^-?\d*\.?\d*$" Case "R+","r+" $sWR="^\d*\.?\d*$" Case "I","i" $sWR="^-?\d*$" Case "I+","i+" $sWR="^\d*$" Case "X","x" $sWR="^[0-9a-fA-F]*$" Case "O","o" $sWR="^[0-7]*$" Case "B","b" $sWR="^[01]*$" Case "A","a" $sWR="^(?i)[a-ząęćłńóśżźĄĆĘŁŃÓŚŻŹ ]*$" Case "A+","a+" $sWR="^[A-ZĄĆĘŁŃÓŚŻŹ ]*$" Case "A-","a-" $sWR="^[a-ząęćłńóśżź ]*$" Case Else $sWR=$sOp EndSwitch $sStr = GUICtrlRead($hIDCtrl) If StringRegExp($sStr, $sWR) Then $aStr1[$hIDCtrl] = $sStr Else GUICtrlSetData($hIDCtrl, $aStr1[$hIDCtrl]) EndIf ;---------obsłga klawiszy nawigacyjnych---------- If $hWin = "" Or $hWin = Default Then $hWin = "[ACTIVE]" $hCtrl = ControlGetHandle($hWin,"", $hIDCtrl) If ControlGetHandle($hWin, "", ControlGetFocus($hWin)) = $hCtrl Then If DllCall("user32.dll", "short", "GetAsyncKeyState", "int", 0x0d)[0] Then Send("{TAB}") Sleep(300) EndIf If DllCall("user32.dll", "short", "GetAsyncKeyState", "int", 0x28)[0] Then Send("{TAB}") If $hJump>0 And $sPos = "end" Then ControlFocus($HWin, "", $hJump) Sleep(300) EndIf If DllCall("user32.dll", "short", "GetAsyncKeyState", "int", 0x26)[0] Then Send("+{TAB}") If $hJump>0 And $sPos = "begin" Then ControlFocus($hWin, "", $hJump) Sleep(300) EndIf EndIf ;----------------------------------------------- Return $sStr EndFunc </syntaxhighlight> ==Konsola tekstowa== '''1. Napisać skrypt umożliwiający uruchamiane w trybie interakcji poleceń i skryptów napisanych w języku interpretera poleceń "cmd.exe". Wyświetlanie wyników i komunikatów błędów w MsgBox.''' Przykładowe rozwiązanie: <syntaxhighlight lang="autoit"> #include <Constants.au3> #include <GUIConstantsEx.au3> GUICreate("Edytor", 300, 600, 800, 250) $hEdit = GUICtrlCreateEdit("", 10, 10, 280, 500) $hStart = GUICtrlCreateButton("Wykonać", 10, 560, 100) $hExit = GUICtrlCreateButton("Rezygnacja", 190, 560, 100) GUISetState() Do Do $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Or $msg=$hExit Then Exit Until $msg = $hStart $hID = Run("cmd.exe ", "", "", $STDERR_CHILD + $STDOUT_CHILD + $STDIN_CHILD) $sMes = "" $sErrmes = "" $sCode = GUICtrlRead($hEdit) If StringRight($sCode, 1) <> @LF Then $sCode &= @LF StdinWrite($hID,$sCode) StdinWrite($hID) Do $sMes &= StdoutRead($hID) Until @error Do $sErrmes &= StderrRead($hID) Until @error If $sErrmes <> "" Then MsgBox(0, "Błąd:", $sErrmes) Else MsgBox(0, "Wynik:", $sMes) EndIf Until False </syntaxhighlight> 9w7geyznxgvkm868rbt1fwoobxdfrp6 AutoIt/Biblioteki DLL 0 26200 558453 399041 2026-10-03T18:35:25Z Wasta 12503 558453 wikitext text/x-wiki =Co to są biblioteki DLL?= Za Wiki: '''DLL''' (z ang. Dynamic-Link Library - biblioteka łączona dynamicznie) – w środowisku Microsoft Windows biblioteka współdzielona (z ang. shared library), która przechowuje implementacje różnych podprogramów programu lub zasoby programu. Podprogramy i zasoby zawarte w bibliotece DLL mogą być wykorzystane bezpośrednio lub pośrednio (za pośrednictwem innej biblioteki DLL) przez dowolny plik wykonywalny, sama biblioteka DLL nie jest samodzielnym programem. Funkcje biblioteki dynamicznej (DLL) mogą być jednocześnie (w tym samym czasie) importowane przez wiele programów (stąd określenie: biblioteka współdzielona), dzięki temu pamięć operacyjna jest mniej obciążona. Biblioteki DLL mogą być importowane statycznie bądź dynamicznie. W przeciwieństwie do bibliotek statycznych, które są łączone z programem w czasie jego konsolidowania, biblioteki DLL importowane dynamicznie są oddzielnym fragmentem programu i ich modyfikacja nie wymaga przeprowadzenia ponownej konsolidacji, jednak problem z biblioteką (brak importowanych funkcji lub problem z wczytywaniem biblioteki) całkowicie uniemożliwia uruchomienie programu. Biblioteki importowane dynamicznie są wczytywane do pamięci operacyjnej dopiero w momencie określonym przez programistę (przeważnie gdy faktycznie są potrzebne) - stąd określenie: biblioteka dynamicznie łączona - przez co pliki DLL często są wykorzystywane w różnych programach jako wtyczki. W systemie Microsoft Windows biblioteki DLL mają rozszerzenia .dll, .ocx (gdy biblioteka jest kontrolką ActiveX), .cpl (gdy biblioteka jest rozszerzeniem Panelu Sterowania), .drv (gdy jest przestarzałym sterownikiem), i mogą być wykorzystane w programach napisanych w różnych językach przeznaczonych na platformę Windows. W AutoIt nie można tworzyć własnych bibliotek DLL (DLL można tworzyć tylko w językach kompilowanych takich jak C, C++, C#, D, VB, Delphi itp.), można za to korzystać z gotowych bibliotek. W zasadzie większość funkcji AutoIt”a to nakładki na funkcje DLL systemu operacyjnego (np. wszystkie funkcje GUI). ==DllCall== Wywołanie funkcji z biblioteki dynamicznej DLL. DllCall ("dll", "typ_zwracany", "funkcja" [, typ1, param1 [, typN, paramN]]) Parametry: '''dll''' - nazwa używanego pliku DLL. np. "user32.dll". Może być użyty uchwyt uzyskany funkcją DllOpen (patrz uwagi). '''typ_zwracany''' - zwracany typ funkcji (patrz niżej). '''funkcja''' - nazwa funkcji wywoływanej (np. "MessageBox") lub jej numer porządkowy (np. 62) w bibliotece DLL. '''typ1''' - [opcjonalnie] typ parametru 1 (patrz uwagi). '''param1''' - [opcjonalnie] wartość parametru 1 (patrz uwagi). ... '''typN''' - [opcjonalnie] typ n-tego parametru (patrz uwagi). '''paramN''' - [opcjonalnie] wartość n-tego parametru (patrz uwagi). Prawidłowe typy: '''Typ''' | '''Szczegóły''' -------------------------------------------------------------------------------- none | żadna wartość (tylko dla wartości zwracanej - odpowiednik void w C) -------------------------------------------------------------------------------- BYTE | 8 bitowa (1 bajt) liczba całkowita bez znaku -------------------------------------------------------------------------------- BOOLEAN | 8 bitowa (1 bajt) liczba całkowita bez znaku -------------------------------------------------------------------------------- short | 16 bitowa (2 bajty) liczba całkowita ze znakiem -------------------------------------------------------------------------------- USHORT | 16 bitowa (2 bajty) liczba całkowita bez znaku -------------------------------------------------------------------------------- WORD | 16 bitowa (2 bajty) liczba całkowita bez znaku -------------------------------------------------------------------------------- int | 32 bitowa (4 bajty) liczba całkowita ze znakiem -------------------------------------------------------------------------------- long | 32 bitowa (4 bajty) liczba całkowita ze znakiem -------------------------------------------------------------------------------- BOOL | 32 bitowa (4 bajty) liczba całkowita ze znakiem -------------------------------------------------------------------------------- UINT | 32 bitowa (4 bajty) liczba całkowitą bez znaku -------------------------------------------------------------------------------- ULONG | 32 bitowa (4 bajty) liczba całkowitą bez znaku -------------------------------------------------------------------------------- DWORD | 32 bitowa (4 bajty) liczba całkowitą bez znaku -------------------------------------------------------------------------------- INT64 | 64 bitowa (8 bajtów) liczba całkowita ze znakiem -------------------------------------------------------------------------------- UINT64 | 64 bitowa (8 bajtów) liczba całkowita bez znaku -------------------------------------------------------------------------------- ptr | ogólny wskaźnik, 32 lub 64 bitowa liczba całkowita bez znaku | (w zależności od wersji AutoIt - x86 lub x64) -------------------------------------------------------------------------------- HWND | uchwyt okna (wskaźnik), 32 bitowa liczba całkowita -------------------------------------------------------------------------------- HANDLE | uchwyt (wskaźnik), 32 bitowa liczba całkowita -------------------------------------------------------------------------------- float | 32 bitowa liczba zmiennoprzecinkowa -------------------------------------------------------------------------------- double | 64 bitowa liczba zmiennoprzecinkowa podwójnej precyzji -------------------------------------------------------------------------------- INT_PTR | liczba całkowita wystarczająco duża, aby przechowywać wskaźnik LONG_PTR | (32 lub 64 bitowy, zależnie od wersji AutoIt) LRESULT | lParam | UINT_PTR | ULONG_PTR | DWORD_PTR | WPARAM | -------------------------------------------------------------------------------- str | string ANSI (maksymalnie 65536 znaków) -------------------------------------------------------------------------------- wstr | string UNICODE (maksymalnie 65536 znaków) -------------------------------------------------------------------------------- struct | struktura stworzona przez DllStructCreate() -------------------------------------------------------------------------------- * | dodanie * na końcu opisu typu oznacza przekazanie parametru | przez referencję (np. "int*") -------------------------------------------------------------------------------- Konwersje z typów systemu Windows API do typów AutoIt: '''Typ API''' | '''Typ AutoIt''' -------------------------------------------------------------------------------- LPCSTR / LPSTR | str -------------------------------------------------------------------------------- LPCWSTR / LPWSTR | wstr -------------------------------------------------------------------------------- LPVOID | ptr -------------------------------------------------------------------------------- LPxyz | xyz* -------------------------------------------------------------------------------- HINSTANCE | handle -------------------------------------------------------------------------------- HRESULT | long -------------------------------------------------------------------------------- LONGLONG / LARGE_INTEGER | INT64 -------------------------------------------------------------------------------- ULONGLONG / ULARGE_INTEGER | UINT64 SIZE_T | ULONG_PTR Zwracana wartość: Sukces: tablica wyników: $array [0] = wartość zwracana przez funkcję $array [1] = param1 $array [2] = param2 ... $array [n] = paramN @error = 0. Błąd: makro @error przyjmuje wartość: 1 nie można użyć pliku DLL 2 nieznany "typ_zwracany" 3 "funkcja" nie znajduje się w pliku DLL 4 zła ilość parametrów 5 zły parametr '''Uwagi:''' Jeżeli podamy nazwę pliku DLL, biblioteka jest ładowana automatycznie, a następnie zamykana po zakończeniu wywołania. Jeśli chcemy ręcznie sterować ładowaniem DLL należy użyć funkcji DllOpen i DllClose, oraz używać uchwyt zamiast nazwy pliku. Aby móc korzystać z bibliotek DLL należy dokładnie poznać sposób wywoływania zawartych w nich funkcji. Dla bibliotek systemowych Windows bardzo pomocna będzie witryna MSDN. * [http://msdn.microsoft.com/en-us/windows/desktop http://msdn.microsoft.com/en-us/windows/desktop - Strona MSDN] * [http://msdn.microsoft.com/en-us/library/aa383686%28VS.85%29.aspx http://msdn.microsoft.com/en-us/library/aa383686%28VS.85%29.aspx - Strona MSDN Functions by Category] ==DllCallAddress== Dynamiczne wywołanie funkcji pod określonym adresem pamięci. DllCallAddress ("typ_zwracany", adres [, typ1, param1 [, typN, paramN]]) Opis jak dla DllCall(). '''Ostrzeżenie:''' Jest to zaawansowana funkcja. Niepoprawne użycie może spowodować awarię Autoita. Przed skorzystaniem z tej funkcji upewnij się, że musisz jej użyć ponieważ DllCall() nie robi tego, czego oczekujesz. ==DllOpen== Otwiera plik DLL do użycia przez DllCall. DllOpen ("nazwa_pliku") Parametry: '''nazwa_pliku''' - nazwa otwieranego pliku DLL. Wartość zwracana: Sukces: uchwyt (handle) do biblioteki DLL. Błąd: -1 '''Uwagi:''' Po zakończeniu pracy z biblioteką DLL, należy zamknąć ją przy użyciu funkcji DllClose. Autoita wprawdzie zamyka wszystkie pliki po zakończeniu działania skryptu, ale lepiej jawnie użyć DllClose. ==DllClose== Zamyka wcześniej otwarty DLL. DllClose (dll_handle) Parametry: '''dll_handle''' - uchwyt do DLL, zwracany przez wywołaną wcześniej funkcję DllOpen. Funkcja nie zwraca żadnej wartości. Przykład (wywołanie MsgBox bezpośrednio z DLL): <syntaxhighlight lang="autoit"> Local $dll = DllOpen("user32.dll") Local $result = DllCall($dll, "int", "MessageBox", "hwnd", 0, "str", "Nazwa okna", "str", "Jakiś tekst", "int", 0) DllClose($dll) </syntaxhighlight> =Co to jest struktura?= '''Struktura''' lub '''rekord''' - to złożony typ danych występujący w wielu językach programowania, grupujący logicznie powiązane ze sobą dane różnego typu w jednym obszarze pamięci. Składowe struktury - pola - są etykietowane, tj. mają swoje unikatowe nazwy; poprzez podanie nazwy otrzymuje się dostęp do danego pola. Struktury są wykorzystywane między innymi do wymiany danych pomiędzy skryptem, a funkcjami DLL. Ponieważ AutoIt w zasadzie nie zawiera typu rekordowego danych, struktury nie są tworzone bezpośrednio, lecz za pośrednictwem odpowiedniej funkcji (DllStructCreate()) i stringu z opisem ich budowy. Także manipulowanie strukturami odbywa się za pośrednictwem specjalnie przeznaczonych do tego funkcji. ==DllStructCreate== Tworzy strukturę danych w stylu C / C + +, do zastosowania w wywołaniu DllCall. DllStructCreate (struktura [, wskaźnik]) Parametry: '''struktura''' - ciąg znaków reprezentujący tworzoną strukturę (patrz uwagi). '''wskaźnik''' - [opcjonalnie] wskaźnik do tworzonej struktury danych, jeżeli strukturę chcemy stworzyć w określonym miejscu pamięci. Wartość zwracana: Sukces: string ze strukturą do użycia w wywołaniach DllStruct (@error = 0) Błąd: 0 (makro @error przyjmie wartość:) 1 – wartość przekazana do DllStructCreate nie jest łańcuchem (stringiem) 2 - nieznany typ danych w przetwarzanym łańcuchu 3 - nie udało się przydzielić pamięci potrzebnej do struktury lub pointer = 0 4 - błąd przydzielania pamięci dla przetwarzanego łańcucha '''Typ''' | '''Szczegóły''' -------------------------------------------------------------------------------- BYTE | 8 bitowa liczba całkowita bez znaku -------------------------------------------------------------------------------- BOOLEAN | 8 bitowa liczba całkowita bez znaku -------------------------------------------------------------------------------- CHAR | 8 bitowy kod ASCII -------------------------------------------------------------------------------- WCHAR | 16 bitowy kod UNICODE -------------------------------------------------------------------------------- short | 16 bitowa liczba całkowita ze znakiem -------------------------------------------------------------------------------- USHORT | 16 bitowa liczba całkowita bez znaku -------------------------------------------------------------------------------- WORD | 16 bitowa liczba całkowita bez znaku -------------------------------------------------------------------------------- int | 32 bitowa liczba całkowita ze znakiem -------------------------------------------------------------------------------- long | 32 bit liczba całkowita ze znakiem -------------------------------------------------------------------------------- BOOL | 32 bit liczba całkowita ze znakiem -------------------------------------------------------------------------------- UINT | 32 bitowa liczba całkowita bez znaku -------------------------------------------------------------------------------- ULONG | 32 bitowa liczba całkowita bez znaku -------------------------------------------------------------------------------- DWORD | 32 bitowa liczba całkowita bez znaku -------------------------------------------------------------------------------- Int64 | 64 bitowa liczba całkowita ze znakiem -------------------------------------------------------------------------------- UINT64 | 64 bitowa liczba całkowita bez znaku -------------------------------------------------------------------------------- ptr | 32 lub 64 bitowa całkowita bez znaku | (w zależności od wersji AutoIt - x86 lub x64) -------------------------------------------------------------------------------- HWND | 32 bitowa liczba całkowita -------------------------------------------------------------------------------- HANDLE | 32 bitowa liczba całkowita -------------------------------------------------------------------------------- float | 32 bitowa liczba zmiennoprzecinkowa -------------------------------------------------------------------------------- double | 64 bitowa liczba zmiennoprzecinkowa -------------------------------------------------------------------------------- INT_PTR | 32 lub 64 bitowa całkowita bez znaku LONG_PTR | (w zależności od wersji AutoIt - x86 lub x64) LRESULT | lParam | -------------------------------------------------------------------------------- UINT_PTR | 32 lub 64 bitowa całkowita bez znaku ULONG_PTR | (w zależności od wersji AutoIt - x86 lub x64) DWORD_PTR | WPARAM | -------------------------------------------------------------------------------- '''Uwagi:''' Każdy typ danych musi być oddzielony średnikiem ';'. Możliwe jest tworzenie tablic poprzez dodanie "[rozmiar]" po typie danych, np.: DllStructCreate ("int; char [128]"). Nazwę elementu można dodać podobnie do deklaracji w C, np. : DllStructCreate ("int n; char buffer[128]"). Tą nazwę można używać w następnych wywołaniach funkcji DllStruct … Nazwa może składać się jedynie ze znaków alfanumerycznych i podkreślenia. Aby zwolnić przydzieloną pamięć wystarczy ustawić zmienną na 0. Przykład tworzenia struktur: <syntaxhighlight lang="autoit"> ;struktura bez nazw elementów $struct1=DllStructCreate("int; char[16]; ptr; byte") ;struktura z nazwami elementów $struct2=DllStructCreate("int n; char s_1[16]; ptr p1; byte l") </syntaxhighlight> ==DllStructSetData== Nadaje wartość elementowi w strukturze. DllStructSetData (struktura, element, wartość [, indeks]) Parametry: '''struktura''' - struktura danych zwrócona przez DllStructCreate. '''element''' - do którego elementu struktury chcemy uzyskać dostęp, nr elementu (numeracja od 1) lub nazwa zdefiniowana w DllStructCreate. '''wartość''' - nowa wartość elementu struktury. '''indeks''' - [opcjonalnie] dla elementów będących tablicami określa indeks komórki, której wartość będzie ustawiana. Jeżeli parametr pominiemy lub podamy jako Default, domyślny indeks początkowy wyniesie 1, a następnie ustawionych zostanie tyle komórek, ile jest podanych wartości, np.: DllStructSetData($st, tab, 'AutoIt', Default). Jest to przydatne do szybkiego ustawiania stringów. Parametr nie jest używany dla elementów nie będących tablicami. Wartość zwracana: Sukces: wartość, która jest ponownie odczytywana ze struktury (makro @error = 0) Błąd: 0 (makro @error ustawione na:) 1 – nieprawidłowa struktura 2 – element po za zakresem 3 – indeks po za zakresem 4 – nieznany typ danych 5 – indeks <=0 '''Uwagi:''' Kiedy element jest typu char [n], byte [n] lub ubyte [n] dane mogą być stringiem, w przeciwnym razie muszą być liczbą. Przykład: <syntaxhighlight lang="autoit"> $struct1=DllStructCreate("int; char[16]; ptr; byte") $struct2=DllStructCreate("int n; char s_1[16]; ptr p1; byte l") ;nadanie wartości przez numer elementu DllStructSetData($struct1,1,666) ;nadanie wartości przez nazwę DllStructSetData($struct2,"s_1","AutoIt") </syntaxhighlight> ==DllStructGetData== Zwraca wartość elementu struktury. DllStructGetData (struktura, element [, indeks]) Parametry: '''struktura''' - struktura danych zwrócona przez DllStructCreate. '''element''' - do którego elementu struktury chcemy uzyskać dostęp (numeracja rozpoczyna się od 1), lub nazwa elementu ustalona w DllStructCreate. '''indeks''' - [opcjonalnie] dla elementów, które są tablicami wartość ta określa indeks komórki do pobrania wartości. Jeżeli parametr pominiemy lub podamy jako Default, wtedy cała tablica zostanie pobrana (przydatna do szybkiego pobierania napisów). Parametr nie jest używany dla elementów nie będących tablicami. Char [n], byte [n] i ubyte [n] zwróci wszystkie dane elementu, gdy indeks zostanie pominięty. Wartość zwracana: Sukces: wartość elementu struktury (@error = 0) Błąd: 0 (makro @error ustawione na:) 1 – nieprawidłowa struktura 2 – element po za zakresem 3 – indeks po za zakresem 4 – nieznany typ danych 5 – indeks <=0 '''Uwagi:''' Kiedy element jest char [n] oraz indeks zostanie pominięty dane zwracane są łańcuchem znaków, gdy element jest bajt [n] lub ubyte [n] oraz indeks zostanie pominięty, dane zwracane są typu binarny, w innych przypadkach zawsze zwracana jest liczba. Przykład: <syntaxhighlight lang="autoit"> $struct=DllStructCreate("int n; char s_1[16]; ptr p1; byte l") DllStructSetData($struct,1,666) DllStructSetData($struct,"s_1","AutoIt") MsgBox(0,"",DllStructGetData($struct,"n")&@LF&DllStructGetData($struct,2)) </syntaxhighlight> ==DllStructGetPtr== Zwraca wskaźnik do struktury danych lub do jej elementu. DllStructGetPtr ( struktura [,element] ) Parametry: '''struktura''' - struktura danych zwrócona przez DllStructCreate. '''element''' - [opcjonalnie] element struktury, dla którego zostanie zwrócony wskaźnik (numer lub nazwa utworzona w DllStructCreate). Wartość zwracana: Sukces: wskaźnik do struktury lub jej elementu (@error = 0). Błąd: 0 (makro @error ustawione na:) 1 – nieprawidłowa struktura 2 – elementu po za zakresem '''Uwagi:''' Używany w DllCall. Przykład: <syntaxhighlight lang="autoit"> $struct=DllStructCreate("int; char[16]; ptr; byte") MsgBox(0,"",DllStructGetPtr($struct)) </syntaxhighlight> ==DllStructGetSize== Zwraca rozmiar struktury w bajtach. DllStructGetSize (struktura) Parametry: '''struktura''' - struktura zwrócona przez DllStructCreate. Wartość zwracana: Sukces: rozmiar struktury w bajtach (@error = 0). Błąd: 0 (makro @error ustawione na:) 1 – nieprawidłowa struktura Przykład: <syntaxhighlight lang="autoit"> $struct=DllStructCreate("int; char[16]; ptr; byte") MsgBox(0,"",DllStructGetPtr($struct)) </syntaxhighlight> ==IsDllStruct== Sprawdza czy zmienna zawiera strukturą. IsDllStruct ( zmienna ) Paranetry: '''zmienna''' - nazwa sprawdzanej zmiennej Funkcja zwraca 1 gdy wartość zmiennej jest strukturą, w przeciwnym przypadku zwraca 0. Przykład: <syntaxhighlight lang="autoit"> $struct=DllStructCreate("int; char[16]; ptr; byte") MsgBox(0,"",IsDllStruct($struct)) ;to jest struktura wyświetli 1 $a="AutoIt" MsgBox(0,"",IsDllStruct($a)) ;to nie jest struktura wyświetli 0 </syntaxhighlight> ==Uproszczony sposób nadawania i odczytu wartości pól struktury== Od wersji AutoIt 3.3.10.2 wprowadzono uproszczony sposób nadawania i odczytu wartości pól struktury. Zamiast wywołań funkcji DllStructSetData i DllStructGetData można użyć zapisu wg poniższego schematu: - nadanie wartości polu struktury: '''$nazwa_struktury.nazwa_pola = wartość_pola''' - nadanie wartości elementowi pola struktury (jeżeli pole jest tablicą): '''$nazwa_struktury.nazwa_pola(numer_elementu) = wartość_elementu''' - odczyt wartości pola struktury '''$nazwa_zmiennej = $nazwa_struktury.nazwa_pola''' - odczyt wartości elementu pola struktury (jeżeli pole jest tablicą): '''$nazwa_zmiennej = $nazwa_struktury.nazwa_pola(numer_elementu)''' ''Powyższy sposób może być użyty tylko do struktur utworzonych z nazwami pól.'' Przykład: <syntaxhighlight lang="autoit"> $tStruct=DllStructCreate("int numer; char tekst[16]") ;nadawanie wartości polom struktury $tStruct.numer = 666 $tStruct.tekst = "Wasta" ;odczyt wartości pól struktury MsgBox(0, "$tStruct.numer", $tStruct.numer) MsgBox(0, "$tStruct.tekst", $tStruct.tekst) ;odczyt wartości elementu pola będącego tablicą MsgBox(0, "$tStruct.tekst(1)", $tStruct.tekst(1)) ;zmiana wartości elementu pola struktury $tStruct.tekst(3) = "r" MsgBox(0, "$tStruct.tekst", $tStruct.tekst) </syntaxhighlight> =Co to jest Callback?= Wywołania zwrotne (ang. callback) - technika programowania będąca odwrotnością wywołania funkcji. Zwykle korzystanie z biblioteki polega na wywołaniu dostarczonych przez nią funkcji. W tym przypadku jest odwrotnie: użytkownik jedynie rejestruje funkcję do późniejszego wykorzystania, natomiast funkcje biblioteczne wywołają ją w stosownym dla siebie czasie. Najważniejszymi pojęciami są rejestracja oraz wywołanie zwrotne. Rejestracja polega na zdefiniowaniu funkcji, która ma być wywołana zwrotnie przez funkcję biblioteczną. Kiedy następuje wywołanie zwrotne, funkcja, która je wykonuje, nie wie nic o tym, co się zdarzy. Jest to zależne od tego, co zostało zarejestrowane do wywołania. ==DllCallbackRegister == Tworzenie (rejestrowanie) zdefiniowanej przez użytkownika funkcji Callback DLL. DllCallbackRegister ("funkcja", "typ_zwracany", "parametry") Parametry: '''funkcja''' - nazwa zdefiniowanej przez użytkownika funkcji do wywołania zwrotnego. '''typ_zwracany''' - typ zwracanej wartości (patrz DllCall). '''parametry''' - lista rozdzielonych średnikami parametrów przekazywanych do funkcji. Patrz uwagi. Wartość zwracana: Sukces: uchwyt do rejestrowanej funkcji, wykorzystywany przez DllCallbackGetPtr i DllCallbackFree. Błąd: 0 '''Uwagi:''' Używa wszystkich typów danych DllCall, z wyjątkiem "struct". Po zakończeniu pracy z callback, należy wywołać funkcję DllCallbackFree. Autoita wprawdzie zwalnia wszystkie uchwyty po zakończeniu działania skryptu, ale lepiej jest jawnie wyrejestrować funkcję wywołując DllCallbackFree. ==DllCallbackGetPtr== Zwraca wskaźnik do funkcji callback, który może być przekazany do API Win32. DllCallbackGetPtr (uchwyt) Parametry: '''uchwyt''' - uchwyt do DllCallback zwracany przez DllCallbackRegister. Wartość zwracana: Sukces: wskaźnik do funkcji zwrotnej (callback). Błąd: 0 '''Uwagi:''' Użyj DllCallbackGetPtr dla przekazania adresu funkcji zwrotnej do Win32 API przy użyciu DllCall. ==DllCallbackFree== Uwalnia uchwyt utworzony przez DllCallbackRegister. DllCallbackFree (uchwyt) Parametry: '''uchwyt''' - uchwyt do DllCallback, zwracany przez DllCallbackRegister. Funkcja nie zwraca żadnej wartości. '''Uwagi:''' Autoita wprawdzie zwalnia wszystkie uchwyty po zakończeniu działania skryptu, ale lepiej jest jawnie wyrejestrować funkcję wywołując DllCallbackFree. =Kilka przykładów użycia systemowych bibliotek DLL= ==Sprawdzenie czy podany znak jest literą== Potrzebną funkcję odnajdujemy w bibliotece "'''user32.dll'''". W dokumentacji na stronie "MSDN Functions by Category" odnajdujemy opis funkcji wraz ze składnią wywołania. Wygląda ona tak: BOOL WINAPI IsCharAlpha ( __in TCHAR ch ); Mamy więc: Nazwa funkcji: '''IsCharAlpha''' Typ wartości zwracanej: '''BOOL''' - 1 jeżeli tak / 0 jeżeli nie Typ wartości parametru: '''TCHAR''' - parametrem jest sprawdzany znak Jest jedna trudność, w DllCall nie ma typu TCHR! Rozwiązanie jest proste, zamiast TCHR użyjemy także jedno bajtowego typy "byte", a znak zamienimy na jego kod ASCII. A teraz kod wywołujący funkcję DLL: <syntaxhighlight lang="autoit"> $chr="a" $tab=DllCall("user32.dll","bool","IsCharAlpha","byte",Asc($chr)) MsgBox(0,"",$tab[0]) ;wyświetli 1 $chr="@" $tab=DllCall("user32.dll","bool","IsCharAlpha","byte",Asc($chr)) MsgBox(0,"",$tab[0]) ;wyświetli 0 </syntaxhighlight> ==Zamiana liter w stringu na duże== DLL: '''user32.dll''' Składnia: LPSTR WINAPI CharUpper ( __inout LPTSTR lpsz ); Nazwa funkcji: '''CharUpper''' Typ wartości zwracanej: '''LPSTR''' - string wynikowy Typ wartości parametru: '''LPSTR''' - przetwarzany string Kod: <syntaxhighlight lang="autoit"> $str="janek ma łąkę" $tab=DllCall("user32.dll","str","CharUpper","str",$str) MsgBox(0,"",$tab[0]) </syntaxhighlight> ==Odczyt danych z zegara systemowego== DLL: kernel32.dll Składnia: void WINAPI GetSystemTime ( __out LPSYSTEMTIME lpSystemTime ); gdzie: typedef struct {_SYSTEMTIME WYear WORD; WORD wMonth; WDayOfWeek WORD; WORD wDay; WHour WORD; WORD wMinute; WSecond WORD; WMilliseconds WORD; } SYSTEMTIME, * PSYSTEMTIME; Jak widać parametrem funkcji '''GetSystemTime''' jest struktura typu out (funkcja będzie do niej zapisywać wynik swojego działania, więc nie musimy nadawać wartości elementom). Struktura ma 8 elementów wszystkie typu WORD. Mamy już wszystkie dane do stworzenia kodu (udostępnienie struktury przez wskaźnik): <syntaxhighlight lang="autoit"> $struct=DllStructCreate("word;word;word;word;word;word;word;word") DllCall("kernel32.dll","none","GetSystemTime","ptr",DllStructGetPtr($struct)) $y=DllStructGetData($struct,1) $m=DllStructGetData($struct,2) $d=DllStructGetData($struct,4) MsgBox(0,"Data:",$y&"-"&$m&"-"&$d) </syntaxhighlight> Można też tak, udostępniając strukturę przez referencję: <syntaxhighlight lang="autoit"> $struct=DllStructCreate("word;word;word;word;word;word;word;word") DllCall("kernel32.dll","none","GetSystemTime","struct*",$struct) $y=DllStructGetData($struct,1) $m=DllStructGetData($struct,2) $d=DllStructGetData($struct,4) MsgBox(0,"Data:",$y&"-"&$m&"-"&$d) </syntaxhighlight> ==Użycie funkcji typu CallBack== Napiszmy skrypt wyświetlający ilość i nazwy wszystkich otwartych okien. W bibliotece "'''user32.dll'''" jest funkcja '''EnumWindows'''. Wylicza ona wszystkie istniejące okna. Jej składnia to: BOOL WINAPI EnumWindows ( __in WNDENUMPROC lpEnumFunc, __in LPARAM lParam ); Funkcja ta przyjmuje 2 parametry: '''WNDENUMPROC''' - który jest wskaźnikiem do funkcji zwrotnej '''LPARAM''' - to dodatkowa wartość przekazywana do funkcji zwrotnej Ponadto '''EnumWindows''' przekazuje do funkcji zwrotnej uchwyt do aktualnie wyliczanego okna. Jeżeli funkcja zwrotna zwraca wartość True to wyliczanie jest kontynuowane (aż do wyczerpania wszystkich okien), wartość False kończy działanie funkcji '''EnumWindows'''. Nasz skrypt może wyglądać tak: <syntaxhighlight lang="autoit"> Global $count=0, $countname="" ;rejestrowanie funkcji zwrotnej, drugi parametr "iparam" nie jest używany, ale wymagany przez system $handle = DllCallbackRegister("_CountWin","none","hwnd;lparam") DllCall("user32.dll", "BOOL", "EnumWindows", "ptr", DllCallbackGetPtr($handle), "lparam", 0) DllCallbackFree($handle) MsgBox(0,"Ilość i nazwy okien:","Ilość okien = "&$count&@LF&$countname) ;definicja funkcji zwrotnej ;wyliczanie ograniczamy do okien otwartych i posiadających nazwę Func _CountWin($hWnd, $lparam) If WinGetTitle($hWnd) <> "" And BitAND(WinGetState($hWnd), 2) Then $count+=1 $countname&=@LF&WinGetTitle($hWnd) EndIf Return 1 ;zwracamy True aby kontynuować wyliczanie, aż do wyczerpania okien EndFunc </syntaxhighlight> =Ćwiczenia= 1. W oparciu o funkcję '''GUICtrlCreateInput''' napisać funkcję umożliwiającą wprowadzanie stringów określonego typu, np.:liczby rzeczywiste i całkowite, szesnastkowe, ósemkowe, dwójkowe, itp. Ponadto używając funkcji systemowych wywoływanych przez DllCall(), umożliwić nawigację między polami INPUT klawiszami ENTER oraz strzałka w górę i w dół. Stworzoną funkcję użyj w prostym skrypcie demonstracyjnym. Przykładowe rozwiązania: [[AutoIt/Ćwiczenia dla zaawansowanych - przykładowe rozwiązania]] 1xgfyx77fsuvlqbefg71wxztzmfmq79 AutoIt/Nietypowe techniki programowania 0 26284 558424 510426 2026-10-03T14:35:37Z Wasta 12503 558424 wikitext text/x-wiki = Metaprogramowanie, metajęzyk, refleksyjność = '''Metaprogramowanie''' - technika umożliwiająca programom tworzenie lub modyfikację kodu innych programów (lub ich samych). Język umożliwiający stosowanie tej techniki nazywamy '''metajęzykiem'''. Jeżeli metajęzyk umożliwia modyfikację własnego kodu, nazywany jest '''metajęzykiem refleksyjnym''', a proces programowanie z użyciem tego mechanizmu, '''programowaniem refleksyjnym'''. W Autoit istnieje możliwość użycia zmiennej łańcuchowej (stringu) jako elementu treści programu. Dzięki temu sam kod programu może być traktowany w sposób podobny jak zawarte w nim dane i modyfikowany dynamicznie w trakcie wykonywania. Technika ta, rzadko realizowana w innych językach programowania, umożliwia w pewnych przypadkach uzyskanie efektów, których osiągnięcie innym sposobem byłoby trudne i pracochłonne. ; Stringami mogą być{{Dk}} * nazwy zmiennych{{Br}} * nazwy funkcji{{Br}} * wyrażenia (ten przypadek jest szczególnie interesujący) W dalszej części rozdziału opiszę jak osiągnąć taki efekt i jakie korzyści można z niego mieć. Jak to w AutoIt przeważnie bywa, wszystko jest realizowane za pomocą odpowiednich funkcji. == String jako nazwa zmiennej == === Funkcja {{Code|Assign}} === {{PreLine|Assign ("nazwa_zmiennej", wartość_zmiennej [, flaga])}} Funkcja nadaje wartość (i ewentualnie tworzenie) zmiennej o podanej nazwie. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''"nazwa_zmiennej"''' - nazwa zmiennej musi być utworzona zgodnie z ogólnymi zasadami tworzenie nazw zmiennych, należy jednak pominąć prefiks $ (np. zmienna_1 a nie $zmienna_1). Można nadawać wartości zmiennym wcześniej utworzonym w sposób klasyczny. Zmienna nie może być tablicą. '''wartość_zmiennej''' - wartość nadawana tworzonej zmiennej '''flaga''' - określa sposób tworzenia zmiennej {{PreLine| 0 - zmienna jest tworzona jeżeli nie istnieje (wartość domyślna) 1 - tworzenie zmiennej o zakresie lokalnym 2 - tworzenie zmiennej o zakresie globalnym 4 - błąd jeżeli zmienna nie istnieje }} === Funkcja {{Code|Eval}} === {{PreLine|Eval ("nazwa_zmiennej")}} - Funkcja zwraca wartość zmiennej o nazwie podanej jako parametr. Jeżeli wystąpił błąd funkcja zwraca pusty string "", a makro @error przyjmuje wartość 1. '''"nazwa_zmiennej"''' - nazwa zmiennej zgodna z ogólnymi zasadami tworzenie nazw zmiennych, należy jednak pominąć prefiks $ (np. zmienna_1 a nie $zmienna_1). Można odczytywać wartości zmiennych wcześniej utworzonym w sposób klasyczny. Zmienna nie może być tablicą. Przykład zastosowania: Przypuśćmy, że musimy utworzyć 99 zmiennych wg schematu {{Code|$x1{{=}}1, $x2{{=}}2 ... $x99{{=}}99}}. W klasyczny sposób trzeba by 99 razy użyć instrukcji przypisania. Było by to bardzo pracochłonne i rozwlekłe. Można jednak inaczej: <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x"&$i, $i, 1) Next MsgBox(0, "", Eval("x66")) </syntaxhighlight> Od wersji 3.3.12 możliwe jest odczytanie tak utworzonych zmiennych w sposób klasyczny (próba klasycznego odczytania wartości zmiennej dla wcześniejszych wersji AutoIt'a powodowała błąd): <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x" & $i, $i) Next MsgBox(0, "", $x66) ;błąd niezadeklarowanej zmiennej </syntaxhighlight> Dla wcześniejszych wersji niż 3.3.12 trzeba było użyć dyrektywy '''#forcedef''': <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x" & $i, $i) Next #forcedef $x66 MsgBox(0, "", $x66) </syntaxhighlight> Funkcja '''Assign''' bez problemu nadaje wartość zmiennym utworzonym w sposób klasyczny: <syntaxhighlight lang="AutoIt"> Local $txt Assign("txt", "wasta") MsgBox(0, "", $txt) </syntaxhighlight> a funkcja '''Eval''' odczytuje te zmienne: <syntaxhighlight lang="AutoIt"> $txt = "wasta" MsgBox(0, "", Eval("txt")) </syntaxhighlight> === Funkcja {{Code|IsDeclared}} === {{PreLine|IsDeclared ("nazwa_zmiennej")}} Funkcja sprawdza czy została utworzona zmienna o podanej nazwie. Zwraca: {{PreLine| 1 - gdy zmienna jest globalna -1 - gdy zmienna jest lokalna 0 - gdy zmienna nie została utworzona }} Działa ze zmiennymi utworzonymi klasycznie, jak i utworzonymi przez funkcję '''Assign'''. Przykład: <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x" & $i, $i) Next MsgBox(0, "", IsDeclared("x66")) ;wyświetli 1 test() ;wyświetli -1 MsgBox(0, "", IsDeclared("b")) ;wyświetli 0 Func test() Local $a MsgBox(0, "", IsDeclared("a")) EndFunc </syntaxhighlight> == String jako nazwa funkcji == Stringu jako nazwy funkcji można użyć tylko przy jej wywołani, lecz nie przy jej deklarowaniu. Służy do tego: === Funkcja {{Code|Call}} === {{PreLine|Call ( "nazwa_funkcji" [, param1 [, param2 [, paramN]]] )}} Funkcja wywołuje funkcję o podanej nazwie i opcjonalnie przekazuje do niej parametry. Jeżeli sukces to zwraca wartość zwracaną przez wywołaną funkcję (makra: {{Code|@error}} i {{Code|@extended}} mogą być także przez nią ustawione). W przypadku błędu makro {{Code|@error}} przyjmuje wartość {{Code|0xDEAD}}, a makro @extended {{Code|0xBEEF}} (jeśli funkcja nie istnieje lub podano niewłaściwą ilość parametrów). '''Uwaga:''' Wywoływana funkcja od wersji {{Kbd|3.3.10.2}} może być funkcją wbudowaną translatora, parametry mogą być przekazywane przez referencję. Przykład: <syntaxhighlight lang="AutoIt"> MsgBox(0,"",Call("test",1,2,3)) Func test($a, $b, $c) Return $a+$b+$c EndFunc </syntaxhighlight> == String jako wyrażenie == O ile trudno znaleźć sensowne zastosowanie dla funkcji {{Code|'''Call'''}}, to użycie stringu jako wyrażenia ma duży potencjał programistyczny. Wyrażeniem jest w zasadzie wszystko to, czemu możemy wyliczyć jakąś wartość. Może ono zawierać liczby, zmienne, stałe, operatory arytmetyczne i logiczne, operatory relacji oraz wywołania funkcji tak wbudowanych jak i zdefiniowanych przez programistę. Do wartościowania wyrażenia opisanego za pomocą stringu służy: === Funkcja {{Code|Execute}} === {{PreLine|Execute ( "string" )}} Funkcja zwraca wartość wyrażenia opisanego stringiem. Jeżeli wystąpił błąd to zwraca pusty łańcuch, a makro @error przyjmuje wartość różną od zera. '''"string"''' - string z opisem wyrażenia Ponieważ string z opisem wyrażenia może pochodzić z zewnątrz programy, jest możliwe wykonanie wewnątrz programu fragmentu kodu wczytanego z dysku lub wpisanego bezpośrednio z klawiatury. Kilka przykładów, które zaprezentują możliwości funkcji: {{Code|'''Execute'''}}. <syntaxhighlight lang="AutoIt"> $ex='MsgBox(0, "Test Execute:", "Ala ma Asa")' Execute($ex) $ex = "(1+2)^2-5/3" MsgBox(0, "Test 2:", Execute($ex)) $a=2 $b=3 MsgBox(0, "Test 3:", Execute("$a=$b")) MsgBox(0, "Test 4:", Execute("sin($a)+cos($a+$b)")) MsgBox(0, "Test 5:", Execute("test($a, $b)")) Func test($p1, $p2) Return $p1+$p2 EndFunc </syntaxhighlight> == Zmienna zawierająca nazwę funkcji == Od wersji 3.10.2 w AutoIt wprowadzono możliwość przechowywania w zmiennej nazwy funkcji. Przykład: <syntaxhighlight lang="AutoIt"> $vFunc = MsgBox $vFunc(0, "Test", "To działa!") </syntaxhighlight> === {{Kbd|FuncName}} === {{PreLine|FuncName ( $Functionvariable )}} Funkcja zwraca w postaci stringu nazwę funkcji przechowywanej w zmiennej, lub string pusty gdy wystąpił błąd. {{PreLine|'''$Functionvariable'''}} - zmienna przechowująca nazwę funkcji Przykład: <syntaxhighlight lang="AutoIt"> $hFunc = MsgBox MsgBox(0, "Test", "Nazwa funkcji to: " & FuncName($hFunc)) </syntaxhighlight> === {{Kbd|IsFunc}} === {{PreLine|IsFunc ( $Variable )}} Funkcja sprawdza czy zmienna zawiera nazwę funkcji. Zwraca 1 gdy funkcja jest zdefiniowana przez użytkownika, 2 gdy funkcja jest funkcją wbudowaną translatora, lub 0 gdy zmienna nie zawiera nazwy funkcji. {{PreLine|'''$Variable'''}} - sprawdzana zmienna Przykład: <syntaxhighlight lang="AutoIt"> $hFunc = MsgBox MsgBox(0, "Test", "Jaki to rodzaj funkcji: " & IsFunc($hFunc)) </syntaxhighlight> Na koniec użyteczny przykład, kalkulator zapamiętujący wzór funkcji i obliczający jej wartość dla różnych argumentów: <syntaxhighlight lang="AutoIt"> #include <GUIConstantsEx.au3> GUICreate("Wprowadź wartość zmiennej i wzór funkcji", 360, 120, -1, 300) $f1 = GUICtrlCreateInput(0, 50, 5, 200, 20) GUICtrlCreateLabel("$x=", 25, 8, 20, 20) $f2 = GUICtrlCreateInput("", 50, 35, 200, 20) GUICtrlCreateLabel("f(x)=", 22, 38, 30, 20) $btn = GUICtrlCreateButton("Oblicz", 40, 75, 60, 20) GUISetState() Do $msg = GUIGetMsg() $txt1 = GUICtrlRead($f1) $txt2 = GUICtrlRead($f2) If $msg = $btn Then $x=Execute($txt1) $res = Execute($txt2) MsgBox(4096, "Wynik:", $res) EndIf Pause(5) Until $msg = $GUI_EVENT_CLOSE </syntaxhighlight> = Niestandardowe struktury danych = Struktura danych (ang. data structure) - sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. W zasadzie AutoIt posiada standardowo tylko dwie struktury danych, zmienne proste przechowujące pojedynczą wartość i tablice. W rozdziale o bibliotekach DLL omówiona została także struktura (rekord), do której dostęp jest możliwy za pomocą stosownych funkcji. Czasami jednak z pewnych względów optymalne będzie użycie innych struktur danych. Podczas tworzenia skryptu programista musi dokonać wyboru odpowiedniej struktury, aby uzyskać pożądany efekt. Niewłaściwy wybór może niekorzystnie wpłynąć na złożoność obliczeniową, co przekłada się na szybkość działania programu. Jest to szczególnie ważne przy operowaniu dużymi zbiorami danych. Z drugiej strony należy także uwzględnić łatwość implementacji danej struktury w konkretnym przypadku. == Tablica asocjacyjna == '''Tablica asocjacyjna''': (tablica skojarzeniowa, mapa, słownik, ang. associative array, map, dictionary) – nazwa dla powszechnie stosowanego w informatyce abstrakcyjnego typu danych, który przechowuje pary (unikatowy klucz, wartość) i umożliwia dostęp do wartości poprzez podanie klucza. Standardowo AutoIt nie posiada możliwości posługiwania się tego typu tablicami. Można jednak używać tablic asocjacyjnych za pośrednictwem znajdującego się w systemie operacyjnym obiektu {{Kbd|'''Scripting.Dictionary'''}}. Obiekt ten posiada kilka metod umożliwiających tworzenie i manipulowanie tablicami asocjacyjnymi. Uwaga! Scripting.Dictionary losowo generuje problemy przy dużych bazach danych. Objawy:{{Br}} {{Code|Add()}} nie dodaje, mimo że {{Code|Exists()}} twierdzi, że nie istnieje, dane są niereprodukowalnie pomijane, znikające wpisy mimo poprawnych danych wejściowych, problem nie dotyczy konkretnego rekordu — zmienia się między kolejnym uruchomieniami. To znany i wielokrotnie raportowany problem z COM-owym Scripting.Dictionary używanym w AutoIt, gdy: * zbyt duża liczba kluczy - {{Kbd|Scripting.Dictionary}} w AutoIt (COM interop z VBScript) potrafi działać poprawnie do 60–100k, ale potem... pojawiają się niereplikowalne błędy. * lub długości kluczy są zbyt duże - jeśli path ma bardzo długą ścieżkę (>255 znaków) — może powodować niestabilność lub konflikt hashy. * lub jest wiele podobnych ścieżek (czyli dużo kolizji hashy). * duplikowane klucze z niejawnie różniącymi się bajtami (np. spacje, znaki niewidoczne, inne kodowanie) — mogą być widoczne jako różne w tablicy, ale traktowane jako identyczne wewnętrznie przez Dictionary. === Tworzenie tablicy === {{PreLine|$nazwa_tablicy {{=}} ObjCreate("Scripting.Dictionary")}} === Dodawanie elementów do tablicy (metoda {{Code|.Add}}) === {{PreLine|$nazwa_tablicy.Add($nazwa_klucza, $wartosc_klucza)}} === Usunięcie elementu tablicy (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_tablicy.Remove($nazwa_klucza)}} === Usunięcie wszystkich elementów tablicy (metoda {{Code|.RemoveAll}}) === {{PreLine|$nazwa_tablicy.RemoveAll}} === Odczyt elementu tablicy (metoda {{Code|.Item}}) === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy.Item($nazwa_klucza)}} lub w skrócie: {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy($nazwa_klucza)}} === Nadanie wartości elementowi tablicy (metoda {{Code|.Item}}) === {{PreLine|$nazwa_tablicy.Item($nazwa_klucza) {{=}} $wartosc_klucza}} lub w skrócie: {{PreLine|$nazwa_tablicy($nazwa_klucza) {{=}} $wartosc_klucza}} === Odczytanie w postaci 1-wymiarowej tablicy wszystkich wartości tablicy asocjacyjnej (metoda {{Code|.Items}}) === {{PreLine|$array {{=}} $nazwa_tablicy.Items}} === Odczytanie w postaci 1-wymiarowej tablicy wszystkich kluczy tablicy asocjacyjnej (metoda {{Code|.Keys}}) === {{PreLine|$array {{=}} $nazwa_tablicy.Keys}} === Zmiana nazwy klucza (metoda {{Code|.Key}}) === {{PreLine|$nazwa_tablicy.Key($stary_klucz) {{=}} $nowy_klucz}} === Sprawdzenie czy istnieje klucz o podanej nazwie (metoda {{Code|.Exists}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Exists($nazwa_klucza)}} Zwraca True gdy klucz istnieje, lub False gdy nie istnieje. === Ilość elementów tablicy asocjacyjnej (metoda {{Code|.Count}}) === {{PreLine|i {{=}} $nazwa_tablicy.Count}} '''UWAGA:''' Nazwa klucza może być stringiem lub dowolną liczbą, wartość może być dowolnego typu. W nazwach kluczy obiekt rozpoznaje wielkość liter, tak więc np. '''Klucz1''' i '''klucz1''' to dwie różne nazwy. Przykład: <syntaxhighlight lang="AutoIt"> #include <array.au3> $dane = ObjCreate("Scripting.Dictionary") ;tworzenie tablicy asocjacyjnej ;dodawanie kolejnych pól w tablicy $dane.Add("nazwisko", "Kowalski") $dane.Add("imię", "Jan") $dane.Add("wiek", 61) $dane.Add("wzrost", 170) $dane.Add("kolor_oczu", "niebieskie") $dane.Add(6.66, "wyższe") ;odczyt danych z poszczególnych pól tablicy MsgBox(64, "Tablica asocjacyjna", _ "Pan " & $dane.Item("imię") & " " & $dane.Item("nazwisko") & _ " ma lat " & $dane.Item("wiek") & _ ", " & $dane.Item("wzrost") & " cm wzrostu" & _ " i oczy " & $dane.Item("kolor_oczu") & ".") ;odczytanie w postaci tablicy, wartości wszystkich pól tablicy $arr = $dane.Items _ArrayDisplay($arr) ;odczytanie w postaci tablicy, wszystkich kluczy tablicy $arr = $dane.Keys _ArrayDisplay($arr) $dane("kolor_oczu") = "zielone" ;zmiana wartości MsgBox(0, "Kolor oczu", $dane("kolor_oczu")) ;zmiana nazwy klucza $dane.Key(6.66) = "wykształcenie" ;sprawdzenie czy istnieje podany klucz MsgBox(0, 'Klucz "wykształcenie"', $dane.Exists("wykształcenie")) MsgBox(0, "Ilość elementów", $dane.Count) $dane.Remove("wykształcenie") ;usunięcie podanego klucza MsgBox(0, 'Klucz "wykształcenie"', $dane.Exists("wykształcenie")) </syntaxhighlight> <big><big>'''UWAGA: Pozostałe struktury danych wymagają .NET Framework 4.5 '''</big></big> == Tablica mieszająca == Za Wiki: Tablica mieszająca lub tablica z haszowaniem (ang. hash table) to struktura danych, która jest jednym ze sposobów realizacji tablicy asocjacyjnej, tj. abstrakcyjnego typu danych służącego do przechowywania informacji, w taki sposób aby możliwy był do nich szybki dostęp. Tablica mieszająca umożliwia również szybkie porównywanie danych, np. fragmentów tekstów, plików, itp. Elementy tablicy mieszającej są indeksowane liczbowymi indeksami generowanym przez funkcję mieszającą. Odwołania do przechowywanych obiektów dokonywane są na podstawie klucza, który dany obiekt (informację) identyfikuje. Na podstawie klucza funkcja mieszająca generuje indeks, po którym przeszukiwana jest tablica. Przy dużych tablicach taka metoda jest o wiele szybsza niż bezpośrednie wyszukiwanie po kluczu, jak w tablicy asocjacyjnej. Ponieważ cały proces tworzenia indeksów i przeszukiwania jest przeprowadzany w tle przez procedury systemu operacyjnego, dla programisty samo operowanie tablicami asocjacyjnymi i mieszającymi w zasadzie niczym się nie różni. === Tworzenie tablicy mieszającej === {{PreLine|$nazwa_tablicy {{=}} ObjCreate("System.Collections.Hashtable")}} === Dodawanie elementów do tablicy (metoda {{Code|.Add}}) === {{PreLine|$nazwa_tablicy.Add($nazwa_klucza, $wartosc_klucza)}} === Usuwanie elementu tablicy (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_tablicy.Remove($nazwa_klucza)}} === Usunięcie wszystkich elementów tablicy (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_tablicy.Clear}} === Odczyt elementu tablicy === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy($nazwa_klucza)}} === Nadanie wartości elementowi tablicy === {{PreLine|$nazwa_tablicy($nazwa_klucza) {{=}} $wartosc_klucza}} === Sprawdzenie czy istnieje klucz o podanej nazwie (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Contains($nazwa_klucza)}} === Sprawdzenie czy istnieje podana wartość (metoda {{Code|.ContainsValue}}) === {{PreLine|$i {{=}} $nazwa_tablicy.ContainsValue($nazwa_klucza)}} Zwraca True gdy klucz istnieje, lub False gdy nie istnieje. === Ilość elementów tablicy mieszającej (metoda {{Code|Count}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Count}} Przykład: <syntaxhighlight lang="AutoIt"> $hash = ObjCreate("System.Collections.Hashtable") ;tworzenie tablicy mieszającej ;dodawanie elementów do tablicy mieszającej $hash.Add("Polska", "Kraków") $hash.Add("Niemcy", "Berlin") $hash.Add("Francja", "Paryż") $hash.Add("Rosja", "Moskwa") $hash.Add("Czechy", "Praga") ;zmiana wartości klucza $hash("Polska") = "Warszawa" MsgBox(0, "Count", "W bazie jest " & $hash.Count & " pozycji.") ;ilość elementów w tablicy $country = "Polska" MsgBox(0, "Odczyt", "Państwo: " & $country & @LF & _ "Stolica: " & $hash($country)) ;odczyt elementu z tablicy ;czy w tablicy jest dana wartość MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $hash.ContainsValue("Paryż")) ;czy w tablicy jest dany klucz MsgBox(0, "Contains", "Czy w bazie jest Francja: " & $hash.Contains("Francja")) $hash.Remove("Francja") ;usunięcie z tablicy elementu o zadanym kluczu MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $hash.ContainsValue("Paryż")) </syntaxhighlight> == SortedList == Jest to odmiana tablicy asocjacyjnej, która w momencie tworzenia i modyfikacji jest domyślnie sortowana po kluczu. Zwiększa to czas tworzenia tablicy, lecz zmniejsza czas wyszukiwania informacji. Dostęp do tablicy może być realizowany po kluczu lub po indeksie. === Tworzenie SortedList === {{PreLine|$nazwa_tablicy {{=}} ObjCreate("System.Collections.SortedList")}} === Dodanie wartości do SortedList (metoda {{Code|.Add}}) === {{PreLine|$nazwa_tablicy.Add($nazwa_klucza, $wartosc_klucza)}} === Usunięcie elementu o podanym kluczu (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_tablicy.Remove($nazwa_klucza)}} === Usunięcie elemenu o podanym indeksie (metoda {{Code|.RemoveAt}}) === {{PreLine|$nazwa_tablicy.RemoveAt($indeks)}} === Usunięcie wszystkich elementów tablicy (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_tablicy.Clear}} === Odczyt elementu tablicy === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy($nazwa_klucza)}} === Nadanie wartości elementu tablicy === {{PreLine|$nazwa_tablicy($nazwa_klucza) {{=}} $wartosc_klucza}} === Sprawdzenie czy istnieje klucz o podanej nazwie (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Contains($nazwa_klucza)}} Zwraca True gdy klucz istnieje, lub False gdy nie istnieje. === Sprawdzenie czy istnieje podana wartość (metoda {{Code|.ContainsValue}}) === {{PreLine|$i {{=}} $nazwa_tablicy.ContainsValue($nazwa_klucza)}} Zwraca True gdy wartość istnieje, lub False gdy nie istnieje. === Ilość elementów tablicy (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Count}} === Indeks elementu o podanym kluczu (metoda {{Code|.IndexOfKey}}) === {{PreLine|$indeks {{=}} $nazwa_tablicy.IndexOfKey($nazwa_klucza)}} === Indeks pierwszego elementu o podanej wartości (metoda {{Code|.IndexOf Value}}) === {{PreLine|$indeks {{=}} $nazwa_tablicy.IndexOfValue($wartosc_klucza)}} === Odczyt klucza o zadanym indeksie (metoda {{Code|.GetKey}}) === {{PreLine|$nazwa_klucza {{=}} $nazwa_tablicy.GetKey($indeks)}} === Odczyt wartości o zadanym indeksie (metoda {{Code|.GetByIndex}}) === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy.GetByIndex($indeks)}} === Zmiana wartości pod zadanym indeksem (metoda {{Code|.SetByIndex}}) === {{PreLine|$nazwa_tablicy.SetByIndex($indeks, $wartosc)}} Przykład: <syntaxhighlight lang="AutoIt"> $SList = ObjCreate("System.Collections.SortedList") ;tworzenie tablicy mieszającej ;dodawanie elementów do tablicy mieszającej $SList.Add("Polska", "Kraków") $SList.Add("Niemcy", "Berlin") $SList.Add("Francja", "Paryż") $SList.Add("Rosja", "Moskwa") $SList.Add("Czechy", "Praga") ;zmiana wartości klucza $SList("Polska") = "Warszawa" MsgBox(0, "Count", "W bazie jest " & $SList.Count & " pozycji.") ;ilość elementów w tablicy $country = "Polska" MsgBox(0, "Odczyt", "Państwo: " & $country & @LF & _ "Stolica: " & $SList($country)) ;odczyt elementu z tablicy ;czy w tablicy jest dana wartość MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $SList.ContainsValue("Paryż")) ;czy w tablicy jest dany klucz MsgBox(0, "Contains", "Czy w bazie jest Francja: " & $SList.Contains("Francja")) $SList.Remove("Francja") ;usunięcie z tablicy elementu o zadanym kluczu MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $SList.ContainsValue("Paryż")) ;odczyt indeksu klucza MsgBox(0,"IndexOfKey", "Indeks dla klucza 'Polska': " & $SList.IndexOfKey("Polska")) ;odczyt indeksu podanej wartości MsgBox(0,"IndexOfValue", "Indeks dla wartości 'Praga': " & $SList.IndexOfValue("Praga")) ;odczyt klucza dla zadanego indeksu MsgBox(0,"GetKey", "Klucz dla indeksu 2: " & $SList.GetKey(2)) ;odczyt wartości dla zadanego indeksu MsgBox(0,"GetByIndex", "Wartość dla indeksu 2: " & $SList.GetByIndex(2)) </syntaxhighlight> == Lista == '''Lista''' – struktura danych służąca do reprezentacji zbiorów dynamicznych, w której elementy ułożone są w liniowym porządku. Elementy listy są indeksowane (indeksy rozpoczynają się od 0, podobnie jak w tablicach). Także i ten typ danych nie jest standardowo dostępny w AutoIt, dlatego musimy posłużyć się obiektem '''System.Collections.ArrayList'''. Podstawową zaletą używania list zamiast tablic jest wzrost wydajności. Dostęp do elementów listy jest o wiele szybszy. === Tworzenie listy === {{PreLine|$nazwa_listy {{=}} ObjCreate("System.Collections.ArrayList")}} === Dodawanie elementów na końcu listy (metoda {{Code|.Add}}) === {{PreLine|$nazwa_listy.Add($wartosc)}} === Dodawanie elementu na pozycji o zadanym indeksie (metoda {{Code|.Insert}}) === {{PreLine|$nazwa_listy.Insert($indeks, $wartosc)}} Indeksy pozostałych elementów są zwiększane o 1. === Usunięcie pierwszego elementu o zadanej wartości (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_listy.Remove($wartosc)}} Indeksy pozostałych elementów są zmniejszane o 1. === Usunięcie elementu o zadanym indeksie (metoda {{Code|.RemoveAt}}) === {{PreLine|$nazwa_listy.RemoveAt($indeks)}} Indeksy pozostałych elementów są zmniejszane o 1. === Usunięcie elementów o zadanym zakresie indeksów (metoda {{Code|.RemoveRange}}) === $nazwa_listy.RemoveRange($indeks, $ilosc_elementow_do_usuniecia) Indeksy pozostałych elementów są zmniejszane o $ilosc_elementow_do_usuniecia. ===Tworzenie nowej listy z elementów o zadanym zakresie indeksów (metoda {{Code|.GetRange}})=== {{PreLine|$nowa_lista {{=}} $nazwa_listy.GetRange($indeks, $ilosc_elementow_do_kopiowania)}} === Usunięcie wszystkich elementów listy (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_listy.Clear}} === Odczyt elementu listy o zadanym indeksie (metoda {{Code|.Item}}) === {{PreLine|$wartosc {{=}} $nazwa_listy.Item($indeks)}} === Zmiana wartości elementu listy o zadanym indeksie (metoda {{Code|.Item}}) === {{PreLine|$nazwa_listy.Item($indeks) {{=}} $wartosc}} === Odwrócenie kolejności elementów listy (metoda {{Code|.Reverse}}) === {{PreLine|$nazwa_listy.Reverse}} === Odczytanie ilości elementów listy (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_listy.Count}} === Kopiowanie zawartości listy do jednowymiarowej tablicy (metoda {{Code|.ToArray}}) === {{PreLine|$array {{=}} $nazwa_listy.ToArray}} === Sprawdzenie czy istnieje element o zadanej wartości (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_listy.Contains($wartosc)}} Zwraca True gdy dana wartość jest w liście, w przeciwnym razie zwraca False. Przykład: <syntaxhighlight lang="AutoIt"> $aList = ObjCreate("System.Collections.ArrayList") ;tworzenie listy ;dodawanie elementów na końcu listy $aList.Add("a") $aList.Add("b") $aList.Add("c") $aList.Add("d") $aList.Add("a") $aList.Add(3.1415) $aList.Add("wasta") ViewList($aList, "LISTA") $aList.Insert(3,"ble, ble, ble") ;wstawienie elementu na pozycji o indeksie 3 ViewList($aList, "Insert(3)") $aList.Item(3) = 666 ViewList($aList, "Item(3)") $aList.Reverse ViewList($aList, "Reverse") $aList.Remove("a") ViewList($aList, "Remove 'a'") $aList.RemoveAt(2) ViewList($aList, "RemoveAt(2)") $aList.RemoveRange(2, 3) ViewList($aList, "RemoveRange(4,3)") $str = $aList.ToArray MsgBox(0, "LISTA", "Element o indeksie 1 = " & $str[1]) ;szukanie elementu o zadanej wartości MsgBox(0,"LISTA", "Czy jest element o wartości 'wasta': " & $aList.Contains("wasta")) $aList.Clear ;usunięcie wszystkich elementów listy MsgBox(0, "LISTA", "Ilość elementów = " & $aList.Count) ;ilość elementów listy ;funkcja wyświetlająca zawartość listy Func ViewList($aList, $title="") Local $n = $aList.Count ;ilość elementów listy Local $txt = "Indeks | Wartość" & @LF For $i=0 To $n-1 $txt &= "---------------------" & @LF $txt &= $i & " | " & $aList.Item($i) & @LF ;odczyt elementu o zadanym indeksie Next MsgBox(0, $title, $txt) EndFunc </syntaxhighlight> == Kolejka == Kolejka (ang. queue) – liniowa struktura danych, w której nowe dane dopisywane są na końcu kolejki, a z początku kolejki pobierane są dane do dalszego przetwarzania (bufor typu FIFO, First In, First Out; pierwszy na wejściu, pierwszy na wyjściu). === Tworzenie kolejki === {{PreLine|$nazwa_kolejki {{=}} ObjCreate("System.Collections.Queue")}} === Dodawanie elementu do końca kolejki (metoda {{Code|.Enqueue}}) === {{PreLine|$nazwa_kolejki.Enqueue($wartość)}} === Odczyt elementu z początku kolejki i jego usunięcie (metoda {{Code|.Dequeue}}) === {{PreLine|$wartosc {{=}} $nazwa_kolejki.Dequeue}} ===Odczyt elementu z początku kolejki bez jego usunięcia (metoda {{Code|.Peek}})=== {{PreLine|$wartosc {{=}} $nazwa_kolejki.Peek}} === Usunięcie wszystkich elementów kolejki (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_kolejki.Clear}} === Odczytanie ilości elementów kolejki (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_kolejki.Count}} === Kopiowanie zawartości kolejki do jednowymiarowej tablicy (metoda {{Code|.ToArray}}) === {{PreLine|$array {{=}} $nazwa_kolejki.ToArray}} === Sprawdzenie czy istnieje element o zadanej wartości (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_kolejki.Contains($wartosc)}} Zwraca True gdy dana wartość jest w liście, w przeciwnym razie zwraca False. Przykład: <syntaxhighlight lang="AutoIt"> #include <array.au3> $queue = ObjCreate("System.Collections.Queue") ;tworzenie kolejki ;dopisywanie elementów do kolejki $queue.Enqueue(3.1415) $queue.Enqueue("a") $queue.Enqueue("b") $queue.Enqueue("c") $queue.Enqueue("wasta") ViewQueue($queue) ;odczyt elementu bez usuwania MsgBox(0, "Peek", "Początek kolejki = " & $queue.Peek) MsgBox(0, "Count", "Ilość elementów kolejki = " & $queue.Count) ;odczyt elementu z usunięciem z kolejki MsgBox(0, "Dequeue", "Początek kolejki = " & $queue.Dequeue) MsgBox(0, "Count", "Ilość elementów kolejki = " & $queue.Count) ;czy element o zadanej wartości jest w kolejce MsgBox(0, "Contains", "Czy 'wasta' jest w kolejce: " & $queue.Contains("wasta")) ;usunięcie wszystkich elementów kolejki $queue.Clear MsgBox(0, "Clear", "Ilość elementów kolejki = " & $queue.Count) ;wyświetlenie zawartości kolejki Func ViewQueue($queue, $title="KOLEJKA") Local $Array = $queue.ToArray ;kopiowanie kolejki do tablicy _ArrayDisplay($Array, $title) EndFunc </syntaxhighlight> == Stos == Stos (ang. Stack) – liniowa struktura danych, w której dane dokładane są na wierzch stosu i z wierzchołka stosu są pobierane (bufor typu LIFO, Last In, First Out; ostatni na wejściu, pierwszy na wyjściu). === Tworzenie stosu === {{PreLine|$nazwa_stosu {{=}} ObjCreate("System.Collections.Stack")}} === Dodawanie elementu na górę stosu (metoda {{Code|.Push}}) === {{PreLine|$nazwa_stosu.Push($wartość)}} === Odczyt elementu z góry stosu i jego usunięcie (metoda {{Code|.Pop}}) === {{PreLine|$wartosc {{=}} $nazwa_stosu.Pop}} === Odczyt elementu z góry stosu bez jego usunięcia (metoda {{Code|.Peek}}) === {{PreLine|$wartosc {{=}} $nazwa_stosu.Peek}} === Usunięcie wszystkich elementów stosu (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_stosu.Clear}} === Odczytanie ilości elementów stosu (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_stosu.Count}} === Kopiowanie zawartości stosu do jednowymiarowej tablicy (metoda {{Code|.ToArray}}) === {{PreLine|$array {{=}} $nazwa_stosu.ToArray}} === Sprawdzenie czy istnieje element o zadanej wartości (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_stosu.Contains($wartosc)}} Zwraca True gdy dana wartość jest w liście, w przeciwnym razie zwraca False. Przykład: <syntaxhighlight lang="AutoIt"> #include <array.au3> $stack = ObjCreate("System.Collections.Stack") ;tworzenie stosu ;dodawanie elementów na wierzch stosu $stack.Push(3.1415) $stack.Push("a") $stack.Push("b") $stack.Push("c") $stack.Push("wasta") ViewStack($stack) ;odczyt elementu z wierzchu stosu bez usuwania MsgBox(0, "Peek", "Wierzch stosu = " & $stack.Peek) MsgBox(0, "Count", "Ilość elementów stosu = " & $stack.Count) ;odczyt elementu z usunięciem ze stosu MsgBox(0, "Pop", "Wierzch stosu = " & $stack.Pop) MsgBox(0, "Count", "Ilość elementów stosu = " & $stack.Count) ;czy element o zadanej wartości jest na stosie MsgBox(0, "Contains", "Czy 'wasta' jest na stosie: " & $stack.Contains("wasta")) ;usunięcie wszystkich elementów stosu $stack.Clear MsgBox(0, "Clear", "Ilość elementów stosu = " & $stack.Count) ;wyświetlenie zawartości stosu Func ViewStack($stack, $title="STOS") Local $Array = $stack.ToArray ;kopiowanie stosu do tablicy _ArrayDisplay($Array, $title) EndFunc </syntaxhighlight> = Uruchamianie skryptu = Skrypty AutoIt można uruchamiać spod edytora SciTe wciskając klawisz F5. Po skompilowaniu skrypt uruchamia się jak każdy plik wykonywalny Windows. Oprócz tych standardowych sposobów, są możliwe także inne mniej typowe. == Uruchamianie skryptów z wiersza poleceń == Skompilowane skrypty AutoIt'a można uruchomić z wiersza poleceń (linii komend). Możliwe jest także przekazywanie parametrów do tak uruchamianych skryptów. Służy do tego zdefiniowana w translatorze globalna tablica o nazwie '''$CmdLine'''. Tablica jest tylko do odczytu, inicjowana w momencie uruchomienia skryptu. Ma ona następującą strukturę: {{PreLine| $CmdLine[0] - ilość parametrów przekazanych w wierszu poleceń $CmdLine[1] - wartość 1 parametru ... $CmdLine[n] - wartość n-tego paramatru }} Należy pamiętać, że wszystkie parametry przekazywane z wiersza poleceń są tekstami. Separatorem między parametrami są spacje. Jeżeli chcemy przekazać parametr zawierający spacje, należy ująć go w cudzysłowy. Można maksymalnie przekazać 63 parametry. Przykład wywołania skryptu: {{PreLine|myprog.exe 1 2 "Autoit to jest to!" Wasta}} Tablica $CmdLine będzie zawierać następujące wartości {{PreLine| $CmdLine[0] {{=}} 4 (ilość parametrów) $CmdLine[1] {{=}} 1 (string 1 parametru) $CmdLine[2] {{=}} 2 (string 2 parametru) $CmdLine[3] {{=}} Autoit to jest to! (string 3 parametru) $CmdLine[4] {{=}} Wasta (string 4 parametru) }} Przykład skryptu wypisującego w konsoli listę parametrów, a w okienku MsgBox ich ilość (skrypt należy skompilować): <syntaxhighlight lang="autoit"> #AutoIt3Wrapper_Change2CUI=y $iIL = $CmdLine[0] If $iIL>0 Then For $i=1 To $iIL ConsoleWrite($CmdLine[$i] & @LF) Next EndIf MsgBox(64, "Ilość parametrów:", $CmdLine[0]) </syntaxhighlight> Oprócz tablicy $CmdLine zdefiniowana jest także globalna zmienna $CmdLineRaw, która przechowuje listę parametrów w postaci stringu. Ta zmienna jest także tylko do odczytu, inicjowana w momencie uruchomienia skryptu. Przykład skryptu wypisującego w okienku MsgBox listę wprowadzonych parametrów (skrypt należy skompilować): <syntaxhighlight lang="autoit"> MsgBox(64, "Lista parametrów:", $CmdLineRaw) </syntaxhighlight> == Uruchamianie pojedynczej linii kodu z wiersza poleceń == Można wykonać pojedynczą linię kodu bezpośrednio z wiersza poleceń: {{PreLine|AutoIt3.exe [/komunikat błędu] /AutoIt3ExecuteLine "wiersz kodu do wykonania"}} Przykład: {{PreLine|AutoIt3.exe /AutoIt3ExecuteLine "MsgBox(4096, 'Witaj świecie!', 'Cześć!')"}} Sposób ten jest możliwy także wewnątrz skryptu: <syntaxhighlight lang="autoit"> Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, ''Witaj świecie!'', ''Cześć!'')"') </syntaxhighlight> == Uruchomienie skryptu AutoIt z wnętrza innego skryptu == Metoda ta umożliwia uruchomienie nieskompilowanego skryptu z wnętrza innego skryptu AutoIt. Skrypt uruchamiający może być skompilowany lub nie. Dla skryptu skompilowanego niezbędne jest użycie dyrektywy '''#pragma compile(AutoItExecuteAllowed, True)'''. Domyślnie dyrektywa ta jest ustawiona na False, co blokuje możliwość uruchamiania skryptów w ten sposób. Jeżeli skrypt uruchamiający nie jest skompilowany, to dyrektywa #progma nie jest konieczna (zostanie zignorowana). Jeżeli skrypt uruchamiający jest skompilowany, to w systemie nie musi być zainstalowany AutoIt, jednak uruchamiany skrypt musi mieć dostęp w swoim bieżącym folderze, do wszystkich UDF'ów dołączanych dyrektywą #include. Przykład (skrypt uruchamiający): <syntaxhighlight lang="autoit"> #pragma compile(AutoItExecuteAllowed, True) $sFile = "test.au3" $iProcess = Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sFile & '"') </syntaxhighlight> Skrypt uruchamiany (plik ze skryptem uruchamianym musi mieć nazwę taką jaką podano w skrypcie uruchamiającym, w naszym przypadku jest to test.au3): <syntaxhighlight lang="autoit"> MsgBox(0,"","Działa!") MsgBox(64,"","HURA!!!") </syntaxhighlight> 1zlxqdvu484q5l6nmb72r9d72z2653r 558425 558424 2026-10-03T14:41:48Z Wasta 12503 558425 wikitext text/x-wiki = Metaprogramowanie, metajęzyk, refleksyjność = '''Metaprogramowanie''' - technika umożliwiająca programom tworzenie lub modyfikację kodu innych programów (lub ich samych). Język umożliwiający stosowanie tej techniki nazywamy '''metajęzykiem'''. Jeżeli metajęzyk umożliwia modyfikację własnego kodu, nazywany jest '''metajęzykiem refleksyjnym''', a proces programowanie z użyciem tego mechanizmu, '''programowaniem refleksyjnym'''. W Autoit istnieje możliwość użycia zmiennej łańcuchowej (stringu) jako elementu treści programu. Dzięki temu sam kod programu może być traktowany w sposób podobny jak zawarte w nim dane i modyfikowany dynamicznie w trakcie wykonywania. Technika ta, rzadko realizowana w innych językach programowania, umożliwia w pewnych przypadkach uzyskanie efektów, których osiągnięcie innym sposobem byłoby trudne i pracochłonne. ; Stringami mogą być{{Dk}} * nazwy zmiennych{{Br}} * nazwy funkcji{{Br}} * wyrażenia (ten przypadek jest szczególnie interesujący) W dalszej części rozdziału opiszę jak osiągnąć taki efekt i jakie korzyści można z niego mieć. Jak to w AutoIt przeważnie bywa, wszystko jest realizowane za pomocą odpowiednich funkcji. == String jako nazwa zmiennej == === Funkcja {{Code|Assign}} === {{PreLine|Assign ("nazwa_zmiennej", wartość_zmiennej [, flaga])}} Funkcja nadaje wartość (i ewentualnie tworzenie) zmiennej o podanej nazwie. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''"nazwa_zmiennej"''' - nazwa zmiennej musi być utworzona zgodnie z ogólnymi zasadami tworzenie nazw zmiennych, należy jednak pominąć prefiks $ (np. zmienna_1 a nie $zmienna_1). Można nadawać wartości zmiennym wcześniej utworzonym w sposób klasyczny. Zmienna nie może być tablicą. '''wartość_zmiennej''' - wartość nadawana tworzonej zmiennej '''flaga''' - określa sposób tworzenia zmiennej {{PreLine| 0 - zmienna jest tworzona jeżeli nie istnieje (wartość domyślna) 1 - tworzenie zmiennej o zakresie lokalnym 2 - tworzenie zmiennej o zakresie globalnym 4 - błąd jeżeli zmienna nie istnieje }} === Funkcja {{Code|Eval}} === {{PreLine|Eval ("nazwa_zmiennej")}} - Funkcja zwraca wartość zmiennej o nazwie podanej jako parametr. Jeżeli wystąpił błąd funkcja zwraca pusty string "", a makro @error przyjmuje wartość 1. '''"nazwa_zmiennej"''' - nazwa zmiennej zgodna z ogólnymi zasadami tworzenie nazw zmiennych, należy jednak pominąć prefiks $ (np. zmienna_1 a nie $zmienna_1). Można odczytywać wartości zmiennych wcześniej utworzonym w sposób klasyczny. Zmienna nie może być tablicą. Przykład zastosowania: Przypuśćmy, że musimy utworzyć 99 zmiennych wg schematu {{Code|$x1{{=}}1, $x2{{=}}2 ... $x99{{=}}99}}. W klasyczny sposób trzeba by 99 razy użyć instrukcji przypisania. Było by to bardzo pracochłonne i rozwlekłe. Można jednak inaczej: <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x"&$i, $i, 1) Next MsgBox(0, "", Eval("x66")) </syntaxhighlight> Od wersji 3.3.12 możliwe jest odczytanie tak utworzonych zmiennych w sposób klasyczny (próba klasycznego odczytania wartości zmiennej dla wcześniejszych wersji AutoIt'a powodowała błąd): <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x" & $i, $i) Next MsgBox(0, "", $x66) ;błąd niezadeklarowanej zmiennej </syntaxhighlight> Dla wcześniejszych wersji niż 3.3.12 trzeba było użyć dyrektywy '''#forcedef''': <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x" & $i, $i) Next #forcedef $x66 MsgBox(0, "", $x66) </syntaxhighlight> Funkcja '''Assign''' bez problemu nadaje wartość zmiennym utworzonym w sposób klasyczny: <syntaxhighlight lang="AutoIt"> Local $txt Assign("txt", "wasta") MsgBox(0, "", $txt) </syntaxhighlight> a funkcja '''Eval''' odczytuje te zmienne: <syntaxhighlight lang="AutoIt"> $txt = "wasta" MsgBox(0, "", Eval("txt")) </syntaxhighlight> === Funkcja {{Code|IsDeclared}} === {{PreLine|IsDeclared ("nazwa_zmiennej")}} Funkcja sprawdza czy została utworzona zmienna o podanej nazwie. Zwraca: {{PreLine| 1 - gdy zmienna jest globalna -1 - gdy zmienna jest lokalna 0 - gdy zmienna nie została utworzona }} Działa ze zmiennymi utworzonymi klasycznie, jak i utworzonymi przez funkcję '''Assign'''. Przykład: <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x" & $i, $i) Next MsgBox(0, "", IsDeclared("x66")) ;wyświetli 1 test() ;wyświetli -1 MsgBox(0, "", IsDeclared("b")) ;wyświetli 0 Func test() Local $a MsgBox(0, "", IsDeclared("a")) EndFunc </syntaxhighlight> == String jako nazwa funkcji == Stringu jako nazwy funkcji można użyć tylko przy jej wywołani, lecz nie przy jej deklarowaniu. Służy do tego: === Funkcja {{Code|Call}} === {{PreLine|Call ( "nazwa_funkcji" [, param1 [, param2 [, paramN]]] )}} Funkcja wywołuje funkcję o podanej nazwie i opcjonalnie przekazuje do niej parametry. Jeżeli sukces to zwraca wartość zwracaną przez wywołaną funkcję (makra: {{Code|@error}} i {{Code|@extended}} mogą być także przez nią ustawione). W przypadku błędu makro {{Code|@error}} przyjmuje wartość {{Code|0xDEAD}}, a makro @extended {{Code|0xBEEF}} (jeśli funkcja nie istnieje lub podano niewłaściwą ilość parametrów). '''Uwaga:''' Wywoływana funkcja od wersji {{Kbd|3.3.10.2}} może być funkcją wbudowaną translatora, parametry mogą być przekazywane przez referencję. Przykład: <syntaxhighlight lang="AutoIt"> MsgBox(0,"",Call("test",1,2,3)) Func test($a, $b, $c) Return $a+$b+$c EndFunc </syntaxhighlight> == String jako wyrażenie == O ile trudno znaleźć sensowne zastosowanie dla funkcji {{Code|'''Call'''}}, to użycie stringu jako wyrażenia ma duży potencjał programistyczny. Wyrażeniem jest w zasadzie wszystko to, czemu możemy wyliczyć jakąś wartość. Może ono zawierać liczby, zmienne, stałe, operatory arytmetyczne i logiczne, operatory relacji oraz wywołania funkcji tak wbudowanych jak i zdefiniowanych przez programistę. Do wartościowania wyrażenia opisanego za pomocą stringu służy: === Funkcja {{Code|Execute}} === {{PreLine|Execute ( "string" )}} Funkcja zwraca wartość wyrażenia opisanego stringiem. Jeżeli wystąpił błąd to zwraca pusty łańcuch, a makro @error przyjmuje wartość różną od zera. '''"string"''' - string z opisem wyrażenia Ponieważ string z opisem wyrażenia może pochodzić z zewnątrz programy, jest możliwe wykonanie wewnątrz programu fragmentu kodu wczytanego z dysku lub wpisanego bezpośrednio z klawiatury. Kilka przykładów, które zaprezentują możliwości funkcji: {{Code|'''Execute'''}}. <syntaxhighlight lang="AutoIt"> $ex='MsgBox(0, "Test Execute:", "Ala ma Asa")' Execute($ex) $ex = "(1+2)^2-5/3" MsgBox(0, "Test 2:", Execute($ex)) $a=2 $b=3 MsgBox(0, "Test 3:", Execute("$a=$b")) MsgBox(0, "Test 4:", Execute("sin($a)+cos($a+$b)")) MsgBox(0, "Test 5:", Execute("test($a, $b)")) Func test($p1, $p2) Return $p1+$p2 EndFunc </syntaxhighlight> == Zmienna zawierająca nazwę funkcji == Od wersji 3.10.2 w AutoIt wprowadzono możliwość przechowywania w zmiennej nazwy funkcji. Przykład: <syntaxhighlight lang="AutoIt"> $vFunc = MsgBox $vFunc(0, "Test", "To działa!") </syntaxhighlight> === {{Kbd|FuncName}} === {{PreLine|FuncName ( $Functionvariable )}} Funkcja zwraca w postaci stringu nazwę funkcji przechowywanej w zmiennej, lub string pusty gdy wystąpił błąd. {{PreLine|'''$Functionvariable'''}} - zmienna przechowująca nazwę funkcji Przykład: <syntaxhighlight lang="AutoIt"> $hFunc = MsgBox MsgBox(0, "Test", "Nazwa funkcji to: " & FuncName($hFunc)) </syntaxhighlight> === {{Kbd|IsFunc}} === {{PreLine|IsFunc ( $Variable )}} Funkcja sprawdza czy zmienna zawiera nazwę funkcji. Zwraca 1 gdy funkcja jest zdefiniowana przez użytkownika, 2 gdy funkcja jest funkcją wbudowaną translatora, lub 0 gdy zmienna nie zawiera nazwy funkcji. {{PreLine|'''$Variable'''}} - sprawdzana zmienna Przykład: <syntaxhighlight lang="AutoIt"> $hFunc = MsgBox MsgBox(0, "Test", "Jaki to rodzaj funkcji: " & IsFunc($hFunc)) </syntaxhighlight> Na koniec użyteczny przykład, kalkulator zapamiętujący wzór funkcji i obliczający jej wartość dla różnych argumentów: <syntaxhighlight lang="AutoIt"> #include <GUIConstantsEx.au3> GUICreate("Wprowadź wartość zmiennej i wzór funkcji", 360, 120, -1, 300) $f1 = GUICtrlCreateInput(0, 50, 5, 200, 20) GUICtrlCreateLabel("$x=", 25, 8, 20, 20) $f2 = GUICtrlCreateInput("", 50, 35, 200, 20) GUICtrlCreateLabel("f(x)=", 22, 38, 30, 20) $btn = GUICtrlCreateButton("Oblicz", 40, 75, 60, 20) GUISetState() Do $msg = GUIGetMsg() $txt1 = GUICtrlRead($f1) $txt2 = GUICtrlRead($f2) If $msg = $btn Then $x=Execute($txt1) $res = Execute($txt2) MsgBox(4096, "Wynik:", $res) EndIf Sleep(5) Until $msg = $GUI_EVENT_CLOSE </syntaxhighlight> = Niestandardowe struktury danych = Struktura danych (ang. data structure) - sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. W zasadzie AutoIt posiada standardowo tylko dwie struktury danych, zmienne proste przechowujące pojedynczą wartość i tablice. W rozdziale o bibliotekach DLL omówiona została także struktura (rekord), do której dostęp jest możliwy za pomocą stosownych funkcji. Czasami jednak z pewnych względów optymalne będzie użycie innych struktur danych. Podczas tworzenia skryptu programista musi dokonać wyboru odpowiedniej struktury, aby uzyskać pożądany efekt. Niewłaściwy wybór może niekorzystnie wpłynąć na złożoność obliczeniową, co przekłada się na szybkość działania programu. Jest to szczególnie ważne przy operowaniu dużymi zbiorami danych. Z drugiej strony należy także uwzględnić łatwość implementacji danej struktury w konkretnym przypadku. == Tablica asocjacyjna == '''Tablica asocjacyjna''': (tablica skojarzeniowa, mapa, słownik, ang. associative array, map, dictionary) – nazwa dla powszechnie stosowanego w informatyce abstrakcyjnego typu danych, który przechowuje pary (unikatowy klucz, wartość) i umożliwia dostęp do wartości poprzez podanie klucza. Standardowo AutoIt nie posiada możliwości posługiwania się tego typu tablicami. Można jednak używać tablic asocjacyjnych za pośrednictwem znajdującego się w systemie operacyjnym obiektu {{Kbd|'''Scripting.Dictionary'''}}. Obiekt ten posiada kilka metod umożliwiających tworzenie i manipulowanie tablicami asocjacyjnymi. Uwaga! Scripting.Dictionary losowo generuje problemy przy dużych bazach danych. Objawy:{{Br}} {{Code|Add()}} nie dodaje, mimo że {{Code|Exists()}} twierdzi, że nie istnieje, dane są niereprodukowalnie pomijane, znikające wpisy mimo poprawnych danych wejściowych, problem nie dotyczy konkretnego rekordu — zmienia się między kolejnym uruchomieniami. To znany i wielokrotnie raportowany problem z COM-owym Scripting.Dictionary używanym w AutoIt, gdy: * zbyt duża liczba kluczy - {{Kbd|Scripting.Dictionary}} w AutoIt (COM interop z VBScript) potrafi działać poprawnie do 60–100k, ale potem... pojawiają się niereplikowalne błędy. * lub długości kluczy są zbyt duże - jeśli path ma bardzo długą ścieżkę (>255 znaków) — może powodować niestabilność lub konflikt hashy. * lub jest wiele podobnych ścieżek (czyli dużo kolizji hashy). * duplikowane klucze z niejawnie różniącymi się bajtami (np. spacje, znaki niewidoczne, inne kodowanie) — mogą być widoczne jako różne w tablicy, ale traktowane jako identyczne wewnętrznie przez Dictionary. === Tworzenie tablicy === {{PreLine|$nazwa_tablicy {{=}} ObjCreate("Scripting.Dictionary")}} === Dodawanie elementów do tablicy (metoda {{Code|.Add}}) === {{PreLine|$nazwa_tablicy.Add($nazwa_klucza, $wartosc_klucza)}} === Usunięcie elementu tablicy (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_tablicy.Remove($nazwa_klucza)}} === Usunięcie wszystkich elementów tablicy (metoda {{Code|.RemoveAll}}) === {{PreLine|$nazwa_tablicy.RemoveAll}} === Odczyt elementu tablicy (metoda {{Code|.Item}}) === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy.Item($nazwa_klucza)}} lub w skrócie: {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy($nazwa_klucza)}} === Nadanie wartości elementowi tablicy (metoda {{Code|.Item}}) === {{PreLine|$nazwa_tablicy.Item($nazwa_klucza) {{=}} $wartosc_klucza}} lub w skrócie: {{PreLine|$nazwa_tablicy($nazwa_klucza) {{=}} $wartosc_klucza}} === Odczytanie w postaci 1-wymiarowej tablicy wszystkich wartości tablicy asocjacyjnej (metoda {{Code|.Items}}) === {{PreLine|$array {{=}} $nazwa_tablicy.Items}} === Odczytanie w postaci 1-wymiarowej tablicy wszystkich kluczy tablicy asocjacyjnej (metoda {{Code|.Keys}}) === {{PreLine|$array {{=}} $nazwa_tablicy.Keys}} === Zmiana nazwy klucza (metoda {{Code|.Key}}) === {{PreLine|$nazwa_tablicy.Key($stary_klucz) {{=}} $nowy_klucz}} === Sprawdzenie czy istnieje klucz o podanej nazwie (metoda {{Code|.Exists}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Exists($nazwa_klucza)}} Zwraca True gdy klucz istnieje, lub False gdy nie istnieje. === Ilość elementów tablicy asocjacyjnej (metoda {{Code|.Count}}) === {{PreLine|i {{=}} $nazwa_tablicy.Count}} '''UWAGA:''' Nazwa klucza może być stringiem lub dowolną liczbą, wartość może być dowolnego typu. W nazwach kluczy obiekt rozpoznaje wielkość liter, tak więc np. '''Klucz1''' i '''klucz1''' to dwie różne nazwy. Przykład: <syntaxhighlight lang="AutoIt"> #include <array.au3> $dane = ObjCreate("Scripting.Dictionary") ;tworzenie tablicy asocjacyjnej ;dodawanie kolejnych pól w tablicy $dane.Add("nazwisko", "Kowalski") $dane.Add("imię", "Jan") $dane.Add("wiek", 61) $dane.Add("wzrost", 170) $dane.Add("kolor_oczu", "niebieskie") $dane.Add(6.66, "wyższe") ;odczyt danych z poszczególnych pól tablicy MsgBox(64, "Tablica asocjacyjna", _ "Pan " & $dane.Item("imię") & " " & $dane.Item("nazwisko") & _ " ma lat " & $dane.Item("wiek") & _ ", " & $dane.Item("wzrost") & " cm wzrostu" & _ " i oczy " & $dane.Item("kolor_oczu") & ".") ;odczytanie w postaci tablicy, wartości wszystkich pól tablicy $arr = $dane.Items _ArrayDisplay($arr) ;odczytanie w postaci tablicy, wszystkich kluczy tablicy $arr = $dane.Keys _ArrayDisplay($arr) $dane("kolor_oczu") = "zielone" ;zmiana wartości MsgBox(0, "Kolor oczu", $dane("kolor_oczu")) ;zmiana nazwy klucza $dane.Key(6.66) = "wykształcenie" ;sprawdzenie czy istnieje podany klucz MsgBox(0, 'Klucz "wykształcenie"', $dane.Exists("wykształcenie")) MsgBox(0, "Ilość elementów", $dane.Count) $dane.Remove("wykształcenie") ;usunięcie podanego klucza MsgBox(0, 'Klucz "wykształcenie"', $dane.Exists("wykształcenie")) </syntaxhighlight> <big><big>'''UWAGA: Pozostałe struktury danych wymagają .NET Framework 4.5 '''</big></big> == Tablica mieszająca == Za Wiki: Tablica mieszająca lub tablica z haszowaniem (ang. hash table) to struktura danych, która jest jednym ze sposobów realizacji tablicy asocjacyjnej, tj. abstrakcyjnego typu danych służącego do przechowywania informacji, w taki sposób aby możliwy był do nich szybki dostęp. Tablica mieszająca umożliwia również szybkie porównywanie danych, np. fragmentów tekstów, plików, itp. Elementy tablicy mieszającej są indeksowane liczbowymi indeksami generowanym przez funkcję mieszającą. Odwołania do przechowywanych obiektów dokonywane są na podstawie klucza, który dany obiekt (informację) identyfikuje. Na podstawie klucza funkcja mieszająca generuje indeks, po którym przeszukiwana jest tablica. Przy dużych tablicach taka metoda jest o wiele szybsza niż bezpośrednie wyszukiwanie po kluczu, jak w tablicy asocjacyjnej. Ponieważ cały proces tworzenia indeksów i przeszukiwania jest przeprowadzany w tle przez procedury systemu operacyjnego, dla programisty samo operowanie tablicami asocjacyjnymi i mieszającymi w zasadzie niczym się nie różni. === Tworzenie tablicy mieszającej === {{PreLine|$nazwa_tablicy {{=}} ObjCreate("System.Collections.Hashtable")}} === Dodawanie elementów do tablicy (metoda {{Code|.Add}}) === {{PreLine|$nazwa_tablicy.Add($nazwa_klucza, $wartosc_klucza)}} === Usuwanie elementu tablicy (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_tablicy.Remove($nazwa_klucza)}} === Usunięcie wszystkich elementów tablicy (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_tablicy.Clear}} === Odczyt elementu tablicy === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy($nazwa_klucza)}} === Nadanie wartości elementowi tablicy === {{PreLine|$nazwa_tablicy($nazwa_klucza) {{=}} $wartosc_klucza}} === Sprawdzenie czy istnieje klucz o podanej nazwie (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Contains($nazwa_klucza)}} === Sprawdzenie czy istnieje podana wartość (metoda {{Code|.ContainsValue}}) === {{PreLine|$i {{=}} $nazwa_tablicy.ContainsValue($nazwa_klucza)}} Zwraca True gdy klucz istnieje, lub False gdy nie istnieje. === Ilość elementów tablicy mieszającej (metoda {{Code|Count}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Count}} Przykład: <syntaxhighlight lang="AutoIt"> $hash = ObjCreate("System.Collections.Hashtable") ;tworzenie tablicy mieszającej ;dodawanie elementów do tablicy mieszającej $hash.Add("Polska", "Kraków") $hash.Add("Niemcy", "Berlin") $hash.Add("Francja", "Paryż") $hash.Add("Rosja", "Moskwa") $hash.Add("Czechy", "Praga") ;zmiana wartości klucza $hash("Polska") = "Warszawa" MsgBox(0, "Count", "W bazie jest " & $hash.Count & " pozycji.") ;ilość elementów w tablicy $country = "Polska" MsgBox(0, "Odczyt", "Państwo: " & $country & @LF & _ "Stolica: " & $hash($country)) ;odczyt elementu z tablicy ;czy w tablicy jest dana wartość MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $hash.ContainsValue("Paryż")) ;czy w tablicy jest dany klucz MsgBox(0, "Contains", "Czy w bazie jest Francja: " & $hash.Contains("Francja")) $hash.Remove("Francja") ;usunięcie z tablicy elementu o zadanym kluczu MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $hash.ContainsValue("Paryż")) </syntaxhighlight> == SortedList == Jest to odmiana tablicy asocjacyjnej, która w momencie tworzenia i modyfikacji jest domyślnie sortowana po kluczu. Zwiększa to czas tworzenia tablicy, lecz zmniejsza czas wyszukiwania informacji. Dostęp do tablicy może być realizowany po kluczu lub po indeksie. === Tworzenie SortedList === {{PreLine|$nazwa_tablicy {{=}} ObjCreate("System.Collections.SortedList")}} === Dodanie wartości do SortedList (metoda {{Code|.Add}}) === {{PreLine|$nazwa_tablicy.Add($nazwa_klucza, $wartosc_klucza)}} === Usunięcie elementu o podanym kluczu (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_tablicy.Remove($nazwa_klucza)}} === Usunięcie elemenu o podanym indeksie (metoda {{Code|.RemoveAt}}) === {{PreLine|$nazwa_tablicy.RemoveAt($indeks)}} === Usunięcie wszystkich elementów tablicy (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_tablicy.Clear}} === Odczyt elementu tablicy === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy($nazwa_klucza)}} === Nadanie wartości elementu tablicy === {{PreLine|$nazwa_tablicy($nazwa_klucza) {{=}} $wartosc_klucza}} === Sprawdzenie czy istnieje klucz o podanej nazwie (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Contains($nazwa_klucza)}} Zwraca True gdy klucz istnieje, lub False gdy nie istnieje. === Sprawdzenie czy istnieje podana wartość (metoda {{Code|.ContainsValue}}) === {{PreLine|$i {{=}} $nazwa_tablicy.ContainsValue($nazwa_klucza)}} Zwraca True gdy wartość istnieje, lub False gdy nie istnieje. === Ilość elementów tablicy (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Count}} === Indeks elementu o podanym kluczu (metoda {{Code|.IndexOfKey}}) === {{PreLine|$indeks {{=}} $nazwa_tablicy.IndexOfKey($nazwa_klucza)}} === Indeks pierwszego elementu o podanej wartości (metoda {{Code|.IndexOf Value}}) === {{PreLine|$indeks {{=}} $nazwa_tablicy.IndexOfValue($wartosc_klucza)}} === Odczyt klucza o zadanym indeksie (metoda {{Code|.GetKey}}) === {{PreLine|$nazwa_klucza {{=}} $nazwa_tablicy.GetKey($indeks)}} === Odczyt wartości o zadanym indeksie (metoda {{Code|.GetByIndex}}) === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy.GetByIndex($indeks)}} === Zmiana wartości pod zadanym indeksem (metoda {{Code|.SetByIndex}}) === {{PreLine|$nazwa_tablicy.SetByIndex($indeks, $wartosc)}} Przykład: <syntaxhighlight lang="AutoIt"> $SList = ObjCreate("System.Collections.SortedList") ;tworzenie tablicy mieszającej ;dodawanie elementów do tablicy mieszającej $SList.Add("Polska", "Kraków") $SList.Add("Niemcy", "Berlin") $SList.Add("Francja", "Paryż") $SList.Add("Rosja", "Moskwa") $SList.Add("Czechy", "Praga") ;zmiana wartości klucza $SList("Polska") = "Warszawa" MsgBox(0, "Count", "W bazie jest " & $SList.Count & " pozycji.") ;ilość elementów w tablicy $country = "Polska" MsgBox(0, "Odczyt", "Państwo: " & $country & @LF & _ "Stolica: " & $SList($country)) ;odczyt elementu z tablicy ;czy w tablicy jest dana wartość MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $SList.ContainsValue("Paryż")) ;czy w tablicy jest dany klucz MsgBox(0, "Contains", "Czy w bazie jest Francja: " & $SList.Contains("Francja")) $SList.Remove("Francja") ;usunięcie z tablicy elementu o zadanym kluczu MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $SList.ContainsValue("Paryż")) ;odczyt indeksu klucza MsgBox(0,"IndexOfKey", "Indeks dla klucza 'Polska': " & $SList.IndexOfKey("Polska")) ;odczyt indeksu podanej wartości MsgBox(0,"IndexOfValue", "Indeks dla wartości 'Praga': " & $SList.IndexOfValue("Praga")) ;odczyt klucza dla zadanego indeksu MsgBox(0,"GetKey", "Klucz dla indeksu 2: " & $SList.GetKey(2)) ;odczyt wartości dla zadanego indeksu MsgBox(0,"GetByIndex", "Wartość dla indeksu 2: " & $SList.GetByIndex(2)) </syntaxhighlight> == Lista == '''Lista''' – struktura danych służąca do reprezentacji zbiorów dynamicznych, w której elementy ułożone są w liniowym porządku. Elementy listy są indeksowane (indeksy rozpoczynają się od 0, podobnie jak w tablicach). Także i ten typ danych nie jest standardowo dostępny w AutoIt, dlatego musimy posłużyć się obiektem '''System.Collections.ArrayList'''. Podstawową zaletą używania list zamiast tablic jest wzrost wydajności. Dostęp do elementów listy jest o wiele szybszy. === Tworzenie listy === {{PreLine|$nazwa_listy {{=}} ObjCreate("System.Collections.ArrayList")}} === Dodawanie elementów na końcu listy (metoda {{Code|.Add}}) === {{PreLine|$nazwa_listy.Add($wartosc)}} === Dodawanie elementu na pozycji o zadanym indeksie (metoda {{Code|.Insert}}) === {{PreLine|$nazwa_listy.Insert($indeks, $wartosc)}} Indeksy pozostałych elementów są zwiększane o 1. === Usunięcie pierwszego elementu o zadanej wartości (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_listy.Remove($wartosc)}} Indeksy pozostałych elementów są zmniejszane o 1. === Usunięcie elementu o zadanym indeksie (metoda {{Code|.RemoveAt}}) === {{PreLine|$nazwa_listy.RemoveAt($indeks)}} Indeksy pozostałych elementów są zmniejszane o 1. === Usunięcie elementów o zadanym zakresie indeksów (metoda {{Code|.RemoveRange}}) === $nazwa_listy.RemoveRange($indeks, $ilosc_elementow_do_usuniecia) Indeksy pozostałych elementów są zmniejszane o $ilosc_elementow_do_usuniecia. ===Tworzenie nowej listy z elementów o zadanym zakresie indeksów (metoda {{Code|.GetRange}})=== {{PreLine|$nowa_lista {{=}} $nazwa_listy.GetRange($indeks, $ilosc_elementow_do_kopiowania)}} === Usunięcie wszystkich elementów listy (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_listy.Clear}} === Odczyt elementu listy o zadanym indeksie (metoda {{Code|.Item}}) === {{PreLine|$wartosc {{=}} $nazwa_listy.Item($indeks)}} === Zmiana wartości elementu listy o zadanym indeksie (metoda {{Code|.Item}}) === {{PreLine|$nazwa_listy.Item($indeks) {{=}} $wartosc}} === Odwrócenie kolejności elementów listy (metoda {{Code|.Reverse}}) === {{PreLine|$nazwa_listy.Reverse}} === Odczytanie ilości elementów listy (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_listy.Count}} === Kopiowanie zawartości listy do jednowymiarowej tablicy (metoda {{Code|.ToArray}}) === {{PreLine|$array {{=}} $nazwa_listy.ToArray}} === Sprawdzenie czy istnieje element o zadanej wartości (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_listy.Contains($wartosc)}} Zwraca True gdy dana wartość jest w liście, w przeciwnym razie zwraca False. Przykład: <syntaxhighlight lang="AutoIt"> $aList = ObjCreate("System.Collections.ArrayList") ;tworzenie listy ;dodawanie elementów na końcu listy $aList.Add("a") $aList.Add("b") $aList.Add("c") $aList.Add("d") $aList.Add("a") $aList.Add(3.1415) $aList.Add("wasta") ViewList($aList, "LISTA") $aList.Insert(3,"ble, ble, ble") ;wstawienie elementu na pozycji o indeksie 3 ViewList($aList, "Insert(3)") $aList.Item(3) = 666 ViewList($aList, "Item(3)") $aList.Reverse ViewList($aList, "Reverse") $aList.Remove("a") ViewList($aList, "Remove 'a'") $aList.RemoveAt(2) ViewList($aList, "RemoveAt(2)") $aList.RemoveRange(2, 3) ViewList($aList, "RemoveRange(4,3)") $str = $aList.ToArray MsgBox(0, "LISTA", "Element o indeksie 1 = " & $str[1]) ;szukanie elementu o zadanej wartości MsgBox(0,"LISTA", "Czy jest element o wartości 'wasta': " & $aList.Contains("wasta")) $aList.Clear ;usunięcie wszystkich elementów listy MsgBox(0, "LISTA", "Ilość elementów = " & $aList.Count) ;ilość elementów listy ;funkcja wyświetlająca zawartość listy Func ViewList($aList, $title="") Local $n = $aList.Count ;ilość elementów listy Local $txt = "Indeks | Wartość" & @LF For $i=0 To $n-1 $txt &= "---------------------" & @LF $txt &= $i & " | " & $aList.Item($i) & @LF ;odczyt elementu o zadanym indeksie Next MsgBox(0, $title, $txt) EndFunc </syntaxhighlight> == Kolejka == Kolejka (ang. queue) – liniowa struktura danych, w której nowe dane dopisywane są na końcu kolejki, a z początku kolejki pobierane są dane do dalszego przetwarzania (bufor typu FIFO, First In, First Out; pierwszy na wejściu, pierwszy na wyjściu). === Tworzenie kolejki === {{PreLine|$nazwa_kolejki {{=}} ObjCreate("System.Collections.Queue")}} === Dodawanie elementu do końca kolejki (metoda {{Code|.Enqueue}}) === {{PreLine|$nazwa_kolejki.Enqueue($wartość)}} === Odczyt elementu z początku kolejki i jego usunięcie (metoda {{Code|.Dequeue}}) === {{PreLine|$wartosc {{=}} $nazwa_kolejki.Dequeue}} ===Odczyt elementu z początku kolejki bez jego usunięcia (metoda {{Code|.Peek}})=== {{PreLine|$wartosc {{=}} $nazwa_kolejki.Peek}} === Usunięcie wszystkich elementów kolejki (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_kolejki.Clear}} === Odczytanie ilości elementów kolejki (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_kolejki.Count}} === Kopiowanie zawartości kolejki do jednowymiarowej tablicy (metoda {{Code|.ToArray}}) === {{PreLine|$array {{=}} $nazwa_kolejki.ToArray}} === Sprawdzenie czy istnieje element o zadanej wartości (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_kolejki.Contains($wartosc)}} Zwraca True gdy dana wartość jest w liście, w przeciwnym razie zwraca False. Przykład: <syntaxhighlight lang="AutoIt"> #include <array.au3> $queue = ObjCreate("System.Collections.Queue") ;tworzenie kolejki ;dopisywanie elementów do kolejki $queue.Enqueue(3.1415) $queue.Enqueue("a") $queue.Enqueue("b") $queue.Enqueue("c") $queue.Enqueue("wasta") ViewQueue($queue) ;odczyt elementu bez usuwania MsgBox(0, "Peek", "Początek kolejki = " & $queue.Peek) MsgBox(0, "Count", "Ilość elementów kolejki = " & $queue.Count) ;odczyt elementu z usunięciem z kolejki MsgBox(0, "Dequeue", "Początek kolejki = " & $queue.Dequeue) MsgBox(0, "Count", "Ilość elementów kolejki = " & $queue.Count) ;czy element o zadanej wartości jest w kolejce MsgBox(0, "Contains", "Czy 'wasta' jest w kolejce: " & $queue.Contains("wasta")) ;usunięcie wszystkich elementów kolejki $queue.Clear MsgBox(0, "Clear", "Ilość elementów kolejki = " & $queue.Count) ;wyświetlenie zawartości kolejki Func ViewQueue($queue, $title="KOLEJKA") Local $Array = $queue.ToArray ;kopiowanie kolejki do tablicy _ArrayDisplay($Array, $title) EndFunc </syntaxhighlight> == Stos == Stos (ang. Stack) – liniowa struktura danych, w której dane dokładane są na wierzch stosu i z wierzchołka stosu są pobierane (bufor typu LIFO, Last In, First Out; ostatni na wejściu, pierwszy na wyjściu). === Tworzenie stosu === {{PreLine|$nazwa_stosu {{=}} ObjCreate("System.Collections.Stack")}} === Dodawanie elementu na górę stosu (metoda {{Code|.Push}}) === {{PreLine|$nazwa_stosu.Push($wartość)}} === Odczyt elementu z góry stosu i jego usunięcie (metoda {{Code|.Pop}}) === {{PreLine|$wartosc {{=}} $nazwa_stosu.Pop}} === Odczyt elementu z góry stosu bez jego usunięcia (metoda {{Code|.Peek}}) === {{PreLine|$wartosc {{=}} $nazwa_stosu.Peek}} === Usunięcie wszystkich elementów stosu (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_stosu.Clear}} === Odczytanie ilości elementów stosu (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_stosu.Count}} === Kopiowanie zawartości stosu do jednowymiarowej tablicy (metoda {{Code|.ToArray}}) === {{PreLine|$array {{=}} $nazwa_stosu.ToArray}} === Sprawdzenie czy istnieje element o zadanej wartości (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_stosu.Contains($wartosc)}} Zwraca True gdy dana wartość jest w liście, w przeciwnym razie zwraca False. Przykład: <syntaxhighlight lang="AutoIt"> #include <array.au3> $stack = ObjCreate("System.Collections.Stack") ;tworzenie stosu ;dodawanie elementów na wierzch stosu $stack.Push(3.1415) $stack.Push("a") $stack.Push("b") $stack.Push("c") $stack.Push("wasta") ViewStack($stack) ;odczyt elementu z wierzchu stosu bez usuwania MsgBox(0, "Peek", "Wierzch stosu = " & $stack.Peek) MsgBox(0, "Count", "Ilość elementów stosu = " & $stack.Count) ;odczyt elementu z usunięciem ze stosu MsgBox(0, "Pop", "Wierzch stosu = " & $stack.Pop) MsgBox(0, "Count", "Ilość elementów stosu = " & $stack.Count) ;czy element o zadanej wartości jest na stosie MsgBox(0, "Contains", "Czy 'wasta' jest na stosie: " & $stack.Contains("wasta")) ;usunięcie wszystkich elementów stosu $stack.Clear MsgBox(0, "Clear", "Ilość elementów stosu = " & $stack.Count) ;wyświetlenie zawartości stosu Func ViewStack($stack, $title="STOS") Local $Array = $stack.ToArray ;kopiowanie stosu do tablicy _ArrayDisplay($Array, $title) EndFunc </syntaxhighlight> = Uruchamianie skryptu = Skrypty AutoIt można uruchamiać spod edytora SciTe wciskając klawisz F5. Po skompilowaniu skrypt uruchamia się jak każdy plik wykonywalny Windows. Oprócz tych standardowych sposobów, są możliwe także inne mniej typowe. == Uruchamianie skryptów z wiersza poleceń == Skompilowane skrypty AutoIt'a można uruchomić z wiersza poleceń (linii komend). Możliwe jest także przekazywanie parametrów do tak uruchamianych skryptów. Służy do tego zdefiniowana w translatorze globalna tablica o nazwie '''$CmdLine'''. Tablica jest tylko do odczytu, inicjowana w momencie uruchomienia skryptu. Ma ona następującą strukturę: {{PreLine| $CmdLine[0] - ilość parametrów przekazanych w wierszu poleceń $CmdLine[1] - wartość 1 parametru ... $CmdLine[n] - wartość n-tego paramatru }} Należy pamiętać, że wszystkie parametry przekazywane z wiersza poleceń są tekstami. Separatorem między parametrami są spacje. Jeżeli chcemy przekazać parametr zawierający spacje, należy ująć go w cudzysłowy. Można maksymalnie przekazać 63 parametry. Przykład wywołania skryptu: {{PreLine|myprog.exe 1 2 "Autoit to jest to!" Wasta}} Tablica $CmdLine będzie zawierać następujące wartości {{PreLine| $CmdLine[0] {{=}} 4 (ilość parametrów) $CmdLine[1] {{=}} 1 (string 1 parametru) $CmdLine[2] {{=}} 2 (string 2 parametru) $CmdLine[3] {{=}} Autoit to jest to! (string 3 parametru) $CmdLine[4] {{=}} Wasta (string 4 parametru) }} Przykład skryptu wypisującego w konsoli listę parametrów, a w okienku MsgBox ich ilość (skrypt należy skompilować): <syntaxhighlight lang="autoit"> #AutoIt3Wrapper_Change2CUI=y $iIL = $CmdLine[0] If $iIL>0 Then For $i=1 To $iIL ConsoleWrite($CmdLine[$i] & @LF) Next EndIf MsgBox(64, "Ilość parametrów:", $CmdLine[0]) </syntaxhighlight> Oprócz tablicy $CmdLine zdefiniowana jest także globalna zmienna $CmdLineRaw, która przechowuje listę parametrów w postaci stringu. Ta zmienna jest także tylko do odczytu, inicjowana w momencie uruchomienia skryptu. Przykład skryptu wypisującego w okienku MsgBox listę wprowadzonych parametrów (skrypt należy skompilować): <syntaxhighlight lang="autoit"> MsgBox(64, "Lista parametrów:", $CmdLineRaw) </syntaxhighlight> == Uruchamianie pojedynczej linii kodu z wiersza poleceń == Można wykonać pojedynczą linię kodu bezpośrednio z wiersza poleceń: {{PreLine|AutoIt3.exe [/komunikat błędu] /AutoIt3ExecuteLine "wiersz kodu do wykonania"}} Przykład: {{PreLine|AutoIt3.exe /AutoIt3ExecuteLine "MsgBox(4096, 'Witaj świecie!', 'Cześć!')"}} Sposób ten jest możliwy także wewnątrz skryptu: <syntaxhighlight lang="autoit"> Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, ''Witaj świecie!'', ''Cześć!'')"') </syntaxhighlight> == Uruchomienie skryptu AutoIt z wnętrza innego skryptu == Metoda ta umożliwia uruchomienie nieskompilowanego skryptu z wnętrza innego skryptu AutoIt. Skrypt uruchamiający może być skompilowany lub nie. Dla skryptu skompilowanego niezbędne jest użycie dyrektywy '''#pragma compile(AutoItExecuteAllowed, True)'''. Domyślnie dyrektywa ta jest ustawiona na False, co blokuje możliwość uruchamiania skryptów w ten sposób. Jeżeli skrypt uruchamiający nie jest skompilowany, to dyrektywa #progma nie jest konieczna (zostanie zignorowana). Jeżeli skrypt uruchamiający jest skompilowany, to w systemie nie musi być zainstalowany AutoIt, jednak uruchamiany skrypt musi mieć dostęp w swoim bieżącym folderze, do wszystkich UDF'ów dołączanych dyrektywą #include. Przykład (skrypt uruchamiający): <syntaxhighlight lang="autoit"> #pragma compile(AutoItExecuteAllowed, True) $sFile = "test.au3" $iProcess = Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sFile & '"') </syntaxhighlight> Skrypt uruchamiany (plik ze skryptem uruchamianym musi mieć nazwę taką jaką podano w skrypcie uruchamiającym, w naszym przypadku jest to test.au3): <syntaxhighlight lang="autoit"> MsgBox(0,"","Działa!") MsgBox(64,"","HURA!!!") </syntaxhighlight> s8p8i4wsrdeahq58q63zhkrx8q5ulqm 558473 558425 2026-10-04T00:48:35Z Wasta 12503 558473 wikitext text/x-wiki = Metaprogramowanie, metajęzyk, refleksyjność = '''Metaprogramowanie''' - technika umożliwiająca programom tworzenie lub modyfikację kodu innych programów (lub ich samych). Język umożliwiający stosowanie tej techniki nazywamy '''metajęzykiem'''. Jeżeli metajęzyk umożliwia modyfikację własnego kodu, nazywany jest '''metajęzykiem refleksyjnym''', a proces programowanie z użyciem tego mechanizmu, '''programowaniem refleksyjnym'''. W Autoit istnieje możliwość użycia zmiennej łańcuchowej (stringu) jako elementu treści programu. Dzięki temu sam kod programu może być traktowany w sposób podobny jak zawarte w nim dane i modyfikowany dynamicznie w trakcie wykonywania. Technika ta, rzadko realizowana w innych językach programowania, umożliwia w pewnych przypadkach uzyskanie efektów, których osiągnięcie innym sposobem byłoby trudne i pracochłonne. ; Stringami mogą być{{Dk}} * nazwy zmiennych{{Br}} * nazwy funkcji{{Br}} * wyrażenia (ten przypadek jest szczególnie interesujący) W dalszej części rozdziału opiszę jak osiągnąć taki efekt i jakie korzyści można z niego mieć. Jak to w AutoIt przeważnie bywa, wszystko jest realizowane za pomocą odpowiednich funkcji. == String jako nazwa zmiennej == === Funkcja {{Code|Assign}} === {{PreLine|Assign ("nazwa_zmiennej", wartość_zmiennej [, flaga])}} Funkcja nadaje wartość (i ewentualnie tworzenie) zmiennej o podanej nazwie. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''"nazwa_zmiennej"''' - nazwa zmiennej musi być utworzona zgodnie z ogólnymi zasadami tworzenie nazw zmiennych, należy jednak pominąć prefiks $ (np. zmienna_1 a nie $zmienna_1). Można nadawać wartości zmiennym wcześniej utworzonym w sposób klasyczny. Zmienna nie może być tablicą. '''wartość_zmiennej''' - wartość nadawana tworzonej zmiennej '''flaga''' - określa sposób tworzenia zmiennej {{PreLine| 0 - zmienna jest tworzona jeżeli nie istnieje (wartość domyślna) 1 - tworzenie zmiennej o zakresie lokalnym 2 - tworzenie zmiennej o zakresie globalnym 4 - błąd jeżeli zmienna nie istnieje }} === Funkcja {{Code|Eval}} === {{PreLine|Eval ("nazwa_zmiennej")}} - Funkcja zwraca wartość zmiennej o nazwie podanej jako parametr. Jeżeli wystąpił błąd funkcja zwraca pusty string "", a makro @error przyjmuje wartość 1. '''"nazwa_zmiennej"''' - nazwa zmiennej zgodna z ogólnymi zasadami tworzenie nazw zmiennych, należy jednak pominąć prefiks $ (np. zmienna_1 a nie $zmienna_1). Można odczytywać wartości zmiennych wcześniej utworzonym w sposób klasyczny. Zmienna nie może być tablicą. Przykład zastosowania: Przypuśćmy, że musimy utworzyć 99 zmiennych wg schematu {{Code|$x1{{=}}1, $x2{{=}}2 ... $x99{{=}}99}}. W klasyczny sposób trzeba by 99 razy użyć instrukcji przypisania. Było by to bardzo pracochłonne i rozwlekłe. Można jednak inaczej: <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x"&$i, $i, 1) Next MsgBox(0, "", Eval("x66")) </syntaxhighlight> Od wersji 3.3.12 możliwe jest odczytanie tak utworzonych zmiennych w sposób klasyczny (próba klasycznego odczytania wartości zmiennej dla wcześniejszych wersji AutoIt'a powodowała błąd): <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x" & $i, $i) Next MsgBox(0, "", $x66) ;błąd niezadeklarowanej zmiennej </syntaxhighlight> Dla wcześniejszych wersji niż 3.3.12 trzeba było użyć dyrektywy '''#forcedef''': <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x" & $i, $i) Next #forcedef $x66 MsgBox(0, "", $x66) </syntaxhighlight> Funkcja '''Assign''' bez problemu nadaje wartość zmiennym utworzonym w sposób klasyczny: <syntaxhighlight lang="AutoIt"> Local $txt Assign("txt", "wasta") MsgBox(0, "", $txt) </syntaxhighlight> a funkcja '''Eval''' odczytuje te zmienne: <syntaxhighlight lang="AutoIt"> $txt = "wasta" MsgBox(0, "", Eval("txt")) </syntaxhighlight> === Funkcja {{Code|IsDeclared}} === {{PreLine|IsDeclared ("nazwa_zmiennej")}} Funkcja sprawdza czy została utworzona zmienna o podanej nazwie. Zwraca: {{PreLine| 1 - gdy zmienna jest globalna -1 - gdy zmienna jest lokalna 0 - gdy zmienna nie została utworzona }} Działa ze zmiennymi utworzonymi klasycznie, jak i utworzonymi przez funkcję '''Assign'''. Przykład: <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x" & $i, $i) Next MsgBox(0, "", IsDeclared("x66")) ;wyświetli 1 test() ;wyświetli -1 MsgBox(0, "", IsDeclared("b")) ;wyświetli 0 Func test() Local $a MsgBox(0, "", IsDeclared("a")) EndFunc </syntaxhighlight> == String jako nazwa funkcji == Stringu jako nazwy funkcji można użyć tylko przy jej wywołani, lecz nie przy jej deklarowaniu. Służy do tego: === Funkcja {{Code|Call}} === {{PreLine|Call ( "nazwa_funkcji" [, param1 [, param2 [, paramN]]] )}} Funkcja wywołuje funkcję o podanej nazwie i opcjonalnie przekazuje do niej parametry. Jeżeli sukces to zwraca wartość zwracaną przez wywołaną funkcję (makra: {{Code|@error}} i {{Code|@extended}} mogą być także przez nią ustawione). W przypadku błędu makro {{Code|@error}} przyjmuje wartość {{Code|0xDEAD}}, a makro @extended {{Code|0xBEEF}} (jeśli funkcja nie istnieje lub podano niewłaściwą ilość parametrów). '''Uwaga:''' Wywoływana funkcja od wersji {{Kbd|3.3.10.2}} może być funkcją wbudowaną translatora, parametry mogą być przekazywane przez referencję. Przykład: <syntaxhighlight lang="AutoIt"> MsgBox(0,"",Call("test",1,2,3)) Func test($a, $b, $c) Return $a+$b+$c EndFunc </syntaxhighlight> == String jako wyrażenie == O ile trudno znaleźć sensowne zastosowanie dla funkcji {{Code|'''Call'''}}, to użycie stringu jako wyrażenia ma duży potencjał programistyczny. Wyrażeniem jest w zasadzie wszystko to, czemu możemy wyliczyć jakąś wartość. Może ono zawierać liczby, zmienne, stałe, operatory arytmetyczne i logiczne, operatory relacji oraz wywołania funkcji tak wbudowanych jak i zdefiniowanych przez programistę. Do wartościowania wyrażenia opisanego za pomocą stringu służy: === Funkcja {{Code|Execute}} === {{PreLine|Execute ( "string" )}} Funkcja zwraca wartość wyrażenia opisanego stringiem. Jeżeli wystąpił błąd to zwraca pusty łańcuch, a makro @error przyjmuje wartość różną od zera. '''"string"''' - string z opisem wyrażenia Ponieważ string z opisem wyrażenia może pochodzić z zewnątrz programy, jest możliwe wykonanie wewnątrz programu fragmentu kodu wczytanego z dysku lub wpisanego bezpośrednio z klawiatury. Kilka przykładów, które zaprezentują możliwości funkcji: {{Code|'''Execute'''}}. <syntaxhighlight lang="AutoIt"> $ex='MsgBox(0, "Test Execute:", "Ala ma Asa")' Execute($ex) $ex = "(1+2)^2-5/3" MsgBox(0, "Test 2:", Execute($ex)) $a=2 $b=3 MsgBox(0, "Test 3:", Execute("$a=$b")) MsgBox(0, "Test 4:", Execute("sin($a)+cos($a+$b)")) MsgBox(0, "Test 5:", Execute("test($a, $b)")) Func test($p1, $p2) Return $p1+$p2 EndFunc </syntaxhighlight> == Zmienna zawierająca nazwę funkcji == Od wersji 3.10.2 w AutoIt wprowadzono możliwość przechowywania w zmiennej nazwy funkcji. Przykład: <syntaxhighlight lang="AutoIt"> $vFunc = MsgBox $vFunc(0, "Test", "To działa!") </syntaxhighlight> === {{Kbd|FuncName}} === {{PreLine|FuncName ( $Functionvariable )}} Funkcja zwraca w postaci stringu nazwę funkcji przechowywanej w zmiennej, lub string pusty gdy wystąpił błąd. {{PreLine|'''$Functionvariable'''}} - zmienna przechowująca nazwę funkcji Przykład: <syntaxhighlight lang="AutoIt"> $hFunc = MsgBox MsgBox(0, "Test", "Nazwa funkcji to: " & FuncName($hFunc)) </syntaxhighlight> === {{Kbd|IsFunc}} === {{PreLine|IsFunc ( $Variable )}} Funkcja sprawdza czy zmienna zawiera nazwę funkcji. Zwraca 1 gdy funkcja jest zdefiniowana przez użytkownika, 2 gdy funkcja jest funkcją wbudowaną translatora, lub 0 gdy zmienna nie zawiera nazwy funkcji. {{PreLine|'''$Variable'''}} - sprawdzana zmienna Przykład: <syntaxhighlight lang="AutoIt"> $hFunc = MsgBox MsgBox(0, "Test", "Jaki to rodzaj funkcji: " & IsFunc($hFunc)) </syntaxhighlight> Na koniec użyteczny przykład, kalkulator zapamiętujący wzór funkcji i obliczający jej wartość dla różnych argumentów: <syntaxhighlight lang="AutoIt"> #include <GUIConstantsEx.au3> GUICreate("Wprowadź wartość zmiennej i wzór funkcji", 360, 120, -1, 300) $f1 = GUICtrlCreateInput(0, 50, 5, 200, 20) GUICtrlCreateLabel("$x=", 25, 8, 20, 20) $f2 = GUICtrlCreateInput("", 50, 35, 200, 20) GUICtrlCreateLabel("f(x)=", 22, 38, 30, 20) $btn = GUICtrlCreateButton("Oblicz", 40, 75, 60, 20) GUISetState() Do $msg = GUIGetMsg() $txt1 = GUICtrlRead($f1) $txt2 = GUICtrlRead($f2) If $msg = $btn Then $x=Execute($txt1) $res = Execute($txt2) MsgBox(4096, "Wynik:", $res) EndIf Sleep(5) Until $msg = $GUI_EVENT_CLOSE </syntaxhighlight> = Niestandardowe struktury danych = Struktura danych (ang. data structure) - sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. W zasadzie AutoIt posiada standardowo tylko dwie struktury danych, zmienne proste przechowujące pojedynczą wartość i tablice. W rozdziale o bibliotekach DLL omówiona została także struktura (rekord), do której dostęp jest możliwy za pomocą stosownych funkcji. Czasami jednak z pewnych względów optymalne będzie użycie innych struktur danych. Podczas tworzenia skryptu programista musi dokonać wyboru odpowiedniej struktury, aby uzyskać pożądany efekt. Niewłaściwy wybór może niekorzystnie wpłynąć na złożoność obliczeniową, co przekłada się na szybkość działania programu. Jest to szczególnie ważne przy operowaniu dużymi zbiorami danych. Z drugiej strony należy także uwzględnić łatwość implementacji danej struktury w konkretnym przypadku. == Tablica asocjacyjna == '''Tablica asocjacyjna''': (tablica skojarzeniowa, mapa, słownik, ang. associative array, map, dictionary) – nazwa dla powszechnie stosowanego w informatyce abstrakcyjnego typu danych, który przechowuje pary (unikatowy klucz, wartość) i umożliwia dostęp do wartości poprzez podanie klucza. Standardowo AutoIt nie posiada możliwości posługiwania się tego typu tablicami. Można jednak używać tablic asocjacyjnych za pośrednictwem znajdującego się w systemie operacyjnym obiektu {{Kbd|'''Scripting.Dictionary'''}}. Obiekt ten posiada kilka metod umożliwiających tworzenie i manipulowanie tablicami asocjacyjnymi. Uwaga! Scripting.Dictionary losowo generuje problemy przy dużych bazach danych. Objawy:{{Br}} {{Code|Add()}} nie dodaje, mimo że {{Code|Exists()}} twierdzi, że nie istnieje, dane są niereprodukowalnie pomijane, znikające wpisy mimo poprawnych danych wejściowych, problem nie dotyczy konkretnego rekordu — zmienia się między kolejnym uruchomieniami. To znany i wielokrotnie raportowany problem z COM-owym Scripting.Dictionary używanym w AutoIt, gdy: * zbyt duża liczba kluczy - {{Kbd|Scripting.Dictionary}} w AutoIt (COM interop z VBScript) potrafi działać poprawnie do 60–100k, ale potem... pojawiają się niereplikowalne błędy. * lub długości kluczy są zbyt duże - jeśli path ma bardzo długą ścieżkę (>255 znaków) — może powodować niestabilność lub konflikt hashy. * lub jest wiele podobnych ścieżek (czyli dużo kolizji hashy). * duplikowane klucze z niejawnie różniącymi się bajtami (np. spacje, znaki niewidoczne, inne kodowanie) — mogą być widoczne jako różne w tablicy, ale traktowane jako identyczne wewnętrznie przez Dictionary. === Tworzenie tablicy === {{PreLine|$nazwa_tablicy {{=}} ObjCreate("Scripting.Dictionary")}} === Dodawanie elementów do tablicy (metoda {{Code|.Add}}) === {{PreLine|$nazwa_tablicy.Add($nazwa_klucza, $wartosc_klucza)}} === Usunięcie elementu tablicy (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_tablicy.Remove($nazwa_klucza)}} === Usunięcie wszystkich elementów tablicy (metoda {{Code|.RemoveAll}}) === {{PreLine|$nazwa_tablicy.RemoveAll}} === Odczyt elementu tablicy (metoda {{Code|.Item}}) === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy.Item($nazwa_klucza)}} lub w skrócie: {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy($nazwa_klucza)}} === Nadanie wartości elementowi tablicy (metoda {{Code|.Item}}) === {{PreLine|$nazwa_tablicy.Item($nazwa_klucza) {{=}} $wartosc_klucza}} lub w skrócie: {{PreLine|$nazwa_tablicy($nazwa_klucza) {{=}} $wartosc_klucza}} === Odczytanie w postaci 1-wymiarowej tablicy wszystkich wartości tablicy asocjacyjnej (metoda {{Code|.Items}}) === {{PreLine|$array {{=}} $nazwa_tablicy.Items}} === Odczytanie w postaci 1-wymiarowej tablicy wszystkich kluczy tablicy asocjacyjnej (metoda {{Code|.Keys}}) === {{PreLine|$array {{=}} $nazwa_tablicy.Keys}} === Zmiana nazwy klucza (metoda {{Code|.Key}}) === {{PreLine|$nazwa_tablicy.Key($stary_klucz) {{=}} $nowy_klucz}} === Sprawdzenie czy istnieje klucz o podanej nazwie (metoda {{Code|.Exists}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Exists($nazwa_klucza)}} Zwraca True gdy klucz istnieje, lub False gdy nie istnieje. === Ilość elementów tablicy asocjacyjnej (metoda {{Code|.Count}}) === {{PreLine|i {{=}} $nazwa_tablicy.Count}} '''UWAGA:''' Nazwa klucza może być stringiem lub dowolną liczbą, wartość może być dowolnego typu. W nazwach kluczy obiekt rozpoznaje wielkość liter, tak więc np. '''Klucz1''' i '''klucz1''' to dwie różne nazwy. Przykład: <syntaxhighlight lang="AutoIt"> #include <array.au3> $dane = ObjCreate("Scripting.Dictionary") ;tworzenie tablicy asocjacyjnej ;dodawanie kolejnych pól w tablicy $dane.Add("nazwisko", "Kowalski") $dane.Add("imię", "Jan") $dane.Add("wiek", 61) $dane.Add("wzrost", 170) $dane.Add("kolor_oczu", "niebieskie") $dane.Add(6.66, "wyższe") ;odczyt danych z poszczególnych pól tablicy MsgBox(64, "Tablica asocjacyjna", _ "Pan " & $dane.Item("imię") & " " & $dane.Item("nazwisko") & _ " ma lat " & $dane.Item("wiek") & _ ", " & $dane.Item("wzrost") & " cm wzrostu" & _ " i oczy " & $dane.Item("kolor_oczu") & ".") ;odczytanie w postaci tablicy, wartości wszystkich pól tablicy $arr = $dane.Items _ArrayDisplay($arr) ;odczytanie w postaci tablicy, wszystkich kluczy tablicy $arr = $dane.Keys _ArrayDisplay($arr) $dane("kolor_oczu") = "zielone" ;zmiana wartości MsgBox(0, "Kolor oczu", $dane("kolor_oczu")) ;zmiana nazwy klucza $dane.Key(6.66) = "wykształcenie" ;sprawdzenie czy istnieje podany klucz MsgBox(0, 'Klucz "wykształcenie"', $dane.Exists("wykształcenie")) MsgBox(0, "Ilość elementów", $dane.Count) $dane.Remove("wykształcenie") ;usunięcie podanego klucza MsgBox(0, 'Klucz "wykształcenie"', $dane.Exists("wykształcenie")) </syntaxhighlight> <big><big>'''UWAGA: Pozostałe struktury danych wymagają .NET Framework 4.5 '''</big></big> == Tablica mieszająca == Za Wiki: Tablica mieszająca lub tablica z haszowaniem (ang. hash table) to struktura danych, która jest jednym ze sposobów realizacji tablicy asocjacyjnej, tj. abstrakcyjnego typu danych służącego do przechowywania informacji, w taki sposób aby możliwy był do nich szybki dostęp. Tablica mieszająca umożliwia również szybkie porównywanie danych, np. fragmentów tekstów, plików, itp. Elementy tablicy mieszającej są indeksowane liczbowymi indeksami generowanym przez funkcję mieszającą. Odwołania do przechowywanych obiektów dokonywane są na podstawie klucza, który dany obiekt (informację) identyfikuje. Na podstawie klucza funkcja mieszająca generuje indeks, po którym przeszukiwana jest tablica. Przy dużych tablicach taka metoda jest o wiele szybsza niż bezpośrednie wyszukiwanie po kluczu, jak w tablicy asocjacyjnej. Ponieważ cały proces tworzenia indeksów i przeszukiwania jest przeprowadzany w tle przez procedury systemu operacyjnego, dla programisty samo operowanie tablicami asocjacyjnymi i mieszającymi w zasadzie niczym się nie różni. === Tworzenie tablicy mieszającej === {{PreLine|$nazwa_tablicy {{=}} ObjCreate("System.Collections.Hashtable")}} === Dodawanie elementów do tablicy (metoda {{Code|.Add}}) === {{PreLine|$nazwa_tablicy.Add($nazwa_klucza, $wartosc_klucza)}} === Usuwanie elementu tablicy (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_tablicy.Remove($nazwa_klucza)}} === Usunięcie wszystkich elementów tablicy (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_tablicy.Clear}} === Odczyt elementu tablicy === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy($nazwa_klucza)}} === Nadanie wartości elementowi tablicy === {{PreLine|$nazwa_tablicy($nazwa_klucza) {{=}} $wartosc_klucza}} === Sprawdzenie czy istnieje klucz o podanej nazwie (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Contains($nazwa_klucza)}} === Sprawdzenie czy istnieje podana wartość (metoda {{Code|.ContainsValue}}) === {{PreLine|$i {{=}} $nazwa_tablicy.ContainsValue($nazwa_klucza)}} Zwraca True gdy klucz istnieje, lub False gdy nie istnieje. === Ilość elementów tablicy mieszającej (metoda {{Code|Count}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Count}} Przykład: <syntaxhighlight lang="AutoIt"> $hash = ObjCreate("System.Collections.Hashtable") ;tworzenie tablicy mieszającej ;dodawanie elementów do tablicy mieszającej $hash.Add("Polska", "Kraków") $hash.Add("Niemcy", "Berlin") $hash.Add("Francja", "Paryż") $hash.Add("Rosja", "Moskwa") $hash.Add("Czechy", "Praga") ;zmiana wartości klucza $hash("Polska") = "Warszawa" MsgBox(0, "Count", "W bazie jest " & $hash.Count & " pozycji.") ;ilość elementów w tablicy $country = "Polska" MsgBox(0, "Odczyt", "Państwo: " & $country & @LF & _ "Stolica: " & $hash($country)) ;odczyt elementu z tablicy ;czy w tablicy jest dana wartość MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $hash.ContainsValue("Paryż")) ;czy w tablicy jest dany klucz MsgBox(0, "Contains", "Czy w bazie jest Francja: " & $hash.Contains("Francja")) $hash.Remove("Francja") ;usunięcie z tablicy elementu o zadanym kluczu MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $hash.ContainsValue("Paryż")) </syntaxhighlight> == SortedList == Jest to odmiana tablicy asocjacyjnej, która w momencie tworzenia i modyfikacji jest domyślnie sortowana po kluczu. Zwiększa to czas tworzenia tablicy, lecz zmniejsza czas wyszukiwania informacji. Dostęp do tablicy może być realizowany po kluczu lub po indeksie. === Tworzenie SortedList === {{PreLine|$nazwa_tablicy {{=}} ObjCreate("System.Collections.SortedList")}} === Dodanie wartości do SortedList (metoda {{Code|.Add}}) === {{PreLine|$nazwa_tablicy.Add($nazwa_klucza, $wartosc_klucza)}} === Usunięcie elementu o podanym kluczu (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_tablicy.Remove($nazwa_klucza)}} === Usunięcie elemenu o podanym indeksie (metoda {{Code|.RemoveAt}}) === {{PreLine|$nazwa_tablicy.RemoveAt($indeks)}} === Usunięcie wszystkich elementów tablicy (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_tablicy.Clear}} === Odczyt elementu tablicy === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy($nazwa_klucza)}} === Nadanie wartości elementu tablicy === {{PreLine|$nazwa_tablicy($nazwa_klucza) {{=}} $wartosc_klucza}} === Sprawdzenie czy istnieje klucz o podanej nazwie (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Contains($nazwa_klucza)}} Zwraca True gdy klucz istnieje, lub False gdy nie istnieje. === Sprawdzenie czy istnieje podana wartość (metoda {{Code|.ContainsValue}}) === {{PreLine|$i {{=}} $nazwa_tablicy.ContainsValue($nazwa_klucza)}} Zwraca True gdy wartość istnieje, lub False gdy nie istnieje. === Ilość elementów tablicy (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Count}} === Indeks elementu o podanym kluczu (metoda {{Code|.IndexOfKey}}) === {{PreLine|$indeks {{=}} $nazwa_tablicy.IndexOfKey($nazwa_klucza)}} === Indeks pierwszego elementu o podanej wartości (metoda {{Code|.IndexOf Value}}) === {{PreLine|$indeks {{=}} $nazwa_tablicy.IndexOfValue($wartosc_klucza)}} === Odczyt klucza o zadanym indeksie (metoda {{Code|.GetKey}}) === {{PreLine|$nazwa_klucza {{=}} $nazwa_tablicy.GetKey($indeks)}} === Odczyt wartości o zadanym indeksie (metoda {{Code|.GetByIndex}}) === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy.GetByIndex($indeks)}} === Zmiana wartości pod zadanym indeksem (metoda {{Code|.SetByIndex}}) === {{PreLine|$nazwa_tablicy.SetByIndex($indeks, $wartosc)}} Przykład: <syntaxhighlight lang="AutoIt"> $SList = ObjCreate("System.Collections.SortedList") ;tworzenie tablicy mieszającej ;dodawanie elementów do tablicy mieszającej $SList.Add("Polska", "Kraków") $SList.Add("Niemcy", "Berlin") $SList.Add("Francja", "Paryż") $SList.Add("Rosja", "Moskwa") $SList.Add("Czechy", "Praga") ;zmiana wartości klucza $SList("Polska") = "Warszawa" MsgBox(0, "Count", "W bazie jest " & $SList.Count & " pozycji.") ;ilość elementów w tablicy $country = "Polska" MsgBox(0, "Odczyt", "Państwo: " & $country & @LF & _ "Stolica: " & $SList($country)) ;odczyt elementu z tablicy ;czy w tablicy jest dana wartość MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $SList.ContainsValue("Paryż")) ;czy w tablicy jest dany klucz MsgBox(0, "Contains", "Czy w bazie jest Francja: " & $SList.Contains("Francja")) $SList.Remove("Francja") ;usunięcie z tablicy elementu o zadanym kluczu MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $SList.ContainsValue("Paryż")) ;odczyt indeksu klucza MsgBox(0,"IndexOfKey", "Indeks dla klucza 'Polska': " & $SList.IndexOfKey("Polska")) ;odczyt indeksu podanej wartości MsgBox(0,"IndexOfValue", "Indeks dla wartości 'Praga': " & $SList.IndexOfValue("Praga")) ;odczyt klucza dla zadanego indeksu MsgBox(0,"GetKey", "Klucz dla indeksu 2: " & $SList.GetKey(2)) ;odczyt wartości dla zadanego indeksu MsgBox(0,"GetByIndex", "Wartość dla indeksu 2: " & $SList.GetByIndex(2)) </syntaxhighlight> == Lista == '''Lista''' – struktura danych służąca do reprezentacji zbiorów dynamicznych, w której elementy ułożone są w liniowym porządku. Elementy listy są indeksowane (indeksy rozpoczynają się od 0, podobnie jak w tablicach). Także i ten typ danych nie jest standardowo dostępny w AutoIt, dlatego musimy posłużyć się obiektem '''System.Collections.ArrayList'''. Podstawową zaletą używania list zamiast tablic jest wzrost wydajności. Dostęp do elementów listy jest o wiele szybszy. === Tworzenie listy === {{PreLine|$nazwa_listy {{=}} ObjCreate("System.Collections.ArrayList")}} === Dodawanie elementów na końcu listy (metoda {{Code|.Add}}) === {{PreLine|$nazwa_listy.Add($wartosc)}} === Dodawanie elementu na pozycji o zadanym indeksie (metoda {{Code|.Insert}}) === {{PreLine|$nazwa_listy.Insert($indeks, $wartosc)}} Indeksy pozostałych elementów są zwiększane o 1. === Usunięcie pierwszego elementu o zadanej wartości (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_listy.Remove($wartosc)}} Indeksy pozostałych elementów są zmniejszane o 1. === Usunięcie elementu o zadanym indeksie (metoda {{Code|.RemoveAt}}) === {{PreLine|$nazwa_listy.RemoveAt($indeks)}} Indeksy pozostałych elementów są zmniejszane o 1. === Usunięcie elementów o zadanym zakresie indeksów (metoda {{Code|.RemoveRange}}) === $nazwa_listy.RemoveRange($indeks, $ilosc_elementow_do_usuniecia) Indeksy pozostałych elementów są zmniejszane o $ilosc_elementow_do_usuniecia. ===Tworzenie nowej listy z elementów o zadanym zakresie indeksów (metoda {{Code|.GetRange}})=== {{PreLine|$nowa_lista {{=}} $nazwa_listy.GetRange($indeks, $ilosc_elementow_do_kopiowania)}} === Usunięcie wszystkich elementów listy (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_listy.Clear}} === Odczyt elementu listy o zadanym indeksie (metoda {{Code|.Item}}) === {{PreLine|$wartosc {{=}} $nazwa_listy.Item($indeks)}} === Zmiana wartości elementu listy o zadanym indeksie (metoda {{Code|.Item}}) === {{PreLine|$nazwa_listy.Item($indeks) {{=}} $wartosc}} === Odwrócenie kolejności elementów listy (metoda {{Code|.Reverse}}) === {{PreLine|$nazwa_listy.Reverse}} === Odczytanie ilości elementów listy (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_listy.Count}} === Kopiowanie zawartości listy do jednowymiarowej tablicy (metoda {{Code|.ToArray}}) === {{PreLine|$array {{=}} $nazwa_listy.ToArray}} === Sprawdzenie czy istnieje element o zadanej wartości (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_listy.Contains($wartosc)}} Zwraca True gdy dana wartość jest w liście, w przeciwnym razie zwraca False. Przykład: <syntaxhighlight lang="AutoIt"> $aList = ObjCreate("System.Collections.ArrayList") ;tworzenie listy ;dodawanie elementów na końcu listy $aList.Add("a") $aList.Add("b") $aList.Add("c") $aList.Add("d") $aList.Add("a") $aList.Add(3.1415) $aList.Add("wasta") ViewList($aList, "LISTA") $aList.Insert(3,"ble, ble, ble") ;wstawienie elementu na pozycji o indeksie 3 ViewList($aList, "Insert(3)") $aList.Item(3) = 666 ViewList($aList, "Item(3)") $aList.Reverse ViewList($aList, "Reverse") $aList.Remove("a") ViewList($aList, "Remove 'a'") $aList.RemoveAt(2) ViewList($aList, "RemoveAt(2)") $aList.RemoveRange(2, 3) ViewList($aList, "RemoveRange(4,3)") $str = $aList.ToArray MsgBox(0, "LISTA", "Element o indeksie 1 = " & $str[1]) ;szukanie elementu o zadanej wartości MsgBox(0,"LISTA", "Czy jest element o wartości 'wasta': " & $aList.Contains("wasta")) $aList.Clear ;usunięcie wszystkich elementów listy MsgBox(0, "LISTA", "Ilość elementów = " & $aList.Count) ;ilość elementów listy ;funkcja wyświetlająca zawartość listy Func ViewList($aList, $title="") Local $n = $aList.Count ;ilość elementów listy Local $txt = "Indeks | Wartość" & @LF For $i=0 To $n-1 $txt &= "---------------------" & @LF $txt &= $i & " | " & $aList.Item($i) & @LF ;odczyt elementu o zadanym indeksie Next MsgBox(0, $title, $txt) EndFunc </syntaxhighlight> == Kolejka == Kolejka (ang. queue) – liniowa struktura danych, w której nowe dane dopisywane są na końcu kolejki, a z początku kolejki pobierane są dane do dalszego przetwarzania (bufor typu FIFO, First In, First Out; pierwszy na wejściu, pierwszy na wyjściu). === Tworzenie kolejki === {{PreLine|$nazwa_kolejki {{=}} ObjCreate("System.Collections.Queue")}} === Dodawanie elementu do końca kolejki (metoda {{Code|.Enqueue}}) === {{PreLine|$nazwa_kolejki.Enqueue($wartość)}} === Odczyt elementu z początku kolejki i jego usunięcie (metoda {{Code|.Dequeue}}) === {{PreLine|$wartosc {{=}} $nazwa_kolejki.Dequeue}} ===Odczyt elementu z początku kolejki bez jego usunięcia (metoda {{Code|.Peek}})=== {{PreLine|$wartosc {{=}} $nazwa_kolejki.Peek}} === Usunięcie wszystkich elementów kolejki (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_kolejki.Clear}} === Odczytanie ilości elementów kolejki (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_kolejki.Count}} === Kopiowanie zawartości kolejki do jednowymiarowej tablicy (metoda {{Code|.ToArray}}) === {{PreLine|$array {{=}} $nazwa_kolejki.ToArray}} === Sprawdzenie czy istnieje element o zadanej wartości (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_kolejki.Contains($wartosc)}} Zwraca True gdy dana wartość jest w liście, w przeciwnym razie zwraca False. Przykład: <syntaxhighlight lang="AutoIt"> #include <array.au3> $queue = ObjCreate("System.Collections.Queue") ;tworzenie kolejki ;dopisywanie elementów do kolejki $queue.Enqueue(3.1415) $queue.Enqueue("a") $queue.Enqueue("b") $queue.Enqueue("c") $queue.Enqueue("wasta") ViewQueue($queue) ;odczyt elementu bez usuwania MsgBox(0, "Peek", "Początek kolejki = " & $queue.Peek) MsgBox(0, "Count", "Ilość elementów kolejki = " & $queue.Count) ;odczyt elementu z usunięciem z kolejki MsgBox(0, "Dequeue", "Początek kolejki = " & $queue.Dequeue) MsgBox(0, "Count", "Ilość elementów kolejki = " & $queue.Count) ;czy element o zadanej wartości jest w kolejce MsgBox(0, "Contains", "Czy 'wasta' jest w kolejce: " & $queue.Contains("wasta")) ;usunięcie wszystkich elementów kolejki $queue.Clear MsgBox(0, "Clear", "Ilość elementów kolejki = " & $queue.Count) ;wyświetlenie zawartości kolejki Func ViewQueue($queue, $title="KOLEJKA") Local $Array = $queue.ToArray ;kopiowanie kolejki do tablicy _ArrayDisplay($Array, $title) EndFunc </syntaxhighlight> == Stos == Stos (ang. Stack) – liniowa struktura danych, w której dane dokładane są na wierzch stosu i z wierzchołka stosu są pobierane (bufor typu LIFO, Last In, First Out; ostatni na wejściu, pierwszy na wyjściu). === Tworzenie stosu === {{PreLine|$nazwa_stosu {{=}} ObjCreate("System.Collections.Stack")}} === Dodawanie elementu na górę stosu (metoda {{Code|.Push}}) === {{PreLine|$nazwa_stosu.Push($wartość)}} === Odczyt elementu z góry stosu i jego usunięcie (metoda {{Code|.Pop}}) === {{PreLine|$wartosc {{=}} $nazwa_stosu.Pop}} === Odczyt elementu z góry stosu bez jego usunięcia (metoda {{Code|.Peek}}) === {{PreLine|$wartosc {{=}} $nazwa_stosu.Peek}} === Usunięcie wszystkich elementów stosu (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_stosu.Clear}} === Odczytanie ilości elementów stosu (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_stosu.Count}} === Kopiowanie zawartości stosu do jednowymiarowej tablicy (metoda {{Code|.ToArray}}) === {{PreLine|$array {{=}} $nazwa_stosu.ToArray}} === Sprawdzenie czy istnieje element o zadanej wartości (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_stosu.Contains($wartosc)}} Zwraca True gdy dana wartość jest w liście, w przeciwnym razie zwraca False. Przykład: <syntaxhighlight lang="AutoIt"> #include <array.au3> $stack = ObjCreate("System.Collections.Stack") ;tworzenie stosu ;dodawanie elementów na wierzch stosu $stack.Push(3.1415) $stack.Push("a") $stack.Push("b") $stack.Push("c") $stack.Push("wasta") ViewStack($stack) ;odczyt elementu z wierzchu stosu bez usuwania MsgBox(0, "Peek", "Wierzch stosu = " & $stack.Peek) MsgBox(0, "Count", "Ilość elementów stosu = " & $stack.Count) ;odczyt elementu z usunięciem ze stosu MsgBox(0, "Pop", "Wierzch stosu = " & $stack.Pop) MsgBox(0, "Count", "Ilość elementów stosu = " & $stack.Count) ;czy element o zadanej wartości jest na stosie MsgBox(0, "Contains", "Czy 'wasta' jest na stosie: " & $stack.Contains("wasta")) ;usunięcie wszystkich elementów stosu $stack.Clear MsgBox(0, "Clear", "Ilość elementów stosu = " & $stack.Count) ;wyświetlenie zawartości stosu Func ViewStack($stack, $title="STOS") Local $Array = $stack.ToArray ;kopiowanie stosu do tablicy _ArrayDisplay($Array, $title) EndFunc </syntaxhighlight> = Uruchamianie skryptu = Skrypty AutoIt można uruchamiać spod edytora SciTe wciskając klawisz F5. Po skompilowaniu skrypt uruchamia się jak każdy plik wykonywalny Windows. Oprócz tych standardowych sposobów, są możliwe także inne mniej typowe. == Uruchamianie skryptów z wiersza poleceń == Skompilowane skrypty AutoIt'a można uruchomić z wiersza poleceń (linii komend). Możliwe jest także przekazywanie parametrów do tak uruchamianych skryptów. Służy do tego zdefiniowana w translatorze globalna tablica o nazwie '''$CmdLine'''. Tablica jest tylko do odczytu, inicjowana w momencie uruchomienia skryptu. Ma ona następującą strukturę: {{PreLine| $CmdLine[0] - ilość parametrów przekazanych w wierszu poleceń $CmdLine[1] - wartość 1 parametru ... $CmdLine[n] - wartość n-tego paramatru }} Należy pamiętać, że wszystkie parametry przekazywane z wiersza poleceń są tekstami. Separatorem między parametrami są spacje. Jeżeli chcemy przekazać parametr zawierający spacje, należy ująć go w cudzysłowy. Można maksymalnie przekazać 63 parametry. Przykład wywołania skryptu: {{PreLine|myprog.exe 1 2 "Autoit to jest to!" Wasta}} Tablica $CmdLine będzie zawierać następujące wartości {{PreLine| $CmdLine[0] {{=}} 4 (ilość parametrów) $CmdLine[1] {{=}} 1 (string 1 parametru) $CmdLine[2] {{=}} 2 (string 2 parametru) $CmdLine[3] {{=}} Autoit to jest to! (string 3 parametru) $CmdLine[4] {{=}} Wasta (string 4 parametru) }} Przykład skryptu wypisującego w konsoli listę parametrów, a w okienku MsgBox ich ilość (skrypt należy skompilować): <syntaxhighlight lang="autoit"> #AutoIt3Wrapper_Change2CUI=y $iIL = $CmdLine[0] If $iIL>0 Then For $i=1 To $iIL ConsoleWrite($CmdLine[$i] & @LF) Next EndIf MsgBox(64, "Ilość parametrów:", $CmdLine[0]) </syntaxhighlight> Oprócz tablicy $CmdLine zdefiniowana jest także globalna zmienna $CmdLineRaw, która przechowuje listę parametrów w postaci stringu. Ta zmienna jest także tylko do odczytu, inicjowana w momencie uruchomienia skryptu. Przykład skryptu wypisującego w okienku MsgBox listę wprowadzonych parametrów (skrypt należy skompilować): <syntaxhighlight lang="autoit"> MsgBox(64, "Lista parametrów:", $CmdLineRaw) </syntaxhighlight> == Uruchamianie pojedynczej linii kodu z wiersza poleceń == Można wykonać pojedynczą linię kodu bezpośrednio z wiersza poleceń: {{PreLine|AutoIt3.exe [/komunikat błędu] /AutoIt3ExecuteLine "wiersz kodu do wykonania"}} Przykład: {{PreLine|AutoIt3.exe /AutoIt3ExecuteLine "MsgBox(4096, 'Witaj świecie!', 'Cześć!')"}} Sposób ten jest możliwy także wewnątrz skryptu: <syntaxhighlight lang="autoit"> Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, ''Witaj świecie!'', ''Cześć!'')"') </syntaxhighlight> == Uruchomienie skryptu AutoIt z wnętrza innego skryptu == Metoda ta umożliwia uruchomienie nieskompilowanego skryptu z wnętrza innego skryptu AutoIt. Skrypt uruchamiający może być skompilowany lub nie. Dla skryptu skompilowanego niezbędne jest użycie dyrektywy '''#pragma compile(AutoItExecuteAllowed, True)'''. Domyślnie dyrektywa ta jest ustawiona na False, co blokuje możliwość uruchamiania skryptów w ten sposób. Jeżeli skrypt uruchamiający nie jest skompilowany, to dyrektywa #pragma nie jest konieczna (zostanie zignorowana). Jeżeli skrypt uruchamiający jest skompilowany, to w systemie nie musi być zainstalowany AutoIt, jednak uruchamiany skrypt musi mieć dostęp w swoim bieżącym folderze, do wszystkich UDF'ów dołączanych dyrektywą #include. Przykład (skrypt uruchamiający): <syntaxhighlight lang="autoit"> #pragma compile(AutoItExecuteAllowed, True) $sFile = "test.au3" $iProcess = Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sFile & '"') </syntaxhighlight> Skrypt uruchamiany (plik ze skryptem uruchamianym musi mieć nazwę taką jaką podano w skrypcie uruchamiającym, w naszym przypadku jest to test.au3): <syntaxhighlight lang="autoit"> MsgBox(0,"","Działa!") MsgBox(64,"","HURA!!!") </syntaxhighlight> dy5rqzqypoxhxjm3ixdrathldod4snr 558474 558473 2026-10-04T00:55:17Z Wasta 12503 558474 wikitext text/x-wiki = Metaprogramowanie, metajęzyk, refleksyjność = '''Metaprogramowanie''' - technika umożliwiająca programom tworzenie lub modyfikację kodu innych programów (lub ich samych). Język umożliwiający stosowanie tej techniki nazywamy '''metajęzykiem'''. Jeżeli metajęzyk umożliwia modyfikację własnego kodu, nazywany jest '''metajęzykiem refleksyjnym''', a proces programowania z użyciem tego mechanizmu, '''programowaniem refleksyjnym'''. W Autoit istnieje możliwość użycia zmiennej łańcuchowej (stringu) jako elementu treści programu. Dzięki temu sam kod programu może być traktowany w sposób podobny jak zawarte w nim dane i modyfikowany dynamicznie w trakcie wykonywania. Technika ta, rzadko realizowana w innych językach programowania, umożliwia w pewnych przypadkach uzyskanie efektów, których osiągnięcie innym sposobem byłoby trudne i pracochłonne. ; Stringami mogą być{{Dk}} * nazwy zmiennych{{Br}} * nazwy funkcji{{Br}} * wyrażenia (ten przypadek jest szczególnie interesujący) W dalszej części rozdziału opiszę jak osiągnąć taki efekt i jakie korzyści można z niego mieć. Jak to w AutoIt przeważnie bywa, wszystko jest realizowane za pomocą odpowiednich funkcji. == String jako nazwa zmiennej == === Funkcja {{Code|Assign}} === {{PreLine|Assign ("nazwa_zmiennej", wartość_zmiennej [, flaga])}} Funkcja nadaje wartość (i ewentualnie tworzenie) zmiennej o podanej nazwie. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''"nazwa_zmiennej"''' - nazwa zmiennej musi być utworzona zgodnie z ogólnymi zasadami tworzenie nazw zmiennych, należy jednak pominąć prefiks $ (np. zmienna_1 a nie $zmienna_1). Można nadawać wartości zmiennym wcześniej utworzonym w sposób klasyczny. Zmienna nie może być tablicą. '''wartość_zmiennej''' - wartość nadawana tworzonej zmiennej '''flaga''' - określa sposób tworzenia zmiennej {{PreLine| 0 - zmienna jest tworzona jeżeli nie istnieje (wartość domyślna) 1 - tworzenie zmiennej o zakresie lokalnym 2 - tworzenie zmiennej o zakresie globalnym 4 - błąd jeżeli zmienna nie istnieje }} === Funkcja {{Code|Eval}} === {{PreLine|Eval ("nazwa_zmiennej")}} - Funkcja zwraca wartość zmiennej o nazwie podanej jako parametr. Jeżeli wystąpił błąd funkcja zwraca pusty string "", a makro @error przyjmuje wartość 1. '''"nazwa_zmiennej"''' - nazwa zmiennej zgodna z ogólnymi zasadami tworzenie nazw zmiennych, należy jednak pominąć prefiks $ (np. zmienna_1 a nie $zmienna_1). Można odczytywać wartości zmiennych wcześniej utworzonym w sposób klasyczny. Zmienna nie może być tablicą. Przykład zastosowania: Przypuśćmy, że musimy utworzyć 99 zmiennych wg schematu {{Code|$x1{{=}}1, $x2{{=}}2 ... $x99{{=}}99}}. W klasyczny sposób trzeba by 99 razy użyć instrukcji przypisania. Było by to bardzo pracochłonne i rozwlekłe. Można jednak inaczej: <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x"&$i, $i, 1) Next MsgBox(0, "", Eval("x66")) </syntaxhighlight> Od wersji 3.3.12 możliwe jest odczytanie tak utworzonych zmiennych w sposób klasyczny (próba klasycznego odczytania wartości zmiennej dla wcześniejszych wersji AutoIt'a powodowała błąd): <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x" & $i, $i) Next MsgBox(0, "", $x66) ;błąd niezadeklarowanej zmiennej </syntaxhighlight> Dla wcześniejszych wersji niż 3.3.12 trzeba było użyć dyrektywy '''#forcedef''': <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x" & $i, $i) Next #forcedef $x66 MsgBox(0, "", $x66) </syntaxhighlight> Funkcja '''Assign''' bez problemu nadaje wartość zmiennym utworzonym w sposób klasyczny: <syntaxhighlight lang="AutoIt"> Local $txt Assign("txt", "wasta") MsgBox(0, "", $txt) </syntaxhighlight> a funkcja '''Eval''' odczytuje te zmienne: <syntaxhighlight lang="AutoIt"> $txt = "wasta" MsgBox(0, "", Eval("txt")) </syntaxhighlight> === Funkcja {{Code|IsDeclared}} === {{PreLine|IsDeclared ("nazwa_zmiennej")}} Funkcja sprawdza czy została utworzona zmienna o podanej nazwie. Zwraca: {{PreLine| 1 - gdy zmienna jest globalna -1 - gdy zmienna jest lokalna 0 - gdy zmienna nie została utworzona }} Działa ze zmiennymi utworzonymi klasycznie, jak i utworzonymi przez funkcję '''Assign'''. Przykład: <syntaxhighlight lang="AutoIt"> For $i=1 to 99 Assign("x" & $i, $i) Next MsgBox(0, "", IsDeclared("x66")) ;wyświetli 1 test() ;wyświetli -1 MsgBox(0, "", IsDeclared("b")) ;wyświetli 0 Func test() Local $a MsgBox(0, "", IsDeclared("a")) EndFunc </syntaxhighlight> == String jako nazwa funkcji == Stringu jako nazwy funkcji można użyć tylko przy jej wywołani, lecz nie przy jej deklarowaniu. Służy do tego: === Funkcja {{Code|Call}} === {{PreLine|Call ( "nazwa_funkcji" [, param1 [, param2 [, paramN]]] )}} Funkcja wywołuje funkcję o podanej nazwie i opcjonalnie przekazuje do niej parametry. Jeżeli sukces to zwraca wartość zwracaną przez wywołaną funkcję (makra: {{Code|@error}} i {{Code|@extended}} mogą być także przez nią ustawione). W przypadku błędu makro {{Code|@error}} przyjmuje wartość {{Code|0xDEAD}}, a makro @extended {{Code|0xBEEF}} (jeśli funkcja nie istnieje lub podano niewłaściwą ilość parametrów). '''Uwaga:''' Wywoływana funkcja od wersji {{Kbd|3.3.10.2}} może być funkcją wbudowaną translatora, parametry mogą być przekazywane przez referencję. Przykład: <syntaxhighlight lang="AutoIt"> MsgBox(0,"",Call("test",1,2,3)) Func test($a, $b, $c) Return $a+$b+$c EndFunc </syntaxhighlight> == String jako wyrażenie == O ile trudno znaleźć sensowne zastosowanie dla funkcji {{Code|'''Call'''}}, to użycie stringu jako wyrażenia ma duży potencjał programistyczny. Wyrażeniem jest w zasadzie wszystko to, czemu możemy wyliczyć jakąś wartość. Może ono zawierać liczby, zmienne, stałe, operatory arytmetyczne i logiczne, operatory relacji oraz wywołania funkcji tak wbudowanych jak i zdefiniowanych przez programistę. Do wartościowania wyrażenia opisanego za pomocą stringu służy: === Funkcja {{Code|Execute}} === {{PreLine|Execute ( "string" )}} Funkcja zwraca wartość wyrażenia opisanego stringiem. Jeżeli wystąpił błąd to zwraca pusty łańcuch, a makro @error przyjmuje wartość różną od zera. '''"string"''' - string z opisem wyrażenia Ponieważ string z opisem wyrażenia może pochodzić z zewnątrz programy, jest możliwe wykonanie wewnątrz programu fragmentu kodu wczytanego z dysku lub wpisanego bezpośrednio z klawiatury. Kilka przykładów, które zaprezentują możliwości funkcji: {{Code|'''Execute'''}}. <syntaxhighlight lang="AutoIt"> $ex='MsgBox(0, "Test Execute:", "Ala ma Asa")' Execute($ex) $ex = "(1+2)^2-5/3" MsgBox(0, "Test 2:", Execute($ex)) $a=2 $b=3 MsgBox(0, "Test 3:", Execute("$a=$b")) MsgBox(0, "Test 4:", Execute("sin($a)+cos($a+$b)")) MsgBox(0, "Test 5:", Execute("test($a, $b)")) Func test($p1, $p2) Return $p1+$p2 EndFunc </syntaxhighlight> == Zmienna zawierająca nazwę funkcji == Od wersji 3.10.2 w AutoIt wprowadzono możliwość przechowywania w zmiennej nazwy funkcji. Przykład: <syntaxhighlight lang="AutoIt"> $vFunc = MsgBox $vFunc(0, "Test", "To działa!") </syntaxhighlight> === {{Kbd|FuncName}} === {{PreLine|FuncName ( $Functionvariable )}} Funkcja zwraca w postaci stringu nazwę funkcji przechowywanej w zmiennej, lub string pusty gdy wystąpił błąd. {{PreLine|'''$Functionvariable'''}} - zmienna przechowująca nazwę funkcji Przykład: <syntaxhighlight lang="AutoIt"> $hFunc = MsgBox MsgBox(0, "Test", "Nazwa funkcji to: " & FuncName($hFunc)) </syntaxhighlight> === {{Kbd|IsFunc}} === {{PreLine|IsFunc ( $Variable )}} Funkcja sprawdza czy zmienna zawiera nazwę funkcji. Zwraca 1 gdy funkcja jest zdefiniowana przez użytkownika, 2 gdy funkcja jest funkcją wbudowaną translatora, lub 0 gdy zmienna nie zawiera nazwy funkcji. {{PreLine|'''$Variable'''}} - sprawdzana zmienna Przykład: <syntaxhighlight lang="AutoIt"> $hFunc = MsgBox MsgBox(0, "Test", "Jaki to rodzaj funkcji: " & IsFunc($hFunc)) </syntaxhighlight> Na koniec użyteczny przykład, kalkulator zapamiętujący wzór funkcji i obliczający jej wartość dla różnych argumentów: <syntaxhighlight lang="AutoIt"> #include <GUIConstantsEx.au3> GUICreate("Wprowadź wartość zmiennej i wzór funkcji", 360, 120, -1, 300) $f1 = GUICtrlCreateInput(0, 50, 5, 200, 20) GUICtrlCreateLabel("$x=", 25, 8, 20, 20) $f2 = GUICtrlCreateInput("", 50, 35, 200, 20) GUICtrlCreateLabel("f(x)=", 22, 38, 30, 20) $btn = GUICtrlCreateButton("Oblicz", 40, 75, 60, 20) GUISetState() Do $msg = GUIGetMsg() $txt1 = GUICtrlRead($f1) $txt2 = GUICtrlRead($f2) If $msg = $btn Then $x=Execute($txt1) $res = Execute($txt2) MsgBox(4096, "Wynik:", $res) EndIf Sleep(5) Until $msg = $GUI_EVENT_CLOSE </syntaxhighlight> = Niestandardowe struktury danych = Struktura danych (ang. data structure) - sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. W zasadzie AutoIt posiada standardowo tylko dwie struktury danych, zmienne proste przechowujące pojedynczą wartość i tablice. W rozdziale o bibliotekach DLL omówiona została także struktura (rekord), do której dostęp jest możliwy za pomocą stosownych funkcji. Czasami jednak z pewnych względów optymalne będzie użycie innych struktur danych. Podczas tworzenia skryptu programista musi dokonać wyboru odpowiedniej struktury, aby uzyskać pożądany efekt. Niewłaściwy wybór może niekorzystnie wpłynąć na złożoność obliczeniową, co przekłada się na szybkość działania programu. Jest to szczególnie ważne przy operowaniu dużymi zbiorami danych. Z drugiej strony należy także uwzględnić łatwość implementacji danej struktury w konkretnym przypadku. == Tablica asocjacyjna == '''Tablica asocjacyjna''': (tablica skojarzeniowa, mapa, słownik, ang. associative array, map, dictionary) – nazwa dla powszechnie stosowanego w informatyce abstrakcyjnego typu danych, który przechowuje pary (unikatowy klucz, wartość) i umożliwia dostęp do wartości poprzez podanie klucza. Standardowo AutoIt nie posiada możliwości posługiwania się tego typu tablicami. Można jednak używać tablic asocjacyjnych za pośrednictwem znajdującego się w systemie operacyjnym obiektu {{Kbd|'''Scripting.Dictionary'''}}. Obiekt ten posiada kilka metod umożliwiających tworzenie i manipulowanie tablicami asocjacyjnymi. Uwaga! Scripting.Dictionary losowo generuje problemy przy dużych bazach danych. Objawy:{{Br}} {{Code|Add()}} nie dodaje, mimo że {{Code|Exists()}} twierdzi, że nie istnieje, dane są niereprodukowalnie pomijane, znikające wpisy mimo poprawnych danych wejściowych, problem nie dotyczy konkretnego rekordu — zmienia się między kolejnym uruchomieniami. To znany i wielokrotnie raportowany problem z COM-owym Scripting.Dictionary używanym w AutoIt, gdy: * zbyt duża liczba kluczy - {{Kbd|Scripting.Dictionary}} w AutoIt (COM interop z VBScript) potrafi działać poprawnie do 60–100k, ale potem... pojawiają się niereplikowalne błędy. * lub długości kluczy są zbyt duże - jeśli path ma bardzo długą ścieżkę (>255 znaków) — może powodować niestabilność lub konflikt hashy. * lub jest wiele podobnych ścieżek (czyli dużo kolizji hashy). * duplikowane klucze z niejawnie różniącymi się bajtami (np. spacje, znaki niewidoczne, inne kodowanie) — mogą być widoczne jako różne w tablicy, ale traktowane jako identyczne wewnętrznie przez Dictionary. === Tworzenie tablicy === {{PreLine|$nazwa_tablicy {{=}} ObjCreate("Scripting.Dictionary")}} === Dodawanie elementów do tablicy (metoda {{Code|.Add}}) === {{PreLine|$nazwa_tablicy.Add($nazwa_klucza, $wartosc_klucza)}} === Usunięcie elementu tablicy (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_tablicy.Remove($nazwa_klucza)}} === Usunięcie wszystkich elementów tablicy (metoda {{Code|.RemoveAll}}) === {{PreLine|$nazwa_tablicy.RemoveAll}} === Odczyt elementu tablicy (metoda {{Code|.Item}}) === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy.Item($nazwa_klucza)}} lub w skrócie: {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy($nazwa_klucza)}} === Nadanie wartości elementowi tablicy (metoda {{Code|.Item}}) === {{PreLine|$nazwa_tablicy.Item($nazwa_klucza) {{=}} $wartosc_klucza}} lub w skrócie: {{PreLine|$nazwa_tablicy($nazwa_klucza) {{=}} $wartosc_klucza}} === Odczytanie w postaci 1-wymiarowej tablicy wszystkich wartości tablicy asocjacyjnej (metoda {{Code|.Items}}) === {{PreLine|$array {{=}} $nazwa_tablicy.Items}} === Odczytanie w postaci 1-wymiarowej tablicy wszystkich kluczy tablicy asocjacyjnej (metoda {{Code|.Keys}}) === {{PreLine|$array {{=}} $nazwa_tablicy.Keys}} === Zmiana nazwy klucza (metoda {{Code|.Key}}) === {{PreLine|$nazwa_tablicy.Key($stary_klucz) {{=}} $nowy_klucz}} === Sprawdzenie czy istnieje klucz o podanej nazwie (metoda {{Code|.Exists}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Exists($nazwa_klucza)}} Zwraca True gdy klucz istnieje, lub False gdy nie istnieje. === Ilość elementów tablicy asocjacyjnej (metoda {{Code|.Count}}) === {{PreLine|i {{=}} $nazwa_tablicy.Count}} '''UWAGA:''' Nazwa klucza może być stringiem lub dowolną liczbą, wartość może być dowolnego typu. W nazwach kluczy obiekt rozpoznaje wielkość liter, tak więc np. '''Klucz1''' i '''klucz1''' to dwie różne nazwy. Przykład: <syntaxhighlight lang="AutoIt"> #include <array.au3> $dane = ObjCreate("Scripting.Dictionary") ;tworzenie tablicy asocjacyjnej ;dodawanie kolejnych pól w tablicy $dane.Add("nazwisko", "Kowalski") $dane.Add("imię", "Jan") $dane.Add("wiek", 61) $dane.Add("wzrost", 170) $dane.Add("kolor_oczu", "niebieskie") $dane.Add(6.66, "wyższe") ;odczyt danych z poszczególnych pól tablicy MsgBox(64, "Tablica asocjacyjna", _ "Pan " & $dane.Item("imię") & " " & $dane.Item("nazwisko") & _ " ma lat " & $dane.Item("wiek") & _ ", " & $dane.Item("wzrost") & " cm wzrostu" & _ " i oczy " & $dane.Item("kolor_oczu") & ".") ;odczytanie w postaci tablicy, wartości wszystkich pól tablicy $arr = $dane.Items _ArrayDisplay($arr) ;odczytanie w postaci tablicy, wszystkich kluczy tablicy $arr = $dane.Keys _ArrayDisplay($arr) $dane("kolor_oczu") = "zielone" ;zmiana wartości MsgBox(0, "Kolor oczu", $dane("kolor_oczu")) ;zmiana nazwy klucza $dane.Key(6.66) = "wykształcenie" ;sprawdzenie czy istnieje podany klucz MsgBox(0, 'Klucz "wykształcenie"', $dane.Exists("wykształcenie")) MsgBox(0, "Ilość elementów", $dane.Count) $dane.Remove("wykształcenie") ;usunięcie podanego klucza MsgBox(0, 'Klucz "wykształcenie"', $dane.Exists("wykształcenie")) </syntaxhighlight> <big><big>'''UWAGA: Pozostałe struktury danych wymagają .NET Framework 4.5 '''</big></big> == Tablica mieszająca == Za Wiki: Tablica mieszająca lub tablica z haszowaniem (ang. hash table) to struktura danych, która jest jednym ze sposobów realizacji tablicy asocjacyjnej, tj. abstrakcyjnego typu danych służącego do przechowywania informacji, w taki sposób aby możliwy był do nich szybki dostęp. Tablica mieszająca umożliwia również szybkie porównywanie danych, np. fragmentów tekstów, plików, itp. Elementy tablicy mieszającej są indeksowane liczbowymi indeksami generowanym przez funkcję mieszającą. Odwołania do przechowywanych obiektów dokonywane są na podstawie klucza, który dany obiekt (informację) identyfikuje. Na podstawie klucza funkcja mieszająca generuje indeks, po którym przeszukiwana jest tablica. Przy dużych tablicach taka metoda jest o wiele szybsza niż bezpośrednie wyszukiwanie po kluczu, jak w tablicy asocjacyjnej. Ponieważ cały proces tworzenia indeksów i przeszukiwania jest przeprowadzany w tle przez procedury systemu operacyjnego, dla programisty samo operowanie tablicami asocjacyjnymi i mieszającymi w zasadzie niczym się nie różni. === Tworzenie tablicy mieszającej === {{PreLine|$nazwa_tablicy {{=}} ObjCreate("System.Collections.Hashtable")}} === Dodawanie elementów do tablicy (metoda {{Code|.Add}}) === {{PreLine|$nazwa_tablicy.Add($nazwa_klucza, $wartosc_klucza)}} === Usuwanie elementu tablicy (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_tablicy.Remove($nazwa_klucza)}} === Usunięcie wszystkich elementów tablicy (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_tablicy.Clear}} === Odczyt elementu tablicy === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy($nazwa_klucza)}} === Nadanie wartości elementowi tablicy === {{PreLine|$nazwa_tablicy($nazwa_klucza) {{=}} $wartosc_klucza}} === Sprawdzenie czy istnieje klucz o podanej nazwie (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Contains($nazwa_klucza)}} === Sprawdzenie czy istnieje podana wartość (metoda {{Code|.ContainsValue}}) === {{PreLine|$i {{=}} $nazwa_tablicy.ContainsValue($nazwa_klucza)}} Zwraca True gdy klucz istnieje, lub False gdy nie istnieje. === Ilość elementów tablicy mieszającej (metoda {{Code|Count}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Count}} Przykład: <syntaxhighlight lang="AutoIt"> $hash = ObjCreate("System.Collections.Hashtable") ;tworzenie tablicy mieszającej ;dodawanie elementów do tablicy mieszającej $hash.Add("Polska", "Kraków") $hash.Add("Niemcy", "Berlin") $hash.Add("Francja", "Paryż") $hash.Add("Rosja", "Moskwa") $hash.Add("Czechy", "Praga") ;zmiana wartości klucza $hash("Polska") = "Warszawa" MsgBox(0, "Count", "W bazie jest " & $hash.Count & " pozycji.") ;ilość elementów w tablicy $country = "Polska" MsgBox(0, "Odczyt", "Państwo: " & $country & @LF & _ "Stolica: " & $hash($country)) ;odczyt elementu z tablicy ;czy w tablicy jest dana wartość MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $hash.ContainsValue("Paryż")) ;czy w tablicy jest dany klucz MsgBox(0, "Contains", "Czy w bazie jest Francja: " & $hash.Contains("Francja")) $hash.Remove("Francja") ;usunięcie z tablicy elementu o zadanym kluczu MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $hash.ContainsValue("Paryż")) </syntaxhighlight> == SortedList == Jest to odmiana tablicy asocjacyjnej, która w momencie tworzenia i modyfikacji jest domyślnie sortowana po kluczu. Zwiększa to czas tworzenia tablicy, lecz zmniejsza czas wyszukiwania informacji. Dostęp do tablicy może być realizowany po kluczu lub po indeksie. === Tworzenie SortedList === {{PreLine|$nazwa_tablicy {{=}} ObjCreate("System.Collections.SortedList")}} === Dodanie wartości do SortedList (metoda {{Code|.Add}}) === {{PreLine|$nazwa_tablicy.Add($nazwa_klucza, $wartosc_klucza)}} === Usunięcie elementu o podanym kluczu (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_tablicy.Remove($nazwa_klucza)}} === Usunięcie elemenu o podanym indeksie (metoda {{Code|.RemoveAt}}) === {{PreLine|$nazwa_tablicy.RemoveAt($indeks)}} === Usunięcie wszystkich elementów tablicy (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_tablicy.Clear}} === Odczyt elementu tablicy === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy($nazwa_klucza)}} === Nadanie wartości elementu tablicy === {{PreLine|$nazwa_tablicy($nazwa_klucza) {{=}} $wartosc_klucza}} === Sprawdzenie czy istnieje klucz o podanej nazwie (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Contains($nazwa_klucza)}} Zwraca True gdy klucz istnieje, lub False gdy nie istnieje. === Sprawdzenie czy istnieje podana wartość (metoda {{Code|.ContainsValue}}) === {{PreLine|$i {{=}} $nazwa_tablicy.ContainsValue($nazwa_klucza)}} Zwraca True gdy wartość istnieje, lub False gdy nie istnieje. === Ilość elementów tablicy (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_tablicy.Count}} === Indeks elementu o podanym kluczu (metoda {{Code|.IndexOfKey}}) === {{PreLine|$indeks {{=}} $nazwa_tablicy.IndexOfKey($nazwa_klucza)}} === Indeks pierwszego elementu o podanej wartości (metoda {{Code|.IndexOf Value}}) === {{PreLine|$indeks {{=}} $nazwa_tablicy.IndexOfValue($wartosc_klucza)}} === Odczyt klucza o zadanym indeksie (metoda {{Code|.GetKey}}) === {{PreLine|$nazwa_klucza {{=}} $nazwa_tablicy.GetKey($indeks)}} === Odczyt wartości o zadanym indeksie (metoda {{Code|.GetByIndex}}) === {{PreLine|$wartosc_klucza {{=}} $nazwa_tablicy.GetByIndex($indeks)}} === Zmiana wartości pod zadanym indeksem (metoda {{Code|.SetByIndex}}) === {{PreLine|$nazwa_tablicy.SetByIndex($indeks, $wartosc)}} Przykład: <syntaxhighlight lang="AutoIt"> $SList = ObjCreate("System.Collections.SortedList") ;tworzenie tablicy mieszającej ;dodawanie elementów do tablicy mieszającej $SList.Add("Polska", "Kraków") $SList.Add("Niemcy", "Berlin") $SList.Add("Francja", "Paryż") $SList.Add("Rosja", "Moskwa") $SList.Add("Czechy", "Praga") ;zmiana wartości klucza $SList("Polska") = "Warszawa" MsgBox(0, "Count", "W bazie jest " & $SList.Count & " pozycji.") ;ilość elementów w tablicy $country = "Polska" MsgBox(0, "Odczyt", "Państwo: " & $country & @LF & _ "Stolica: " & $SList($country)) ;odczyt elementu z tablicy ;czy w tablicy jest dana wartość MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $SList.ContainsValue("Paryż")) ;czy w tablicy jest dany klucz MsgBox(0, "Contains", "Czy w bazie jest Francja: " & $SList.Contains("Francja")) $SList.Remove("Francja") ;usunięcie z tablicy elementu o zadanym kluczu MsgBox(0, "ContainsValue", "Czy w bazie jest Paryż: " & $SList.ContainsValue("Paryż")) ;odczyt indeksu klucza MsgBox(0,"IndexOfKey", "Indeks dla klucza 'Polska': " & $SList.IndexOfKey("Polska")) ;odczyt indeksu podanej wartości MsgBox(0,"IndexOfValue", "Indeks dla wartości 'Praga': " & $SList.IndexOfValue("Praga")) ;odczyt klucza dla zadanego indeksu MsgBox(0,"GetKey", "Klucz dla indeksu 2: " & $SList.GetKey(2)) ;odczyt wartości dla zadanego indeksu MsgBox(0,"GetByIndex", "Wartość dla indeksu 2: " & $SList.GetByIndex(2)) </syntaxhighlight> == Lista == '''Lista''' – struktura danych służąca do reprezentacji zbiorów dynamicznych, w której elementy ułożone są w liniowym porządku. Elementy listy są indeksowane (indeksy rozpoczynają się od 0, podobnie jak w tablicach). Także i ten typ danych nie jest standardowo dostępny w AutoIt, dlatego musimy posłużyć się obiektem '''System.Collections.ArrayList'''. Podstawową zaletą używania list zamiast tablic jest wzrost wydajności. Dostęp do elementów listy jest o wiele szybszy. === Tworzenie listy === {{PreLine|$nazwa_listy {{=}} ObjCreate("System.Collections.ArrayList")}} === Dodawanie elementów na końcu listy (metoda {{Code|.Add}}) === {{PreLine|$nazwa_listy.Add($wartosc)}} === Dodawanie elementu na pozycji o zadanym indeksie (metoda {{Code|.Insert}}) === {{PreLine|$nazwa_listy.Insert($indeks, $wartosc)}} Indeksy pozostałych elementów są zwiększane o 1. === Usunięcie pierwszego elementu o zadanej wartości (metoda {{Code|.Remove}}) === {{PreLine|$nazwa_listy.Remove($wartosc)}} Indeksy pozostałych elementów są zmniejszane o 1. === Usunięcie elementu o zadanym indeksie (metoda {{Code|.RemoveAt}}) === {{PreLine|$nazwa_listy.RemoveAt($indeks)}} Indeksy pozostałych elementów są zmniejszane o 1. === Usunięcie elementów o zadanym zakresie indeksów (metoda {{Code|.RemoveRange}}) === $nazwa_listy.RemoveRange($indeks, $ilosc_elementow_do_usuniecia) Indeksy pozostałych elementów są zmniejszane o $ilosc_elementow_do_usuniecia. ===Tworzenie nowej listy z elementów o zadanym zakresie indeksów (metoda {{Code|.GetRange}})=== {{PreLine|$nowa_lista {{=}} $nazwa_listy.GetRange($indeks, $ilosc_elementow_do_kopiowania)}} === Usunięcie wszystkich elementów listy (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_listy.Clear}} === Odczyt elementu listy o zadanym indeksie (metoda {{Code|.Item}}) === {{PreLine|$wartosc {{=}} $nazwa_listy.Item($indeks)}} === Zmiana wartości elementu listy o zadanym indeksie (metoda {{Code|.Item}}) === {{PreLine|$nazwa_listy.Item($indeks) {{=}} $wartosc}} === Odwrócenie kolejności elementów listy (metoda {{Code|.Reverse}}) === {{PreLine|$nazwa_listy.Reverse}} === Odczytanie ilości elementów listy (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_listy.Count}} === Kopiowanie zawartości listy do jednowymiarowej tablicy (metoda {{Code|.ToArray}}) === {{PreLine|$array {{=}} $nazwa_listy.ToArray}} === Sprawdzenie czy istnieje element o zadanej wartości (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_listy.Contains($wartosc)}} Zwraca True gdy dana wartość jest w liście, w przeciwnym razie zwraca False. Przykład: <syntaxhighlight lang="AutoIt"> $aList = ObjCreate("System.Collections.ArrayList") ;tworzenie listy ;dodawanie elementów na końcu listy $aList.Add("a") $aList.Add("b") $aList.Add("c") $aList.Add("d") $aList.Add("a") $aList.Add(3.1415) $aList.Add("wasta") ViewList($aList, "LISTA") $aList.Insert(3,"ble, ble, ble") ;wstawienie elementu na pozycji o indeksie 3 ViewList($aList, "Insert(3)") $aList.Item(3) = 666 ViewList($aList, "Item(3)") $aList.Reverse ViewList($aList, "Reverse") $aList.Remove("a") ViewList($aList, "Remove 'a'") $aList.RemoveAt(2) ViewList($aList, "RemoveAt(2)") $aList.RemoveRange(2, 3) ViewList($aList, "RemoveRange(4,3)") $str = $aList.ToArray MsgBox(0, "LISTA", "Element o indeksie 1 = " & $str[1]) ;szukanie elementu o zadanej wartości MsgBox(0,"LISTA", "Czy jest element o wartości 'wasta': " & $aList.Contains("wasta")) $aList.Clear ;usunięcie wszystkich elementów listy MsgBox(0, "LISTA", "Ilość elementów = " & $aList.Count) ;ilość elementów listy ;funkcja wyświetlająca zawartość listy Func ViewList($aList, $title="") Local $n = $aList.Count ;ilość elementów listy Local $txt = "Indeks | Wartość" & @LF For $i=0 To $n-1 $txt &= "---------------------" & @LF $txt &= $i & " | " & $aList.Item($i) & @LF ;odczyt elementu o zadanym indeksie Next MsgBox(0, $title, $txt) EndFunc </syntaxhighlight> == Kolejka == Kolejka (ang. queue) – liniowa struktura danych, w której nowe dane dopisywane są na końcu kolejki, a z początku kolejki pobierane są dane do dalszego przetwarzania (bufor typu FIFO, First In, First Out; pierwszy na wejściu, pierwszy na wyjściu). === Tworzenie kolejki === {{PreLine|$nazwa_kolejki {{=}} ObjCreate("System.Collections.Queue")}} === Dodawanie elementu do końca kolejki (metoda {{Code|.Enqueue}}) === {{PreLine|$nazwa_kolejki.Enqueue($wartość)}} === Odczyt elementu z początku kolejki i jego usunięcie (metoda {{Code|.Dequeue}}) === {{PreLine|$wartosc {{=}} $nazwa_kolejki.Dequeue}} ===Odczyt elementu z początku kolejki bez jego usunięcia (metoda {{Code|.Peek}})=== {{PreLine|$wartosc {{=}} $nazwa_kolejki.Peek}} === Usunięcie wszystkich elementów kolejki (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_kolejki.Clear}} === Odczytanie ilości elementów kolejki (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_kolejki.Count}} === Kopiowanie zawartości kolejki do jednowymiarowej tablicy (metoda {{Code|.ToArray}}) === {{PreLine|$array {{=}} $nazwa_kolejki.ToArray}} === Sprawdzenie czy istnieje element o zadanej wartości (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_kolejki.Contains($wartosc)}} Zwraca True gdy dana wartość jest w liście, w przeciwnym razie zwraca False. Przykład: <syntaxhighlight lang="AutoIt"> #include <array.au3> $queue = ObjCreate("System.Collections.Queue") ;tworzenie kolejki ;dopisywanie elementów do kolejki $queue.Enqueue(3.1415) $queue.Enqueue("a") $queue.Enqueue("b") $queue.Enqueue("c") $queue.Enqueue("wasta") ViewQueue($queue) ;odczyt elementu bez usuwania MsgBox(0, "Peek", "Początek kolejki = " & $queue.Peek) MsgBox(0, "Count", "Ilość elementów kolejki = " & $queue.Count) ;odczyt elementu z usunięciem z kolejki MsgBox(0, "Dequeue", "Początek kolejki = " & $queue.Dequeue) MsgBox(0, "Count", "Ilość elementów kolejki = " & $queue.Count) ;czy element o zadanej wartości jest w kolejce MsgBox(0, "Contains", "Czy 'wasta' jest w kolejce: " & $queue.Contains("wasta")) ;usunięcie wszystkich elementów kolejki $queue.Clear MsgBox(0, "Clear", "Ilość elementów kolejki = " & $queue.Count) ;wyświetlenie zawartości kolejki Func ViewQueue($queue, $title="KOLEJKA") Local $Array = $queue.ToArray ;kopiowanie kolejki do tablicy _ArrayDisplay($Array, $title) EndFunc </syntaxhighlight> == Stos == Stos (ang. Stack) – liniowa struktura danych, w której dane dokładane są na wierzch stosu i z wierzchołka stosu są pobierane (bufor typu LIFO, Last In, First Out; ostatni na wejściu, pierwszy na wyjściu). === Tworzenie stosu === {{PreLine|$nazwa_stosu {{=}} ObjCreate("System.Collections.Stack")}} === Dodawanie elementu na górę stosu (metoda {{Code|.Push}}) === {{PreLine|$nazwa_stosu.Push($wartość)}} === Odczyt elementu z góry stosu i jego usunięcie (metoda {{Code|.Pop}}) === {{PreLine|$wartosc {{=}} $nazwa_stosu.Pop}} === Odczyt elementu z góry stosu bez jego usunięcia (metoda {{Code|.Peek}}) === {{PreLine|$wartosc {{=}} $nazwa_stosu.Peek}} === Usunięcie wszystkich elementów stosu (metoda {{Code|.Clear}}) === {{PreLine|$nazwa_stosu.Clear}} === Odczytanie ilości elementów stosu (metoda {{Code|.Count}}) === {{PreLine|$i {{=}} $nazwa_stosu.Count}} === Kopiowanie zawartości stosu do jednowymiarowej tablicy (metoda {{Code|.ToArray}}) === {{PreLine|$array {{=}} $nazwa_stosu.ToArray}} === Sprawdzenie czy istnieje element o zadanej wartości (metoda {{Code|.Contains}}) === {{PreLine|$i {{=}} $nazwa_stosu.Contains($wartosc)}} Zwraca True gdy dana wartość jest w liście, w przeciwnym razie zwraca False. Przykład: <syntaxhighlight lang="AutoIt"> #include <array.au3> $stack = ObjCreate("System.Collections.Stack") ;tworzenie stosu ;dodawanie elementów na wierzch stosu $stack.Push(3.1415) $stack.Push("a") $stack.Push("b") $stack.Push("c") $stack.Push("wasta") ViewStack($stack) ;odczyt elementu z wierzchu stosu bez usuwania MsgBox(0, "Peek", "Wierzch stosu = " & $stack.Peek) MsgBox(0, "Count", "Ilość elementów stosu = " & $stack.Count) ;odczyt elementu z usunięciem ze stosu MsgBox(0, "Pop", "Wierzch stosu = " & $stack.Pop) MsgBox(0, "Count", "Ilość elementów stosu = " & $stack.Count) ;czy element o zadanej wartości jest na stosie MsgBox(0, "Contains", "Czy 'wasta' jest na stosie: " & $stack.Contains("wasta")) ;usunięcie wszystkich elementów stosu $stack.Clear MsgBox(0, "Clear", "Ilość elementów stosu = " & $stack.Count) ;wyświetlenie zawartości stosu Func ViewStack($stack, $title="STOS") Local $Array = $stack.ToArray ;kopiowanie stosu do tablicy _ArrayDisplay($Array, $title) EndFunc </syntaxhighlight> = Uruchamianie skryptu = Skrypty AutoIt można uruchamiać spod edytora SciTe wciskając klawisz F5. Po skompilowaniu skrypt uruchamia się jak każdy plik wykonywalny Windows. Oprócz tych standardowych sposobów, są możliwe także inne mniej typowe. == Uruchamianie skryptów z wiersza poleceń == Skompilowane skrypty AutoIt'a można uruchomić z wiersza poleceń (linii komend). Możliwe jest także przekazywanie parametrów do tak uruchamianych skryptów. Służy do tego zdefiniowana w translatorze globalna tablica o nazwie '''$CmdLine'''. Tablica jest tylko do odczytu, inicjowana w momencie uruchomienia skryptu. Ma ona następującą strukturę: {{PreLine| $CmdLine[0] - ilość parametrów przekazanych w wierszu poleceń $CmdLine[1] - wartość 1 parametru ... $CmdLine[n] - wartość n-tego paramatru }} Należy pamiętać, że wszystkie parametry przekazywane z wiersza poleceń są tekstami. Separatorem między parametrami są spacje. Jeżeli chcemy przekazać parametr zawierający spacje, należy ująć go w cudzysłowy. Można maksymalnie przekazać 63 parametry. Przykład wywołania skryptu: {{PreLine|myprog.exe 1 2 "Autoit to jest to!" Wasta}} Tablica $CmdLine będzie zawierać następujące wartości {{PreLine| $CmdLine[0] {{=}} 4 (ilość parametrów) $CmdLine[1] {{=}} 1 (string 1 parametru) $CmdLine[2] {{=}} 2 (string 2 parametru) $CmdLine[3] {{=}} Autoit to jest to! (string 3 parametru) $CmdLine[4] {{=}} Wasta (string 4 parametru) }} Przykład skryptu wypisującego w konsoli listę parametrów, a w okienku MsgBox ich ilość (skrypt należy skompilować): <syntaxhighlight lang="autoit"> #AutoIt3Wrapper_Change2CUI=y $iIL = $CmdLine[0] If $iIL>0 Then For $i=1 To $iIL ConsoleWrite($CmdLine[$i] & @LF) Next EndIf MsgBox(64, "Ilość parametrów:", $CmdLine[0]) </syntaxhighlight> Oprócz tablicy $CmdLine zdefiniowana jest także globalna zmienna $CmdLineRaw, która przechowuje listę parametrów w postaci stringu. Ta zmienna jest także tylko do odczytu, inicjowana w momencie uruchomienia skryptu. Przykład skryptu wypisującego w okienku MsgBox listę wprowadzonych parametrów (skrypt należy skompilować): <syntaxhighlight lang="autoit"> MsgBox(64, "Lista parametrów:", $CmdLineRaw) </syntaxhighlight> == Uruchamianie pojedynczej linii kodu z wiersza poleceń == Można wykonać pojedynczą linię kodu bezpośrednio z wiersza poleceń: {{PreLine|AutoIt3.exe [/komunikat błędu] /AutoIt3ExecuteLine "wiersz kodu do wykonania"}} Przykład: {{PreLine|AutoIt3.exe /AutoIt3ExecuteLine "MsgBox(4096, 'Witaj świecie!', 'Cześć!')"}} Sposób ten jest możliwy także wewnątrz skryptu: <syntaxhighlight lang="autoit"> Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, ''Witaj świecie!'', ''Cześć!'')"') </syntaxhighlight> == Uruchomienie skryptu AutoIt z wnętrza innego skryptu == Metoda ta umożliwia uruchomienie nieskompilowanego skryptu z wnętrza innego skryptu AutoIt. Skrypt uruchamiający może być skompilowany lub nie. Dla skryptu skompilowanego niezbędne jest użycie dyrektywy '''#pragma compile(AutoItExecuteAllowed, True)'''. Domyślnie dyrektywa ta jest ustawiona na False, co blokuje możliwość uruchamiania skryptów w ten sposób. Jeżeli skrypt uruchamiający nie jest skompilowany, to dyrektywa #pragma nie jest konieczna (zostanie zignorowana). Jeżeli skrypt uruchamiający jest skompilowany, to w systemie nie musi być zainstalowany AutoIt, jednak uruchamiany skrypt musi mieć dostęp w swoim bieżącym folderze, do wszystkich UDF'ów dołączanych dyrektywą #include. Przykład (skrypt uruchamiający): <syntaxhighlight lang="autoit"> #pragma compile(AutoItExecuteAllowed, True) $sFile = "test.au3" $iProcess = Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sFile & '"') </syntaxhighlight> Skrypt uruchamiany (plik ze skryptem uruchamianym musi mieć nazwę taką jaką podano w skrypcie uruchamiającym, w naszym przypadku jest to test.au3): <syntaxhighlight lang="autoit"> MsgBox(0,"","Działa!") MsgBox(64,"","HURA!!!") </syntaxhighlight> 6e2cvjh2b4mmliu06sbke35cvc7xnuh AutoIt/Funkcje GUI 0 26933 558468 450655 2026-10-03T21:17:04Z Wasta 12503 558468 wikitext text/x-wiki =Pasek narzędziowy (Toolbar)= ==Wstęp== Zestaw kontrolek obsługiwanych przez wbudowane funkcje AitoIt nie obejmuje bardzo popularnego w nowszych programach paska narzędziowego. Tworzenie i obsługę tego typu kontrolek umożliwia standardowy UDF o nazwie '''GuiToolbar.au3'''. UDF jest bardzo rozbudowany, zawiera ponad sto funkcji do tworzeni, usuwania, odczytu, ustawiania i zmiany wyglądu elementów paska. Wszystkie nazwy stałych są zdefiniowane w '''ToolbarConstants.au3'''. Dołączenie tych definicji jest realizowane przez '''GuiToolbar.au3''', więc nie trzeba robić tego w programie. ==Funkcje podstawowe== ===_GUICtrlToolbar_Create=== #include <GuiToolbar.au3> _GUICtrlToolbar_Create($hWnd [, $iStyle = 0x800 [, $iExStyle = 0]]) Funkcja tworzy pasek narzędziowy. Zwraca uchwyt do kontrolki, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna GUI, w którym ma być utworzona kontrolka. '''$iStyle''' - styl okna: $TBSTYLE_FLAT | 0x800 | pasek jednowierszowy, tekst pod ikoną (domyślnie) $TBSTYLE_LIST | 0x1000 | pasek jednowierszowy, tekst po prawej stronie ikony $TBSTYLE_WRAPABLE | 0x200 | pasek wielowierszowy (jeżeli przyciski nie mieszczą się w jednym wierszu) $TBSTYLE_TRANSPARENT | 0x8000 | pasek przezroczysty (ale przyciski nie są przezroczyste) '''$iExStyle''' - dodatkowy parametr stylu (domyślna wartość 0): ===_GUICtrlToolbar_AddButton=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddButton($hToolbar, $iID, $iImage [, $iString = 0 [, $iStyle = 0 [, $iState = 4 [, $iParam = 0]]]]) Funkcja dodaje przycisk do paska narzędziowego. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$iImage''' - indeks obrazka na przycisku. Przy korzystaniu z zasobów systemowych jest to: $STD_COPY - Kopiuj (Copy) $STD_CUT - Wytnij (Cut) $STD_DELETE - Usuń (Delete) $STD_FILENEW - Nowy plik (New file) $STD_FILEOPEN - Otwórz plik (Open file) $STD_FILESAVE - Zapisz plik (Save file) $STD_FIND - Szukaj (Find) $STD_HELP - Pomoc (Help) $STD_PASTE - Wklej (Paste) $STD_PRINT - Drukuj (Print) $STD_PRINTPRE - Podgląd wydruku (Print preview) $STD_PROPERTIES - Właściwości (Properties) $STD_REDOW - Ponów (Redo) $STD_REPLACE - Zamień (Replace) $STD_UNDO - Cofnij (Undo) Pozostałe opcjonalnie: '''$iString''' - indeks stringu z opisem przycisku '''$iStyle''' - styl przycisku '''$iState''' - status przycisku '''$IParam''' - dodatkowy parametr (w zasadzie należy używać tylko wartości domyślnej) ===_GUICtrlToolbar_AddButtonSep=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddButtonSep($hToolbar [, $iWidth = 6]) Funkcja wstawia separator do paska narzędziowego. Nie zwraca żadnej wartości. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iWidth''' - szerokość separatora w pikselach (domyślna wartość to 6 pikseli) ===_GUICtrlToolbar_AddBitmap=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddBitmap($hToolbar, $iButtons, $hInst, $iID) '''$hToolbar''' - uchwyt do paska narzędziowego '''$iButtons''' - ilość obrazów przycisków w bitmapie (jeżeli korzystamy z zasobów systemowych parametr ten nie ma znaczenie i może mieć dowolną wartość) '''$hInst''' - uchwyt do instancji modułu z pliku wykonywalnego, który zawiera zasób grafiki rastrowej. Jeżeli chcemy korzystać z zasobów systemowych parametr należy ustawić na '''-1'''. '''$hID''' - ID bitmapy z obrazkami przycisków. Przy korzystaniu z zasobów systemowych jest to ID zasobu: $IDB_STD_LARGE_COLOR - duże standardowe ikony $IDB_STD_SMALL_COLOR - małe standardowe ikony $IDB_VIEW_LARGE_COLOR - duże ikony w bardziej kolorowej wersji $IDB_VIEW_SMALL_COLOR - małe ikony w bardziej kolorowej wersji ===_GUICtrlToolbar_AddString=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddString($hToolbar, $sString) Funkcja dodaje nowy string do opisu przycisków paska narzędziowego. Zwraca numer indeksu, lub -1 gdy wystąpił błąd. Numerowanie rozpoczyna się od 0, kolejno dodawane stringi będą miały indeksy 0, 1, 2, ... itd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$hString''' - string z opisem przycisku ===_GUICtrlToolbar_IsButtonPressed=== #include <GuiToolbar.au3> _GUICtrlToolbar_IsButtonPressed($hToolbar, $iID) Funkcja sprawdza czy został wciśnięty przycisk o podanym ID. Zwraca '''True''' gdy przycisk został wciśnięty, lub '''False''' gdy nie jest wciśnięty. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - numer ID przycisku (jest nadawany przez programistę podczas tworzenia przycisku funkcją '''_GUICtrlToolbar_AddButton''') ==Tworzenie paska narzędziowego== Omówione powyżej funkcję stanowią podstawę do utworzenia paska narzędziowego z opisanymi przyciskami. Można to zrobić np. tak: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> $GUI = GUICreate("Test tworzenia paska narzędziowego:", 400, 200) ;tworzenie okna GUI Local Enum $idOpen=1000, $idSave, $idDelete, $idHlp ;nadanie wartości $hToolbar = _GUICtrlToolbar_Create($GUI) ;utworzenie paska narzędziowego ;opisy na przyciskach _GUICtrlToolbar_AddString($hToolbar, "Otwórz") _GUICtrlToolbar_AddString($hToolbar, "Zapisz") _GUICtrlToolbar_AddString($hToolbar, "Usuń") _GUICtrlToolbar_AddString($hToolbar, "Pomoc") ;obrazki na przyciskach (korzystamy z zasobów systemowych) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_VIEW_LARGE_COLOR) ;tworzenie przycisków _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 0) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, 1) _GUICtrlToolbar_AddButton($hToolbar, $idDelete, $STD_DELETE, 2) _GUICtrlToolbar_AddButtonSep($hToolbar, 12) ;separator _GUICtrlToolbar_AddButtonSep($hToolbar, 0) ;separator _GUICtrlToolbar_AddButton($hToolbar, $idHlp, $STD_HELP, 3) GUISetState() Do Select Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idOpen) MsgBox(0,"Wybrano:","Otwórz",2) Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idSave) MsgBox(0,"Wybrano:","Zapisz",2) Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idDelete) MsgBox(0,"Wybrano:","Usuń",2) Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idHlp) MsgBox(0,"Wybrano:","Pomoc",2) EndSelect Sleep(5) Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ==Funkcje dodatkowe== ===_GUICtrlToolbar_Destroy=== #include <GuiToolbar.au3> _GUICtrlToolbar_Destroy(ByRef $hToolbar) Funkcja usuwa pasek narzędziowy łącznie z wszystkimi przyciskami. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''$hToolbar''' - uchwyt do kontrolki zwrócony przez funkcję '''_GUICtrlToolbar_Create''' '''UWAGA:''' Funkcja działa tylko na paski narzędziowe utworzone przez '''_GUICtrlToolbar_Create'''. ===_GUICtrlToolbar_ButtonCount=== #include <GuiToolbar.au3> _GUICtrlToolbar_ButtonCount($hToolbar) Funkcja zwraca ilość przycisków na pasku narzędziowym. '''$hToolbar''' - uchwyt do paska narzędziowego '''UWAGA:''' Separatory są także zliczane jak zwykłe przyciski. ===_GUICtrlToolbar_CheckButton=== #include <GuiToolbar.au3> _GUICtrlToolbar_CheckButton($hToolbar, $iID [, $fCheck = True]) Funkcja zaznacza lub usuwa zaznaczenie przycisku. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$Check''' - '''True''' - zaznaczanie przycisku (wartość domyślna), '''False''' - usunięcie zaznaczenia Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> $GUI = GUICreate("Test:", 200, 200) Local Enum $idOpen=1000, $idHelp $hToolbar = _GUICtrlToolbar_Create($GUI) _GUICtrlToolbar_AddString($hToolbar, "Otwórz") _GUICtrlToolbar_AddString($hToolbar, "Pomoc") _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_VIEW_LARGE_COLOR) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 0) _GUICtrlToolbar_AddButtonSep($hToolbar) _GUICtrlToolbar_AddButton($hToolbar, $idHelp, $STD_HELP, 1) GUISetState() Do $msg = GUIGetMsg() _GUICtrlToolbar_CheckButton($hToolbar, $idOpen) Sleep(1000) _GUICtrlToolbar_CheckButton($hToolbar, $idOpen, False) Sleep(1000) Until $msg </syntaxhighlight> ===_GUICtrlToolbar_PressButton=== #include <GuiToolbar.au3> _GUICtrlToolbar_PressButton($hToolbar, $iID [, $fPress = True]) Funkcja symuluje wciśnięci (zwolnienie) przycisku w pasku narzędziowym. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$fPress''' - '''True''' (wartość domyślna) oznacza wciśnięcie przycisku, '''False''' jego zwolnienie Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> Global Enum $idNew = 1000, $idOpen, $idSave, $idHelp $hGUI = GUICreate("Toolbar", 600, 400) $hToolbar = _GUICtrlToolbar_Create($hGUI) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) _GUICtrlToolbar_AddString($hToolbar, "&Nowy") _GUICtrlToolbar_AddString($hToolbar, "&Otwórz") _GUICtrlToolbar_AddString($hToolbar, "&Zapisz") _GUICtrlToolbar_AddString($hToolbar, "&Pomoc") _GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW, 0) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 1) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, 2) _GUICtrlToolbar_AddButtonSep($hToolbar) _GUICtrlToolbar_AddButton($hToolbar, $idHelp, $STD_HELP, 3) GUISetState() Sleep(2000) _GUICtrlToolbar_PressButton($hToolbar, $idSave) ;wciśnięcie przycisku If _GUICtrlToolbar_IsButtonPressed($hToolbar, $idSave) Then MsgBox(0, "Test:", _ "Symulacja wciśnięcia przycisku: Zapisz") _GUICtrlToolbar_PressButton($hToolbar, $idSave, False) ;zwolnienie przycisku Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> === _GUICtrlToolbar_SetButtonText === #include <GuiToolbar.au3> _GUICtrlToolbar_SetButtonText($hToolbar, $iID, $sText) Funkcja zmienia opis przycisków paska narzędziowego. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$sText''' - nowy tekst opisu przycisku '''UWAGA:''' Nowy opis powinien być krótszy od pierwotnego, w przeciwnym razie jego część będzie zastąpiona kropkami. W razie konieczności wydłużyć pierwotny opis dodając na jego końcu odpowiednią ilość spacji. Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> Global Enum $idNew = 1000, $idOpen, $idSave, $idHelp $hGUI = GUICreate("Toolbar", 600, 400) $hToolbar = _GUICtrlToolbar_Create($hGUI) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) _GUICtrlToolbar_AddString($hToolbar, "&New") _GUICtrlToolbar_AddString($hToolbar, "&Open ") _GUICtrlToolbar_AddString($hToolbar, "&Save") _GUICtrlToolbar_AddString($hToolbar, "&Help") _GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW, 0) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 1) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, 2) _GUICtrlToolbar_AddButtonSep($hToolbar) _GUICtrlToolbar_AddButton($hToolbar, $idHelp, $STD_HELP, 3) GUISetState() Sleep(2000) MsgBox(0, "Test", "Zmiana opisu przycisków") _GUICtrlToolbar_SetButtonText($hToolbar, $idNew, "&Nowy") _GUICtrlToolbar_SetButtonText($hToolbar, $idOpen, "&Otwórz") _GUICtrlToolbar_SetButtonText($hToolbar, $idSave, "&Zapis") _GUICtrlToolbar_SetButtonText($hToolbar, $idHelp, "&Pomoc") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> === _GUICtrlToolbar_SetStyle === #include <GuiToolbar.au3> _GUICtrlToolbar_SetStyle($hToobar, $iStyle) Funkcja ustala styl paska narzędziowego. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iStyle''' - kod stylu paska $CCS_TOP - pasek na górze $CCS_BOTTOM - pasek na dole $TBSTYLE_TOOLTIPS - pasek może być wielowierszowy (jeżeli przyciski nie mieszczą się w jednym wierszu) $TBSTYLE_FLAT - pasek jednowierszowy, opis pod spodem odrazka $TBSTYLE_LIST - pasek jednowierszowy, opis z prawej strony obrazka $TBSTYLE_TRANSPARENT - pasek przezroczysty Kody można łączyć za pomocą funkcji BitOR, np.: BitOR($TBSTYLE_WRAPABLE, $CCS_TOP). === _GUICtrlToolbar_GetStyle === #include <GuiToolbar.au3> _GUICtrlToolbar_GetStyle($hToolbar) Funkcja odczytuje kod stylu paska narzędziowego. Zwraca ten kod lub 0 gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> Enum $idNew = 1000, $idOpen, $idSave, $idHelp $hGUI = GUICreate("", 120, 300, 700, 200) $hToolbar = _GUICtrlToolbar_Create($hGUI) ;ustalenie stylu paska _GUICtrlToolbar_SetStyle($hToolbar, BitOR($TBSTYLE_WRAPABLE, $CCS_TOP)) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) $a1 = _GUICtrlToolbar_AddString($hToolbar, "&Nowy") $a2 = _GUICtrlToolbar_AddString($hToolbar, "&Otwórz") $a3 = _GUICtrlToolbar_AddString($hToolbar, "&Zapis") $a4 = _GUICtrlToolbar_AddString($hToolbar, "&Pomoc") _GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW, $a1) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, $a2) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, $a3) _GUICtrlToolbar_AddButton($hToolbar, $idHelp, $STD_HELP, $a4) GUISetState() MsgBox(0, "", "Styl: 0x" & Hex(_GUICtrlToolbar_GetStyle($hToolbar))) ;zmiana stylu _GUICtrlToolbar_SetStyle($hToolbar, BitOR($TBSTYLE_LIST, $CCS_BOTTOM)) GUISetState() MsgBox(0, "", "Styl: 0x" & Hex(_GUICtrlToolbar_GetStyle($hToolbar))) </syntaxhighlight> =Edytor tekstu w formacie RTF= ==Wstęp== Podstawowy zestaw kontrolek Autoit zawiera tylko edytor czystego tekstu (txt). W bibliotece standardowej znajduje się biblioteka funkcji do obsługi bardziej zaawansowanego formatu RTF (Rich Text Format). Format ten opracowany w 1987 r. przez Microsoft umożliwia zmianę wielkości, kroju i koloru czcionki oraz tworzenie tabel. Jest bardzo popularny i dostępny niemal w każdym bardziej zaawansowanym edytorze tekstu. Funkcje do obsługi kontrolki edytora RTF zawarte są w UDF o nazwie GuiRichEdit.au3. Jest on bardzo rozbudowany i zawiera prawie sto funkcji. ==Podstawowe funkcje do tworzenie kontrolki RTF== ===_GUICtrlRichEdit_Create=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_Create($hWnd, $sText, $iLeft, $iTop [, $iWidth = 150 [, $iHeight = 150 [, $iStyle = -1 [, $iExStyle = -1]]]]) Funkcja tworzy kontrolkę edytora RTF. Zwraca uchwyt do kontrolki lub 0 gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 103 - $iLeft < 0 104 - $iTop < 0 105 - $iWidth nie jest >0 lub równe -1 106 - $iHeight nie jest >0 lub równe -1 107 - $iStyle nie jest >0 lub równe -1 108 - $iExStyle nie jest >0 lub równe -1 UWAGA: -1 oznacza wartość domyślną '''$hWnd''' - uchwyt do okna GUI, w którym ma być utworzona kontrolka '''$sText''' - tekst do wstawienia w kontrolce '''$iLeft''' i '''$iTop''' - współrzędne lewego górnego narożnika kontrolki '''$iWidth''' - szerokość kontrolki '''$iHeight''' - wysokość kontrolki '''$iStyle''' - styl kontrolki $ES_AUTOHSCROLL - automatyczne przewijanie tekstu w prawo o 10 znaków, gdy użytkownik wpisze znak na końcu linii $ES_AUTOVSCROLL - automatycznie przewija tekst o stronę, gdy użytkownik naciśnie klawisz ENTER w ostatniej linii $WS_HSCROLL - kontrolka z poziomym pasekiem przewijania $WS_VSCROLL - kontrolka z pionowym paskiem przewijania $ES_CENTER - centrowanie tekstu $ES_LEFT - wyrównanie tekstu do lewego marginesu $ES_MULTILINE - tekst wielowierszowy (domyślne) $ES_NOHIDESEL - zaznaczony tekst jest w negatywie, nawet jeśli kontrola nie jest aktywna $ES_NUMBER - pozwala wpisywać tylko cyfry $ES_READONLY - tekst tylko do odzczytu, edycja zablokowana $ES_RIGHT - wyrównanie tekstu do prawego marginesu $ES_WANTRETURN - powrót karetki po naciśnięciu ENTER (ustawienie domyślne) $ES_PASSWORD - wyświetla gwiazdki (*) zamiast znaków wpisanych do pola edycyjnego '''$iExStyle''' - kod rozszerzenia stylu, wg standardowych stałych $WS_EX_... '''UWAGA:''' 1. Kody można łączyć za pomocą funkcji BitOR. 2. Przed zakończeniem skryptu należy użyć funkcji _GUICtrlRichEdit_Destroy(). ===_GUICtrlRichEdit_Destroy=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_Destroy(ByRef $hRTF) Funkcja usuwa kontrolkę edytora RTF. Zwraca TRUE gdy sukces, jednocześnie zerując zmienną zawierającą uchwyt do kontrolki. Jeżeli wystąpił błąd funkcja zwraca 0, a makro @error przyjmuje wartość -1 (funkcja próbuje zniszczyć kontrolkę należącą do innej aplikacji). '''$hRTF''' - uchwyt do kontrolki edytora RTF ===_GUICtrlRichEdit_AppendText=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_AppendText($hRTF, $sText) Funkcja dodaje tekst do tekstu w kontrolce (na końcu). Zwraca TRUE gdy sukces, FALSE gdy wystąpił błąd (@error przyjmuje wartość 101 - $hRTF nie zawiera uchwytu do kontrolki). '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sText''' - dopisywany tekst ===_GUICtrlRichEdit_SetText=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_SetText($hRTF, $sText) Funkcja nadpisuje tekst w kontrolce. Zwraca TRUE gdy sukces, FALSE gdy wystąpił błąd (@error przyjmuje wartość 101 - $hRTF nie zawiera uchwytu do kontrolki). '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sText''' - nadpisywany tekst ===_GUICtrlRichEdit_GetText=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_GetText($hRTF [, $fCrToCrLf = False [, $iCodePage = 0 [, $sReplChar = ""]]]) Funkcja zwraca pobrany tekst z kontrolki RTF. Jeżeli wystąpił błąd zwraca pusty string "", a makro @error przyjmuje wartość: 101 - $hRTF nie zawiera uchwytu 102 - $fCrToCrLf ma inną wartość niż TRUE lub FALSE 103 - $iCodePage nie jest liczbą 700 - błąd wewnętrzny '''$fCrToCrLf''' - konwersja każdego CR na CRLF, TRUE - tak, FALSE - nie (wartość domyślna) '''$iCodePage''' - strona kodowa używana w tłumaczeniu, domyślna wartość 0, co oznacza domyślne ustawienie w systemie, CP_ACP - ANSI, 1200 - Unicode '''$sReplChar''' - znak jaki ma być wstawiony w miejsce znaku występującego w odczytanym tekście, jeżeli nie występuje on w zadeklarowanej stronie kodowej. Domyślnie jest to pusty string, czyli znak zostanie pominięty. Makro @extended zawiera ilość podmian. '''UWAGA:''' Zwracany jest czysty tekst, bez znaków formatujących. ===_GUICtrlRichEdit_StreamFromFile=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamFromFile($hRTF, $sFilespec) Funkcja wczytuje z pliku do kontrolki tekst w formacie RTF. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 1121 - nie można otworzyć pliku 1122 - plik jest pusty 700 - próba przesłania zbyt wielu znaków '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sFilespec''' - nazwa pliku do wczytania ===_GUICtrlRichEdit_StreamFromVar=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamFromVar($hRTF, $sVar) Funkcja wczytuje ze zmiennej do kontrolki tekst w formacie RTF. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 700 - próba przesłania zbyt wielu znaków '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sVar''' - nazwa zmiennej do wczytania ===_GUICtrlRichEdit_StreamToFile=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamToFile($hRTF, $sFilespec [, $fIncludeCOM=True [, $iOpts=0 [, $iCodePage = 0]]]) Funkcja zapisuje tekst z kontrolki do pliku zachowując format RTF lub TXT. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 102 - nie można utworzyć pliku 1041 - $SFF_PLAINRTF nieprawidłowy dla pliku tekstowego 1042 - $opts: nieprawidłowa opcja 1043 - $SF_UNICODE jest ważne tylko dla pliku tekstowego 700 - błąd wewnętrzny '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sFilespec''' - nazwa pliku do zapisania, jeżeli rozszerzenie jest .rtf (np. "tekst.rtf"), to plik będzie zapisany w formacie RTF, w przeciwnym razie jako TXT. '''$fIncludeCOM''' - '''$iOpts''' - dodatkowe opcje, domyślnie 0 '''$iCodePage''' - generowanie tekstu UTF-8 przy użyciu tej strony kodowej ===_GUICtrlRichEdit_StreamToVar=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamToVar($hRTF [, $fRtf = True [, $fIncludeCOM=True [, $iOpts=0 [, $iCodePage = 0]]]]) Funkcja zwraca tekst z kontrolki w formacie RTF lub TXT, lub string pusty "" jeżeli wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 1041 - $SFF_PLAINRTF nieprawidłowy dla pliku tekstowego 1042 - $opts: nieprawidłowa opcja 1043 - $SF_UNICODE jest ważne tylko dla pliku tekstowego 700 - internal error '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$fRtf''' - TRUE - zwracany tekst w formacie RTF, FALSE - zwracany tylko czysty tekst (TXT) '''$fIncludeCOM''' - '''$iOpts''' - dodatkowe opcje, domyślnie 0 '''$iCodePage''' - generowanie tekstu UTF-8 przy użyciu tej strony kodowej ==Tworzenie i obsługa kontrolki edytora RTF== <syntaxhighlight lang="autoit"> #include <GuiRichEdit.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> ;tworzenie okna GUI $hGui = GUICreate("Test edytora RTF", 320, 300) ;tworzenie kontrolki edytora RTF $hREdit = _GUICtrlRichEdit_Create($hGui, "Tekst początkowy.", 10, 10, 300, 250, _ BitOR($WS_HSCROLL, $WS_VSCROLL, $ES_MULTILINE)) GUISetState() MsgBox(0, "", "Dopisanie tekstu",5) ;dopisywanie tekstu do kontrolki (z użyciem znaków kontrolnych formatu RTF) _GUICtrlRichEdit_AppendText($hREdit, "{\rtf \par Dopisuję trochę {\b wytłuszczonego tekstu}.\par }") ;zapisanie do pliku tekstu w formacie RTF _GUICtrlRichEdit_StreamToFile($hREdit, "bleble.rtf") MsgBox(0, "", "Zmiana tekstu",5) ;zmiana tekstu _GUICtrlRichEdit_SetText($hREdit, "Teraz inny tekst") MsgBox(0,"","Wczytanie tekstu RTF z pliku") ;wczytanie tekstu RTF z pliku do kontrolki _GUICtrlRichEdit_StreamFromFile($hREdit, "bleble.rtf") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;odczyt tekstu z kontrolki $txt = _GUICtrlRichEdit_GetText($hREdit) MsgBox(0,"Tekst odczytany:", $txt) ;likwidacja kontrolki _GUICtrlRichEdit_Destroy($hREdit) </syntaxhighlight> 8di7ckg1yba8xi4r0fj6u77cxaldrei 558469 558468 2026-10-03T21:33:57Z Wasta 12503 558469 wikitext text/x-wiki =Pasek narzędziowy (Toolbar)= ==Wstęp== Zestaw kontrolek obsługiwanych przez wbudowane funkcje AitoIt nie obejmuje bardzo popularnego w nowszych programach paska narzędziowego. Tworzenie i obsługę tego typu kontrolek umożliwia standardowy UDF o nazwie '''GuiToolbar.au3'''. UDF jest bardzo rozbudowany, zawiera ponad sto funkcji do tworzeni, usuwania, odczytu, ustawiania i zmiany wyglądu elementów paska. Wszystkie nazwy stałych są zdefiniowane w '''ToolbarConstants.au3'''. Dołączenie tych definicji jest realizowane przez '''GuiToolbar.au3''', więc nie trzeba robić tego w programie. ==Funkcje podstawowe== ===_GUICtrlToolbar_Create=== #include <GuiToolbar.au3> _GUICtrlToolbar_Create($hWnd [, $iStyle = 0x800 [, $iExStyle = 0]]) Funkcja tworzy pasek narzędziowy. Zwraca uchwyt do kontrolki, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna GUI, w którym ma być utworzona kontrolka. '''$iStyle''' - styl okna: $TBSTYLE_FLAT | 0x800 | pasek jednowierszowy, tekst pod ikoną (domyślnie) $TBSTYLE_LIST | 0x1000 | pasek jednowierszowy, tekst po prawej stronie ikony $TBSTYLE_WRAPABLE | 0x200 | pasek wielowierszowy (jeżeli przyciski nie mieszczą się w jednym wierszu) $TBSTYLE_TRANSPARENT | 0x8000 | pasek przezroczysty (ale przyciski nie są przezroczyste) '''$iExStyle''' - dodatkowy parametr stylu (domyślna wartość 0): ===_GUICtrlToolbar_AddButton=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddButton($hToolbar, $iID, $iImage [, $iString = 0 [, $iStyle = 0 [, $iState = 4 [, $iParam = 0]]]]) Funkcja dodaje przycisk do paska narzędziowego. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$iImage''' - indeks obrazka na przycisku. Przy korzystaniu z zasobów systemowych jest to: $STD_COPY - Kopiuj (Copy) $STD_CUT - Wytnij (Cut) $STD_DELETE - Usuń (Delete) $STD_FILENEW - Nowy plik (New file) $STD_FILEOPEN - Otwórz plik (Open file) $STD_FILESAVE - Zapisz plik (Save file) $STD_FIND - Szukaj (Find) $STD_HELP - Pomoc (Help) $STD_PASTE - Wklej (Paste) $STD_PRINT - Drukuj (Print) $STD_PRINTPRE - Podgląd wydruku (Print preview) $STD_PROPERTIES - Właściwości (Properties) $STD_REDOW - Ponów (Redo) $STD_REPLACE - Zamień (Replace) $STD_UNDO - Cofnij (Undo) Pozostałe opcjonalnie: '''$iString''' - indeks stringu z opisem przycisku '''$iStyle''' - styl przycisku '''$iState''' - status przycisku '''$IParam''' - dodatkowy parametr (w zasadzie należy używać tylko wartości domyślnej) ===_GUICtrlToolbar_AddButtonSep=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddButtonSep($hToolbar [, $iWidth = 6]) Funkcja wstawia separator do paska narzędziowego. Nie zwraca żadnej wartości. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iWidth''' - szerokość separatora w pikselach (domyślna wartość to 6 pikseli) ===_GUICtrlToolbar_AddBitmap=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddBitmap($hToolbar, $iButtons, $hInst, $iID) '''$hToolbar''' - uchwyt do paska narzędziowego '''$iButtons''' - ilość obrazów przycisków w bitmapie (jeżeli korzystamy z zasobów systemowych parametr ten nie ma znaczenie i może mieć dowolną wartość) '''$hInst''' - uchwyt do instancji modułu z pliku wykonywalnego, który zawiera zasób grafiki rastrowej. Jeżeli chcemy korzystać z zasobów systemowych parametr należy ustawić na '''-1'''. '''$hID''' - ID bitmapy z obrazkami przycisków. Przy korzystaniu z zasobów systemowych jest to ID zasobu: $IDB_STD_LARGE_COLOR - duże standardowe ikony $IDB_STD_SMALL_COLOR - małe standardowe ikony $IDB_VIEW_LARGE_COLOR - duże ikony w bardziej kolorowej wersji $IDB_VIEW_SMALL_COLOR - małe ikony w bardziej kolorowej wersji ===_GUICtrlToolbar_AddString=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddString($hToolbar, $sString) Funkcja dodaje nowy string do opisu przycisków paska narzędziowego. Zwraca numer indeksu, lub -1 gdy wystąpił błąd. Numerowanie rozpoczyna się od 0, kolejno dodawane stringi będą miały indeksy 0, 1, 2, ... itd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$hString''' - string z opisem przycisku ===_GUICtrlToolbar_IsButtonPressed=== #include <GuiToolbar.au3> _GUICtrlToolbar_IsButtonPressed($hToolbar, $iID) Funkcja sprawdza czy został wciśnięty przycisk o podanym ID. Zwraca '''True''' gdy przycisk został wciśnięty, lub '''False''' gdy nie jest wciśnięty. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - numer ID przycisku (jest nadawany przez programistę podczas tworzenia przycisku funkcją '''_GUICtrlToolbar_AddButton''') ==Tworzenie paska narzędziowego== Omówione powyżej funkcję stanowią podstawę do utworzenia paska narzędziowego z opisanymi przyciskami. Można to zrobić np. tak: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> $GUI = GUICreate("Test tworzenia paska narzędziowego:", 400, 200) ;tworzenie okna GUI Local Enum $idOpen=1000, $idSave, $idDelete, $idHlp ;nadanie wartości $hToolbar = _GUICtrlToolbar_Create($GUI) ;utworzenie paska narzędziowego ;opisy na przyciskach _GUICtrlToolbar_AddString($hToolbar, "Otwórz") _GUICtrlToolbar_AddString($hToolbar, "Zapisz") _GUICtrlToolbar_AddString($hToolbar, "Usuń") _GUICtrlToolbar_AddString($hToolbar, "Pomoc") ;obrazki na przyciskach (korzystamy z zasobów systemowych) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_VIEW_LARGE_COLOR) ;tworzenie przycisków _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 0) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, 1) _GUICtrlToolbar_AddButton($hToolbar, $idDelete, $STD_DELETE, 2) _GUICtrlToolbar_AddButtonSep($hToolbar, 12) ;separator _GUICtrlToolbar_AddButtonSep($hToolbar, 0) ;separator _GUICtrlToolbar_AddButton($hToolbar, $idHlp, $STD_HELP, 3) GUISetState() Do Select Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idOpen) MsgBox(0,"Wybrano:","Otwórz",2) Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idSave) MsgBox(0,"Wybrano:","Zapisz",2) Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idDelete) MsgBox(0,"Wybrano:","Usuń",2) Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idHlp) MsgBox(0,"Wybrano:","Pomoc",2) EndSelect Sleep(5) Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ==Funkcje dodatkowe== ===_GUICtrlToolbar_Destroy=== #include <GuiToolbar.au3> _GUICtrlToolbar_Destroy(ByRef $hToolbar) Funkcja usuwa pasek narzędziowy łącznie z wszystkimi przyciskami. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''$hToolbar''' - uchwyt do kontrolki zwrócony przez funkcję '''_GUICtrlToolbar_Create''' '''UWAGA:''' Funkcja działa tylko na paski narzędziowe utworzone przez '''_GUICtrlToolbar_Create'''. ===_GUICtrlToolbar_ButtonCount=== #include <GuiToolbar.au3> _GUICtrlToolbar_ButtonCount($hToolbar) Funkcja zwraca ilość przycisków na pasku narzędziowym. '''$hToolbar''' - uchwyt do paska narzędziowego '''UWAGA:''' Separatory są także zliczane jak zwykłe przyciski. ===_GUICtrlToolbar_CheckButton=== #include <GuiToolbar.au3> _GUICtrlToolbar_CheckButton($hToolbar, $iID [, $fCheck = True]) Funkcja zaznacza lub usuwa zaznaczenie przycisku. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$Check''' - '''True''' - zaznaczanie przycisku (wartość domyślna), '''False''' - usunięcie zaznaczenia Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> $GUI = GUICreate("Test:", 200, 200) Local Enum $idOpen=1000, $idHelp $hToolbar = _GUICtrlToolbar_Create($GUI) _GUICtrlToolbar_AddString($hToolbar, "Otwórz") _GUICtrlToolbar_AddString($hToolbar, "Pomoc") _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_VIEW_LARGE_COLOR) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 0) _GUICtrlToolbar_AddButtonSep($hToolbar) _GUICtrlToolbar_AddButton($hToolbar, $idHelp, $STD_HELP, 1) GUISetState() Do $msg = GUIGetMsg() _GUICtrlToolbar_CheckButton($hToolbar, $idOpen) Sleep(1000) _GUICtrlToolbar_CheckButton($hToolbar, $idOpen, False) Sleep(1000) Until $msg </syntaxhighlight> ===_GUICtrlToolbar_PressButton=== #include <GuiToolbar.au3> _GUICtrlToolbar_PressButton($hToolbar, $iID [, $fPress = True]) Funkcja symuluje wciśnięci (zwolnienie) przycisku w pasku narzędziowym. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$fPress''' - '''True''' (wartość domyślna) oznacza wciśnięcie przycisku, '''False''' jego zwolnienie Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> Global Enum $idNew = 1000, $idOpen, $idSave, $idHelp $hGUI = GUICreate("Toolbar", 600, 400) $hToolbar = _GUICtrlToolbar_Create($hGUI) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) _GUICtrlToolbar_AddString($hToolbar, "&Nowy") _GUICtrlToolbar_AddString($hToolbar, "&Otwórz") _GUICtrlToolbar_AddString($hToolbar, "&Zapisz") _GUICtrlToolbar_AddString($hToolbar, "&Pomoc") _GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW, 0) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 1) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, 2) _GUICtrlToolbar_AddButtonSep($hToolbar) _GUICtrlToolbar_AddButton($hToolbar, $idHelp, $STD_HELP, 3) GUISetState() Sleep(2000) _GUICtrlToolbar_PressButton($hToolbar, $idSave) ;wciśnięcie przycisku If _GUICtrlToolbar_IsButtonPressed($hToolbar, $idSave) Then MsgBox(0, "Test:", _ "Symulacja wciśnięcia przycisku: Zapisz") _GUICtrlToolbar_PressButton($hToolbar, $idSave, False) ;zwolnienie przycisku Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> === _GUICtrlToolbar_SetButtonText === #include <GuiToolbar.au3> _GUICtrlToolbar_SetButtonText($hToolbar, $iID, $sText) Funkcja zmienia opis przycisków paska narzędziowego. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$sText''' - nowy tekst opisu przycisku '''UWAGA:''' Nowy opis powinien być krótszy od pierwotnego, w przeciwnym razie jego część będzie zastąpiona kropkami. W razie konieczności wydłużyć pierwotny opis dodając na jego końcu odpowiednią ilość spacji. Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> Global Enum $idNew = 1000, $idOpen, $idSave, $idHelp $hGUI = GUICreate("Toolbar", 600, 400) $hToolbar = _GUICtrlToolbar_Create($hGUI) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) _GUICtrlToolbar_AddString($hToolbar, "&New") _GUICtrlToolbar_AddString($hToolbar, "&Open ") _GUICtrlToolbar_AddString($hToolbar, "&Save") _GUICtrlToolbar_AddString($hToolbar, "&Help") _GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW, 0) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 1) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, 2) _GUICtrlToolbar_AddButtonSep($hToolbar) _GUICtrlToolbar_AddButton($hToolbar, $idHelp, $STD_HELP, 3) GUISetState() Sleep(2000) MsgBox(0, "Test", "Zmiana opisu przycisków") _GUICtrlToolbar_SetButtonText($hToolbar, $idNew, "&Nowy") _GUICtrlToolbar_SetButtonText($hToolbar, $idOpen, "&Otwórz") _GUICtrlToolbar_SetButtonText($hToolbar, $idSave, "&Zapis") _GUICtrlToolbar_SetButtonText($hToolbar, $idHelp, "&Pomoc") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> === _GUICtrlToolbar_SetStyle === #include <GuiToolbar.au3> _GUICtrlToolbar_SetStyle($hToobar, $iStyle) Funkcja ustala styl paska narzędziowego. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iStyle''' - kod stylu paska $CCS_TOP - pasek na górze $CCS_BOTTOM - pasek na dole $TBSTYLE_TOOLTIPS - pasek może być wielowierszowy (jeżeli przyciski nie mieszczą się w jednym wierszu) $TBSTYLE_FLAT - pasek jednowierszowy, opis pod spodem odrazka $TBSTYLE_LIST - pasek jednowierszowy, opis z prawej strony obrazka $TBSTYLE_TRANSPARENT - pasek przezroczysty Kody można łączyć za pomocą funkcji BitOR, np.: BitOR($TBSTYLE_WRAPABLE, $CCS_TOP). === _GUICtrlToolbar_GetStyle === #include <GuiToolbar.au3> _GUICtrlToolbar_GetStyle($hToolbar) Funkcja odczytuje kod stylu paska narzędziowego. Zwraca ten kod lub 0 gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> Enum $idNew0 = 1000, $idOpen0, $idSave0, $idHelp0 $hGUI = GUICreate("", 120, 300, 700, 200) $hToolbar = _GUICtrlToolbar_Create($hGUI) ;ustalenie stylu paska _GUICtrlToolbar_SetStyle($hToolbar, BitOR($TBSTYLE_WRAPABLE, $CCS_TOP)) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) $a1 = _GUICtrlToolbar_AddString($hToolbar, "&Nowy") $a2 = _GUICtrlToolbar_AddString($hToolbar, "&Otwórz") $a3 = _GUICtrlToolbar_AddString($hToolbar, "&Zapis") $a4 = _GUICtrlToolbar_AddString($hToolbar, "&Pomoc") _GUICtrlToolbar_AddButton($hToolbar, $idNew0, $STD_FILENEW, $a1) _GUICtrlToolbar_AddButton($hToolbar, $idOpen0, $STD_FILEOPEN, $a2) _GUICtrlToolbar_AddButton($hToolbar, $idSave0, $STD_FILESAVE, $a3) _GUICtrlToolbar_AddButton($hToolbar, $idHelp0, $STD_HELP, $a4) GUISetState() MsgBox(0, "", "Styl: 0x" & Hex(_GUICtrlToolbar_GetStyle($hToolbar))) ;zmiana stylu _GUICtrlToolbar_SetStyle($hToolbar, BitOR($TBSTYLE_LIST, $CCS_BOTTOM)) GUISetState() MsgBox(0, "", "Styl: 0x" & Hex(_GUICtrlToolbar_GetStyle($hToolbar))) </syntaxhighlight> =Edytor tekstu w formacie RTF= ==Wstęp== Podstawowy zestaw kontrolek Autoit zawiera tylko edytor czystego tekstu (txt). W bibliotece standardowej znajduje się biblioteka funkcji do obsługi bardziej zaawansowanego formatu RTF (Rich Text Format). Format ten opracowany w 1987 r. przez Microsoft umożliwia zmianę wielkości, kroju i koloru czcionki oraz tworzenie tabel. Jest bardzo popularny i dostępny niemal w każdym bardziej zaawansowanym edytorze tekstu. Funkcje do obsługi kontrolki edytora RTF zawarte są w UDF o nazwie GuiRichEdit.au3. Jest on bardzo rozbudowany i zawiera prawie sto funkcji. ==Podstawowe funkcje do tworzenie kontrolki RTF== ===_GUICtrlRichEdit_Create=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_Create($hWnd, $sText, $iLeft, $iTop [, $iWidth = 150 [, $iHeight = 150 [, $iStyle = -1 [, $iExStyle = -1]]]]) Funkcja tworzy kontrolkę edytora RTF. Zwraca uchwyt do kontrolki lub 0 gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 103 - $iLeft < 0 104 - $iTop < 0 105 - $iWidth nie jest >0 lub równe -1 106 - $iHeight nie jest >0 lub równe -1 107 - $iStyle nie jest >0 lub równe -1 108 - $iExStyle nie jest >0 lub równe -1 UWAGA: -1 oznacza wartość domyślną '''$hWnd''' - uchwyt do okna GUI, w którym ma być utworzona kontrolka '''$sText''' - tekst do wstawienia w kontrolce '''$iLeft''' i '''$iTop''' - współrzędne lewego górnego narożnika kontrolki '''$iWidth''' - szerokość kontrolki '''$iHeight''' - wysokość kontrolki '''$iStyle''' - styl kontrolki $ES_AUTOHSCROLL - automatyczne przewijanie tekstu w prawo o 10 znaków, gdy użytkownik wpisze znak na końcu linii $ES_AUTOVSCROLL - automatycznie przewija tekst o stronę, gdy użytkownik naciśnie klawisz ENTER w ostatniej linii $WS_HSCROLL - kontrolka z poziomym pasekiem przewijania $WS_VSCROLL - kontrolka z pionowym paskiem przewijania $ES_CENTER - centrowanie tekstu $ES_LEFT - wyrównanie tekstu do lewego marginesu $ES_MULTILINE - tekst wielowierszowy (domyślne) $ES_NOHIDESEL - zaznaczony tekst jest w negatywie, nawet jeśli kontrola nie jest aktywna $ES_NUMBER - pozwala wpisywać tylko cyfry $ES_READONLY - tekst tylko do odzczytu, edycja zablokowana $ES_RIGHT - wyrównanie tekstu do prawego marginesu $ES_WANTRETURN - powrót karetki po naciśnięciu ENTER (ustawienie domyślne) $ES_PASSWORD - wyświetla gwiazdki (*) zamiast znaków wpisanych do pola edycyjnego '''$iExStyle''' - kod rozszerzenia stylu, wg standardowych stałych $WS_EX_... '''UWAGA:''' 1. Kody można łączyć za pomocą funkcji BitOR. 2. Przed zakończeniem skryptu należy użyć funkcji _GUICtrlRichEdit_Destroy(). ===_GUICtrlRichEdit_Destroy=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_Destroy(ByRef $hRTF) Funkcja usuwa kontrolkę edytora RTF. Zwraca TRUE gdy sukces, jednocześnie zerując zmienną zawierającą uchwyt do kontrolki. Jeżeli wystąpił błąd funkcja zwraca 0, a makro @error przyjmuje wartość -1 (funkcja próbuje zniszczyć kontrolkę należącą do innej aplikacji). '''$hRTF''' - uchwyt do kontrolki edytora RTF ===_GUICtrlRichEdit_AppendText=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_AppendText($hRTF, $sText) Funkcja dodaje tekst do tekstu w kontrolce (na końcu). Zwraca TRUE gdy sukces, FALSE gdy wystąpił błąd (@error przyjmuje wartość 101 - $hRTF nie zawiera uchwytu do kontrolki). '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sText''' - dopisywany tekst ===_GUICtrlRichEdit_SetText=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_SetText($hRTF, $sText) Funkcja nadpisuje tekst w kontrolce. Zwraca TRUE gdy sukces, FALSE gdy wystąpił błąd (@error przyjmuje wartość 101 - $hRTF nie zawiera uchwytu do kontrolki). '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sText''' - nadpisywany tekst ===_GUICtrlRichEdit_GetText=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_GetText($hRTF [, $fCrToCrLf = False [, $iCodePage = 0 [, $sReplChar = ""]]]) Funkcja zwraca pobrany tekst z kontrolki RTF. Jeżeli wystąpił błąd zwraca pusty string "", a makro @error przyjmuje wartość: 101 - $hRTF nie zawiera uchwytu 102 - $fCrToCrLf ma inną wartość niż TRUE lub FALSE 103 - $iCodePage nie jest liczbą 700 - błąd wewnętrzny '''$fCrToCrLf''' - konwersja każdego CR na CRLF, TRUE - tak, FALSE - nie (wartość domyślna) '''$iCodePage''' - strona kodowa używana w tłumaczeniu, domyślna wartość 0, co oznacza domyślne ustawienie w systemie, CP_ACP - ANSI, 1200 - Unicode '''$sReplChar''' - znak jaki ma być wstawiony w miejsce znaku występującego w odczytanym tekście, jeżeli nie występuje on w zadeklarowanej stronie kodowej. Domyślnie jest to pusty string, czyli znak zostanie pominięty. Makro @extended zawiera ilość podmian. '''UWAGA:''' Zwracany jest czysty tekst, bez znaków formatujących. ===_GUICtrlRichEdit_StreamFromFile=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamFromFile($hRTF, $sFilespec) Funkcja wczytuje z pliku do kontrolki tekst w formacie RTF. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 1121 - nie można otworzyć pliku 1122 - plik jest pusty 700 - próba przesłania zbyt wielu znaków '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sFilespec''' - nazwa pliku do wczytania ===_GUICtrlRichEdit_StreamFromVar=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamFromVar($hRTF, $sVar) Funkcja wczytuje ze zmiennej do kontrolki tekst w formacie RTF. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 700 - próba przesłania zbyt wielu znaków '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sVar''' - nazwa zmiennej do wczytania ===_GUICtrlRichEdit_StreamToFile=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamToFile($hRTF, $sFilespec [, $fIncludeCOM=True [, $iOpts=0 [, $iCodePage = 0]]]) Funkcja zapisuje tekst z kontrolki do pliku zachowując format RTF lub TXT. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 102 - nie można utworzyć pliku 1041 - $SFF_PLAINRTF nieprawidłowy dla pliku tekstowego 1042 - $opts: nieprawidłowa opcja 1043 - $SF_UNICODE jest ważne tylko dla pliku tekstowego 700 - błąd wewnętrzny '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sFilespec''' - nazwa pliku do zapisania, jeżeli rozszerzenie jest .rtf (np. "tekst.rtf"), to plik będzie zapisany w formacie RTF, w przeciwnym razie jako TXT. '''$fIncludeCOM''' - '''$iOpts''' - dodatkowe opcje, domyślnie 0 '''$iCodePage''' - generowanie tekstu UTF-8 przy użyciu tej strony kodowej ===_GUICtrlRichEdit_StreamToVar=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamToVar($hRTF [, $fRtf = True [, $fIncludeCOM=True [, $iOpts=0 [, $iCodePage = 0]]]]) Funkcja zwraca tekst z kontrolki w formacie RTF lub TXT, lub string pusty "" jeżeli wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 1041 - $SFF_PLAINRTF nieprawidłowy dla pliku tekstowego 1042 - $opts: nieprawidłowa opcja 1043 - $SF_UNICODE jest ważne tylko dla pliku tekstowego 700 - internal error '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$fRtf''' - TRUE - zwracany tekst w formacie RTF, FALSE - zwracany tylko czysty tekst (TXT) '''$fIncludeCOM''' - '''$iOpts''' - dodatkowe opcje, domyślnie 0 '''$iCodePage''' - generowanie tekstu UTF-8 przy użyciu tej strony kodowej ==Tworzenie i obsługa kontrolki edytora RTF== <syntaxhighlight lang="autoit"> #include <GuiRichEdit.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> ;tworzenie okna GUI $hGui = GUICreate("Test edytora RTF", 320, 300) ;tworzenie kontrolki edytora RTF $hREdit = _GUICtrlRichEdit_Create($hGui, "Tekst początkowy.", 10, 10, 300, 250, _ BitOR($WS_HSCROLL, $WS_VSCROLL, $ES_MULTILINE)) GUISetState() MsgBox(0, "", "Dopisanie tekstu",5) ;dopisywanie tekstu do kontrolki (z użyciem znaków kontrolnych formatu RTF) _GUICtrlRichEdit_AppendText($hREdit, "{\rtf \par Dopisuję trochę {\b wytłuszczonego tekstu}.\par }") ;zapisanie do pliku tekstu w formacie RTF _GUICtrlRichEdit_StreamToFile($hREdit, "bleble.rtf") MsgBox(0, "", "Zmiana tekstu",5) ;zmiana tekstu _GUICtrlRichEdit_SetText($hREdit, "Teraz inny tekst") MsgBox(0,"","Wczytanie tekstu RTF z pliku") ;wczytanie tekstu RTF z pliku do kontrolki _GUICtrlRichEdit_StreamFromFile($hREdit, "bleble.rtf") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;odczyt tekstu z kontrolki $txt = _GUICtrlRichEdit_GetText($hREdit) MsgBox(0,"Tekst odczytany:", $txt) ;likwidacja kontrolki _GUICtrlRichEdit_Destroy($hREdit) </syntaxhighlight> e5ee6b5rq8fkyqnm8oxhu46ql9qcmn8 558470 558469 2026-10-03T21:47:06Z Wasta 12503 558470 wikitext text/x-wiki =Pasek narzędziowy (Toolbar)= ==Wstęp== Zestaw kontrolek obsługiwanych przez wbudowane funkcje AitoIt nie obejmuje bardzo popularnego w nowszych programach paska narzędziowego. Tworzenie i obsługę tego typu kontrolek umożliwia standardowy UDF o nazwie '''GuiToolbar.au3'''. UDF jest bardzo rozbudowany, zawiera ponad sto funkcji do tworzeni, usuwania, odczytu, ustawiania i zmiany wyglądu elementów paska. Wszystkie nazwy stałych są zdefiniowane w '''ToolbarConstants.au3'''. Dołączenie tych definicji jest realizowane przez '''GuiToolbar.au3''', więc nie trzeba robić tego w programie. ==Funkcje podstawowe== ===_GUICtrlToolbar_Create=== #include <GuiToolbar.au3> _GUICtrlToolbar_Create($hWnd [, $iStyle = 0x800 [, $iExStyle = 0]]) Funkcja tworzy pasek narzędziowy. Zwraca uchwyt do kontrolki, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna GUI, w którym ma być utworzona kontrolka. '''$iStyle''' - styl okna: $TBSTYLE_FLAT | 0x800 | pasek jednowierszowy, tekst pod ikoną (domyślnie) $TBSTYLE_LIST | 0x1000 | pasek jednowierszowy, tekst po prawej stronie ikony $TBSTYLE_WRAPABLE | 0x200 | pasek wielowierszowy (jeżeli przyciski nie mieszczą się w jednym wierszu) $TBSTYLE_TRANSPARENT | 0x8000 | pasek przezroczysty (ale przyciski nie są przezroczyste) '''$iExStyle''' - dodatkowy parametr stylu (domyślna wartość 0): ===_GUICtrlToolbar_AddButton=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddButton($hToolbar, $iID, $iImage [, $iString = 0 [, $iStyle = 0 [, $iState = 4 [, $iParam = 0]]]]) Funkcja dodaje przycisk do paska narzędziowego. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$iImage''' - indeks obrazka na przycisku. Przy korzystaniu z zasobów systemowych jest to: $STD_COPY - Kopiuj (Copy) $STD_CUT - Wytnij (Cut) $STD_DELETE - Usuń (Delete) $STD_FILENEW - Nowy plik (New file) $STD_FILEOPEN - Otwórz plik (Open file) $STD_FILESAVE - Zapisz plik (Save file) $STD_FIND - Szukaj (Find) $STD_HELP - Pomoc (Help) $STD_PASTE - Wklej (Paste) $STD_PRINT - Drukuj (Print) $STD_PRINTPRE - Podgląd wydruku (Print preview) $STD_PROPERTIES - Właściwości (Properties) $STD_REDOW - Ponów (Redo) $STD_REPLACE - Zamień (Replace) $STD_UNDO - Cofnij (Undo) Pozostałe opcjonalnie: '''$iString''' - indeks stringu z opisem przycisku '''$iStyle''' - styl przycisku '''$iState''' - status przycisku '''$IParam''' - dodatkowy parametr (w zasadzie należy używać tylko wartości domyślnej) ===_GUICtrlToolbar_AddButtonSep=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddButtonSep($hToolbar [, $iWidth = 6]) Funkcja wstawia separator do paska narzędziowego. Nie zwraca żadnej wartości. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iWidth''' - szerokość separatora w pikselach (domyślna wartość to 6 pikseli) ===_GUICtrlToolbar_AddBitmap=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddBitmap($hToolbar, $iButtons, $hInst, $iID) '''$hToolbar''' - uchwyt do paska narzędziowego '''$iButtons''' - ilość obrazów przycisków w bitmapie (jeżeli korzystamy z zasobów systemowych parametr ten nie ma znaczenie i może mieć dowolną wartość) '''$hInst''' - uchwyt do instancji modułu z pliku wykonywalnego, który zawiera zasób grafiki rastrowej. Jeżeli chcemy korzystać z zasobów systemowych parametr należy ustawić na '''-1'''. '''$hID''' - ID bitmapy z obrazkami przycisków. Przy korzystaniu z zasobów systemowych jest to ID zasobu: $IDB_STD_LARGE_COLOR - duże standardowe ikony $IDB_STD_SMALL_COLOR - małe standardowe ikony $IDB_VIEW_LARGE_COLOR - duże ikony w bardziej kolorowej wersji $IDB_VIEW_SMALL_COLOR - małe ikony w bardziej kolorowej wersji ===_GUICtrlToolbar_AddString=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddString($hToolbar, $sString) Funkcja dodaje nowy string do opisu przycisków paska narzędziowego. Zwraca numer indeksu, lub -1 gdy wystąpił błąd. Numerowanie rozpoczyna się od 0, kolejno dodawane stringi będą miały indeksy 0, 1, 2, ... itd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$hString''' - string z opisem przycisku ===_GUICtrlToolbar_IsButtonPressed=== #include <GuiToolbar.au3> _GUICtrlToolbar_IsButtonPressed($hToolbar, $iID) Funkcja sprawdza czy został wciśnięty przycisk o podanym ID. Zwraca '''True''' gdy przycisk został wciśnięty, lub '''False''' gdy nie jest wciśnięty. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - numer ID przycisku (jest nadawany przez programistę podczas tworzenia przycisku funkcją '''_GUICtrlToolbar_AddButton''') ==Tworzenie paska narzędziowego== Omówione powyżej funkcję stanowią podstawę do utworzenia paska narzędziowego z opisanymi przyciskami. Można to zrobić np. tak: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> $GUI = GUICreate("Test tworzenia paska narzędziowego:", 400, 200) ;tworzenie okna GUI Local Enum $idOpen=1000, $idSave, $idDelete, $idHlp ;nadanie wartości $hToolbar = _GUICtrlToolbar_Create($GUI) ;utworzenie paska narzędziowego ;opisy na przyciskach _GUICtrlToolbar_AddString($hToolbar, "Otwórz") _GUICtrlToolbar_AddString($hToolbar, "Zapisz") _GUICtrlToolbar_AddString($hToolbar, "Usuń") _GUICtrlToolbar_AddString($hToolbar, "Pomoc") ;obrazki na przyciskach (korzystamy z zasobów systemowych) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_VIEW_LARGE_COLOR) ;tworzenie przycisków _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 0) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, 1) _GUICtrlToolbar_AddButton($hToolbar, $idDelete, $STD_DELETE, 2) _GUICtrlToolbar_AddButtonSep($hToolbar, 12) ;separator _GUICtrlToolbar_AddButtonSep($hToolbar, 0) ;separator _GUICtrlToolbar_AddButton($hToolbar, $idHlp, $STD_HELP, 3) GUISetState() Do Select Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idOpen) MsgBox(0,"Wybrano:","Otwórz",2) Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idSave) MsgBox(0,"Wybrano:","Zapisz",2) Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idDelete) MsgBox(0,"Wybrano:","Usuń",2) Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idHlp) MsgBox(0,"Wybrano:","Pomoc",2) EndSelect Sleep(5) Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ==Funkcje dodatkowe== ===_GUICtrlToolbar_Destroy=== #include <GuiToolbar.au3> _GUICtrlToolbar_Destroy(ByRef $hToolbar) Funkcja usuwa pasek narzędziowy łącznie z wszystkimi przyciskami. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''$hToolbar''' - uchwyt do kontrolki zwrócony przez funkcję '''_GUICtrlToolbar_Create''' '''UWAGA:''' Funkcja działa tylko na paski narzędziowe utworzone przez '''_GUICtrlToolbar_Create'''. ===_GUICtrlToolbar_ButtonCount=== #include <GuiToolbar.au3> _GUICtrlToolbar_ButtonCount($hToolbar) Funkcja zwraca ilość przycisków na pasku narzędziowym. '''$hToolbar''' - uchwyt do paska narzędziowego '''UWAGA:''' Separatory są także zliczane jak zwykłe przyciski. ===_GUICtrlToolbar_CheckButton=== #include <GuiToolbar.au3> _GUICtrlToolbar_CheckButton($hToolbar, $iID [, $fCheck = True]) Funkcja zaznacza lub usuwa zaznaczenie przycisku. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$Check''' - '''True''' - zaznaczanie przycisku (wartość domyślna), '''False''' - usunięcie zaznaczenia Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> $GUI = GUICreate("Test:", 200, 200) Local Enum $idOpen=1000, $idHlp $hToolbar = _GUICtrlToolbar_Create($GUI) _GUICtrlToolbar_AddString($hToolbar, "Otwórz") _GUICtrlToolbar_AddString($hToolbar, "Pomoc") _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_VIEW_LARGE_COLOR) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 0) _GUICtrlToolbar_AddButtonSep($hToolbar) _GUICtrlToolbar_AddButton($hToolbar, $idHlp, $STD_HELP, 1) GUISetState() Do $msg = GUIGetMsg() _GUICtrlToolbar_CheckButton($hToolbar, $idOpen) Sleep(1000) _GUICtrlToolbar_CheckButton($hToolbar, $idOpen, False) Sleep(1000) Until $msg </syntaxhighlight> ===_GUICtrlToolbar_PressButton=== #include <GuiToolbar.au3> _GUICtrlToolbar_PressButton($hToolbar, $iID [, $fPress = True]) Funkcja symuluje wciśnięci (zwolnienie) przycisku w pasku narzędziowym. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$fPress''' - '''True''' (wartość domyślna) oznacza wciśnięcie przycisku, '''False''' jego zwolnienie Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> Global Enum $idNew = 1000, $idOpen, $idSave, $idHlp $hGUI = GUICreate("Toolbar", 600, 400) $hToolbar = _GUICtrlToolbar_Create($hGUI) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) _GUICtrlToolbar_AddString($hToolbar, "&Nowy") _GUICtrlToolbar_AddString($hToolbar, "&Otwórz") _GUICtrlToolbar_AddString($hToolbar, "&Zapisz") _GUICtrlToolbar_AddString($hToolbar, "&Pomoc") _GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW, 0) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 1) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, 2) _GUICtrlToolbar_AddButtonSep($hToolbar) _GUICtrlToolbar_AddButton($hToolbar, $idHlp, $STD_HELP, 3) GUISetState() Sleep(2000) _GUICtrlToolbar_PressButton($hToolbar, $idSave) ;wciśnięcie przycisku If _GUICtrlToolbar_IsButtonPressed($hToolbar, $idSave) Then MsgBox(0, "Test:", _ "Symulacja wciśnięcia przycisku: Zapisz") _GUICtrlToolbar_PressButton($hToolbar, $idSave, False) ;zwolnienie przycisku Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> === _GUICtrlToolbar_SetButtonText === #include <GuiToolbar.au3> _GUICtrlToolbar_SetButtonText($hToolbar, $iID, $sText) Funkcja zmienia opis przycisków paska narzędziowego. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$sText''' - nowy tekst opisu przycisku '''UWAGA:''' Nowy opis powinien być krótszy od pierwotnego, w przeciwnym razie jego część będzie zastąpiona kropkami. W razie konieczności wydłużyć pierwotny opis dodając na jego końcu odpowiednią ilość spacji. Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> Global Enum $idNew = 1000, $idOpen, $idSave, $idHlp $hGUI = GUICreate("Toolbar", 600, 400) $hToolbar = _GUICtrlToolbar_Create($hGUI) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) _GUICtrlToolbar_AddString($hToolbar, "&New") _GUICtrlToolbar_AddString($hToolbar, "&Open ") _GUICtrlToolbar_AddString($hToolbar, "&Save") _GUICtrlToolbar_AddString($hToolbar, "&Help") _GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW, 0) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 1) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, 2) _GUICtrlToolbar_AddButtonSep($hToolbar) _GUICtrlToolbar_AddButton($hToolbar, $idHlp, $STD_HELP, 3) GUISetState() Sleep(2000) MsgBox(0, "Test", "Zmiana opisu przycisków") _GUICtrlToolbar_SetButtonText($hToolbar, $idNew, "&Nowy") _GUICtrlToolbar_SetButtonText($hToolbar, $idOpen, "&Otwórz") _GUICtrlToolbar_SetButtonText($hToolbar, $idSave, "&Zapis") _GUICtrlToolbar_SetButtonText($hToolbar, $idHlp, "&Pomoc") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> === _GUICtrlToolbar_SetStyle === #include <GuiToolbar.au3> _GUICtrlToolbar_SetStyle($hToobar, $iStyle) Funkcja ustala styl paska narzędziowego. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iStyle''' - kod stylu paska $CCS_TOP - pasek na górze $CCS_BOTTOM - pasek na dole $TBSTYLE_TOOLTIPS - pasek może być wielowierszowy (jeżeli przyciski nie mieszczą się w jednym wierszu) $TBSTYLE_FLAT - pasek jednowierszowy, opis pod spodem odrazka $TBSTYLE_LIST - pasek jednowierszowy, opis z prawej strony obrazka $TBSTYLE_TRANSPARENT - pasek przezroczysty Kody można łączyć za pomocą funkcji BitOR, np.: BitOR($TBSTYLE_WRAPABLE, $CCS_TOP). === _GUICtrlToolbar_GetStyle === #include <GuiToolbar.au3> _GUICtrlToolbar_GetStyle($hToolbar) Funkcja odczytuje kod stylu paska narzędziowego. Zwraca ten kod lub 0 gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> Enum $idNew = 1000, $idOpen, $idSave, $idHlp $hGUI = GUICreate("", 120, 300, 700, 200) $hToolbar = _GUICtrlToolbar_Create($hGUI) ;ustalenie stylu paska _GUICtrlToolbar_SetStyle($hToolbar, BitOR($TBSTYLE_WRAPABLE, $CCS_TOP)) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) $a1 = _GUICtrlToolbar_AddString($hToolbar, "&Nowy") $a2 = _GUICtrlToolbar_AddString($hToolbar, "&Otwórz") $a3 = _GUICtrlToolbar_AddString($hToolbar, "&Zapis") $a4 = _GUICtrlToolbar_AddString($hToolbar, "&Pomoc") _GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW, $a1) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, $a2) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, $a3) _GUICtrlToolbar_AddButton($hToolbar, $idHlp, $STD_HELP, $a4) GUISetState() MsgBox(0, "", "Styl: 0x" & Hex(_GUICtrlToolbar_GetStyle($hToolbar))) ;zmiana stylu _GUICtrlToolbar_SetStyle($hToolbar, BitOR($TBSTYLE_LIST, $CCS_BOTTOM)) GUISetState() MsgBox(0, "", "Styl: 0x" & Hex(_GUICtrlToolbar_GetStyle($hToolbar))) </syntaxhighlight> =Edytor tekstu w formacie RTF= ==Wstęp== Podstawowy zestaw kontrolek Autoit zawiera tylko edytor czystego tekstu (txt). W bibliotece standardowej znajduje się biblioteka funkcji do obsługi bardziej zaawansowanego formatu RTF (Rich Text Format). Format ten opracowany w 1987 r. przez Microsoft umożliwia zmianę wielkości, kroju i koloru czcionki oraz tworzenie tabel. Jest bardzo popularny i dostępny niemal w każdym bardziej zaawansowanym edytorze tekstu. Funkcje do obsługi kontrolki edytora RTF zawarte są w UDF o nazwie GuiRichEdit.au3. Jest on bardzo rozbudowany i zawiera prawie sto funkcji. ==Podstawowe funkcje do tworzenie kontrolki RTF== ===_GUICtrlRichEdit_Create=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_Create($hWnd, $sText, $iLeft, $iTop [, $iWidth = 150 [, $iHeight = 150 [, $iStyle = -1 [, $iExStyle = -1]]]]) Funkcja tworzy kontrolkę edytora RTF. Zwraca uchwyt do kontrolki lub 0 gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 103 - $iLeft < 0 104 - $iTop < 0 105 - $iWidth nie jest >0 lub równe -1 106 - $iHeight nie jest >0 lub równe -1 107 - $iStyle nie jest >0 lub równe -1 108 - $iExStyle nie jest >0 lub równe -1 UWAGA: -1 oznacza wartość domyślną '''$hWnd''' - uchwyt do okna GUI, w którym ma być utworzona kontrolka '''$sText''' - tekst do wstawienia w kontrolce '''$iLeft''' i '''$iTop''' - współrzędne lewego górnego narożnika kontrolki '''$iWidth''' - szerokość kontrolki '''$iHeight''' - wysokość kontrolki '''$iStyle''' - styl kontrolki $ES_AUTOHSCROLL - automatyczne przewijanie tekstu w prawo o 10 znaków, gdy użytkownik wpisze znak na końcu linii $ES_AUTOVSCROLL - automatycznie przewija tekst o stronę, gdy użytkownik naciśnie klawisz ENTER w ostatniej linii $WS_HSCROLL - kontrolka z poziomym pasekiem przewijania $WS_VSCROLL - kontrolka z pionowym paskiem przewijania $ES_CENTER - centrowanie tekstu $ES_LEFT - wyrównanie tekstu do lewego marginesu $ES_MULTILINE - tekst wielowierszowy (domyślne) $ES_NOHIDESEL - zaznaczony tekst jest w negatywie, nawet jeśli kontrola nie jest aktywna $ES_NUMBER - pozwala wpisywać tylko cyfry $ES_READONLY - tekst tylko do odzczytu, edycja zablokowana $ES_RIGHT - wyrównanie tekstu do prawego marginesu $ES_WANTRETURN - powrót karetki po naciśnięciu ENTER (ustawienie domyślne) $ES_PASSWORD - wyświetla gwiazdki (*) zamiast znaków wpisanych do pola edycyjnego '''$iExStyle''' - kod rozszerzenia stylu, wg standardowych stałych $WS_EX_... '''UWAGA:''' 1. Kody można łączyć za pomocą funkcji BitOR. 2. Przed zakończeniem skryptu należy użyć funkcji _GUICtrlRichEdit_Destroy(). ===_GUICtrlRichEdit_Destroy=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_Destroy(ByRef $hRTF) Funkcja usuwa kontrolkę edytora RTF. Zwraca TRUE gdy sukces, jednocześnie zerując zmienną zawierającą uchwyt do kontrolki. Jeżeli wystąpił błąd funkcja zwraca 0, a makro @error przyjmuje wartość -1 (funkcja próbuje zniszczyć kontrolkę należącą do innej aplikacji). '''$hRTF''' - uchwyt do kontrolki edytora RTF ===_GUICtrlRichEdit_AppendText=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_AppendText($hRTF, $sText) Funkcja dodaje tekst do tekstu w kontrolce (na końcu). Zwraca TRUE gdy sukces, FALSE gdy wystąpił błąd (@error przyjmuje wartość 101 - $hRTF nie zawiera uchwytu do kontrolki). '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sText''' - dopisywany tekst ===_GUICtrlRichEdit_SetText=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_SetText($hRTF, $sText) Funkcja nadpisuje tekst w kontrolce. Zwraca TRUE gdy sukces, FALSE gdy wystąpił błąd (@error przyjmuje wartość 101 - $hRTF nie zawiera uchwytu do kontrolki). '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sText''' - nadpisywany tekst ===_GUICtrlRichEdit_GetText=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_GetText($hRTF [, $fCrToCrLf = False [, $iCodePage = 0 [, $sReplChar = ""]]]) Funkcja zwraca pobrany tekst z kontrolki RTF. Jeżeli wystąpił błąd zwraca pusty string "", a makro @error przyjmuje wartość: 101 - $hRTF nie zawiera uchwytu 102 - $fCrToCrLf ma inną wartość niż TRUE lub FALSE 103 - $iCodePage nie jest liczbą 700 - błąd wewnętrzny '''$fCrToCrLf''' - konwersja każdego CR na CRLF, TRUE - tak, FALSE - nie (wartość domyślna) '''$iCodePage''' - strona kodowa używana w tłumaczeniu, domyślna wartość 0, co oznacza domyślne ustawienie w systemie, CP_ACP - ANSI, 1200 - Unicode '''$sReplChar''' - znak jaki ma być wstawiony w miejsce znaku występującego w odczytanym tekście, jeżeli nie występuje on w zadeklarowanej stronie kodowej. Domyślnie jest to pusty string, czyli znak zostanie pominięty. Makro @extended zawiera ilość podmian. '''UWAGA:''' Zwracany jest czysty tekst, bez znaków formatujących. ===_GUICtrlRichEdit_StreamFromFile=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamFromFile($hRTF, $sFilespec) Funkcja wczytuje z pliku do kontrolki tekst w formacie RTF. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 1121 - nie można otworzyć pliku 1122 - plik jest pusty 700 - próba przesłania zbyt wielu znaków '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sFilespec''' - nazwa pliku do wczytania ===_GUICtrlRichEdit_StreamFromVar=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamFromVar($hRTF, $sVar) Funkcja wczytuje ze zmiennej do kontrolki tekst w formacie RTF. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 700 - próba przesłania zbyt wielu znaków '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sVar''' - nazwa zmiennej do wczytania ===_GUICtrlRichEdit_StreamToFile=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamToFile($hRTF, $sFilespec [, $fIncludeCOM=True [, $iOpts=0 [, $iCodePage = 0]]]) Funkcja zapisuje tekst z kontrolki do pliku zachowując format RTF lub TXT. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 102 - nie można utworzyć pliku 1041 - $SFF_PLAINRTF nieprawidłowy dla pliku tekstowego 1042 - $opts: nieprawidłowa opcja 1043 - $SF_UNICODE jest ważne tylko dla pliku tekstowego 700 - błąd wewnętrzny '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sFilespec''' - nazwa pliku do zapisania, jeżeli rozszerzenie jest .rtf (np. "tekst.rtf"), to plik będzie zapisany w formacie RTF, w przeciwnym razie jako TXT. '''$fIncludeCOM''' - '''$iOpts''' - dodatkowe opcje, domyślnie 0 '''$iCodePage''' - generowanie tekstu UTF-8 przy użyciu tej strony kodowej ===_GUICtrlRichEdit_StreamToVar=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamToVar($hRTF [, $fRtf = True [, $fIncludeCOM=True [, $iOpts=0 [, $iCodePage = 0]]]]) Funkcja zwraca tekst z kontrolki w formacie RTF lub TXT, lub string pusty "" jeżeli wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 1041 - $SFF_PLAINRTF nieprawidłowy dla pliku tekstowego 1042 - $opts: nieprawidłowa opcja 1043 - $SF_UNICODE jest ważne tylko dla pliku tekstowego 700 - internal error '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$fRtf''' - TRUE - zwracany tekst w formacie RTF, FALSE - zwracany tylko czysty tekst (TXT) '''$fIncludeCOM''' - '''$iOpts''' - dodatkowe opcje, domyślnie 0 '''$iCodePage''' - generowanie tekstu UTF-8 przy użyciu tej strony kodowej ==Tworzenie i obsługa kontrolki edytora RTF== <syntaxhighlight lang="autoit"> #include <GuiRichEdit.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> ;tworzenie okna GUI $hGui = GUICreate("Test edytora RTF", 320, 300) ;tworzenie kontrolki edytora RTF $hREdit = _GUICtrlRichEdit_Create($hGui, "Tekst początkowy.", 10, 10, 300, 250, _ BitOR($WS_HSCROLL, $WS_VSCROLL, $ES_MULTILINE)) GUISetState() MsgBox(0, "", "Dopisanie tekstu",5) ;dopisywanie tekstu do kontrolki (z użyciem znaków kontrolnych formatu RTF) _GUICtrlRichEdit_AppendText($hREdit, "{\rtf \par Dopisuję trochę {\b wytłuszczonego tekstu}.\par }") ;zapisanie do pliku tekstu w formacie RTF _GUICtrlRichEdit_StreamToFile($hREdit, "bleble.rtf") MsgBox(0, "", "Zmiana tekstu",5) ;zmiana tekstu _GUICtrlRichEdit_SetText($hREdit, "Teraz inny tekst") MsgBox(0,"","Wczytanie tekstu RTF z pliku") ;wczytanie tekstu RTF z pliku do kontrolki _GUICtrlRichEdit_StreamFromFile($hREdit, "bleble.rtf") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;odczyt tekstu z kontrolki $txt = _GUICtrlRichEdit_GetText($hREdit) MsgBox(0,"Tekst odczytany:", $txt) ;likwidacja kontrolki _GUICtrlRichEdit_Destroy($hREdit) </syntaxhighlight> crakz66zmheqgm3v8836dqj1yg2gs8g 558471 558470 2026-10-03T21:54:57Z Wasta 12503 558471 wikitext text/x-wiki =Pasek narzędziowy (Toolbar)= ==Wstęp== Zestaw kontrolek obsługiwanych przez wbudowane funkcje AitoIt nie obejmuje bardzo popularnego w nowszych programach paska narzędziowego. Tworzenie i obsługę tego typu kontrolek umożliwia standardowy UDF o nazwie '''GuiToolbar.au3'''. UDF jest bardzo rozbudowany, zawiera ponad sto funkcji do tworzeni, usuwania, odczytu, ustawiania i zmiany wyglądu elementów paska. Wszystkie nazwy stałych są zdefiniowane w '''ToolbarConstants.au3'''. Dołączenie tych definicji jest realizowane przez '''GuiToolbar.au3''', więc nie trzeba robić tego w programie. ==Funkcje podstawowe== ===_GUICtrlToolbar_Create=== #include <GuiToolbar.au3> _GUICtrlToolbar_Create($hWnd [, $iStyle = 0x800 [, $iExStyle = 0]]) Funkcja tworzy pasek narzędziowy. Zwraca uchwyt do kontrolki, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna GUI, w którym ma być utworzona kontrolka. '''$iStyle''' - styl okna: $TBSTYLE_FLAT | 0x800 | pasek jednowierszowy, tekst pod ikoną (domyślnie) $TBSTYLE_LIST | 0x1000 | pasek jednowierszowy, tekst po prawej stronie ikony $TBSTYLE_WRAPABLE | 0x200 | pasek wielowierszowy (jeżeli przyciski nie mieszczą się w jednym wierszu) $TBSTYLE_TRANSPARENT | 0x8000 | pasek przezroczysty (ale przyciski nie są przezroczyste) '''$iExStyle''' - dodatkowy parametr stylu (domyślna wartość 0): ===_GUICtrlToolbar_AddButton=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddButton($hToolbar, $iID, $iImage [, $iString = 0 [, $iStyle = 0 [, $iState = 4 [, $iParam = 0]]]]) Funkcja dodaje przycisk do paska narzędziowego. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$iImage''' - indeks obrazka na przycisku. Przy korzystaniu z zasobów systemowych jest to: $STD_COPY - Kopiuj (Copy) $STD_CUT - Wytnij (Cut) $STD_DELETE - Usuń (Delete) $STD_FILENEW - Nowy plik (New file) $STD_FILEOPEN - Otwórz plik (Open file) $STD_FILESAVE - Zapisz plik (Save file) $STD_FIND - Szukaj (Find) $STD_HELP - Pomoc (Help) $STD_PASTE - Wklej (Paste) $STD_PRINT - Drukuj (Print) $STD_PRINTPRE - Podgląd wydruku (Print preview) $STD_PROPERTIES - Właściwości (Properties) $STD_REDOW - Ponów (Redo) $STD_REPLACE - Zamień (Replace) $STD_UNDO - Cofnij (Undo) Pozostałe opcjonalnie: '''$iString''' - indeks stringu z opisem przycisku '''$iStyle''' - styl przycisku '''$iState''' - status przycisku '''$IParam''' - dodatkowy parametr (w zasadzie należy używać tylko wartości domyślnej) ===_GUICtrlToolbar_AddButtonSep=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddButtonSep($hToolbar [, $iWidth = 6]) Funkcja wstawia separator do paska narzędziowego. Nie zwraca żadnej wartości. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iWidth''' - szerokość separatora w pikselach (domyślna wartość to 6 pikseli) ===_GUICtrlToolbar_AddBitmap=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddBitmap($hToolbar, $iButtons, $hInst, $iID) '''$hToolbar''' - uchwyt do paska narzędziowego '''$iButtons''' - ilość obrazów przycisków w bitmapie (jeżeli korzystamy z zasobów systemowych parametr ten nie ma znaczenie i może mieć dowolną wartość) '''$hInst''' - uchwyt do instancji modułu z pliku wykonywalnego, który zawiera zasób grafiki rastrowej. Jeżeli chcemy korzystać z zasobów systemowych parametr należy ustawić na '''-1'''. '''$hID''' - ID bitmapy z obrazkami przycisków. Przy korzystaniu z zasobów systemowych jest to ID zasobu: $IDB_STD_LARGE_COLOR - duże standardowe ikony $IDB_STD_SMALL_COLOR - małe standardowe ikony $IDB_VIEW_LARGE_COLOR - duże ikony w bardziej kolorowej wersji $IDB_VIEW_SMALL_COLOR - małe ikony w bardziej kolorowej wersji ===_GUICtrlToolbar_AddString=== #include <GuiToolbar.au3> _GUICtrlToolbar_AddString($hToolbar, $sString) Funkcja dodaje nowy string do opisu przycisków paska narzędziowego. Zwraca numer indeksu, lub -1 gdy wystąpił błąd. Numerowanie rozpoczyna się od 0, kolejno dodawane stringi będą miały indeksy 0, 1, 2, ... itd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$hString''' - string z opisem przycisku ===_GUICtrlToolbar_IsButtonPressed=== #include <GuiToolbar.au3> _GUICtrlToolbar_IsButtonPressed($hToolbar, $iID) Funkcja sprawdza czy został wciśnięty przycisk o podanym ID. Zwraca '''True''' gdy przycisk został wciśnięty, lub '''False''' gdy nie jest wciśnięty. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - numer ID przycisku (jest nadawany przez programistę podczas tworzenia przycisku funkcją '''_GUICtrlToolbar_AddButton''') ==Tworzenie paska narzędziowego== Omówione powyżej funkcję stanowią podstawę do utworzenia paska narzędziowego z opisanymi przyciskami. Można to zrobić np. tak: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> $GUI = GUICreate("Test tworzenia paska narzędziowego:", 400, 200) ;tworzenie okna GUI Local Enum $idOpen=1000, $idSave, $idDelete, $idHlp ;nadanie wartości $hToolbar = _GUICtrlToolbar_Create($GUI) ;utworzenie paska narzędziowego ;opisy na przyciskach _GUICtrlToolbar_AddString($hToolbar, "Otwórz") _GUICtrlToolbar_AddString($hToolbar, "Zapisz") _GUICtrlToolbar_AddString($hToolbar, "Usuń") _GUICtrlToolbar_AddString($hToolbar, "Pomoc") ;obrazki na przyciskach (korzystamy z zasobów systemowych) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_VIEW_LARGE_COLOR) ;tworzenie przycisków _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 0) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, 1) _GUICtrlToolbar_AddButton($hToolbar, $idDelete, $STD_DELETE, 2) _GUICtrlToolbar_AddButtonSep($hToolbar, 12) ;separator _GUICtrlToolbar_AddButtonSep($hToolbar, 0) ;separator _GUICtrlToolbar_AddButton($hToolbar, $idHlp, $STD_HELP, 3) GUISetState() Do Select Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idOpen) MsgBox(0,"Wybrano:","Otwórz",2) Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idSave) MsgBox(0,"Wybrano:","Zapisz",2) Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idDelete) MsgBox(0,"Wybrano:","Usuń",2) Case _GUICtrlToolbar_IsButtonPressed($hToolbar, $idHlp) MsgBox(0,"Wybrano:","Pomoc",2) EndSelect Sleep(5) Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ==Funkcje dodatkowe== ===_GUICtrlToolbar_Destroy=== #include <GuiToolbar.au3> _GUICtrlToolbar_Destroy(ByRef $hToolbar) Funkcja usuwa pasek narzędziowy łącznie z wszystkimi przyciskami. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''$hToolbar''' - uchwyt do kontrolki zwrócony przez funkcję '''_GUICtrlToolbar_Create''' '''UWAGA:''' Funkcja działa tylko na paski narzędziowe utworzone przez '''_GUICtrlToolbar_Create'''. ===_GUICtrlToolbar_ButtonCount=== #include <GuiToolbar.au3> _GUICtrlToolbar_ButtonCount($hToolbar) Funkcja zwraca ilość przycisków na pasku narzędziowym. '''$hToolbar''' - uchwyt do paska narzędziowego '''UWAGA:''' Separatory są także zliczane jak zwykłe przyciski. ===_GUICtrlToolbar_CheckButton=== #include <GuiToolbar.au3> _GUICtrlToolbar_CheckButton($hToolbar, $iID [, $fCheck = True]) Funkcja zaznacza lub usuwa zaznaczenie przycisku. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$Check''' - '''True''' - zaznaczanie przycisku (wartość domyślna), '''False''' - usunięcie zaznaczenia Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> $GUI = GUICreate("Test:", 200, 200) Local Enum $idOpen=1000, $idHlp $hToolbar = _GUICtrlToolbar_Create($GUI) _GUICtrlToolbar_AddString($hToolbar, "Otwórz") _GUICtrlToolbar_AddString($hToolbar, "Pomoc") _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_VIEW_LARGE_COLOR) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 0) _GUICtrlToolbar_AddButtonSep($hToolbar) _GUICtrlToolbar_AddButton($hToolbar, $idHlp, $STD_HELP, 1) GUISetState() Do $msg = GUIGetMsg() _GUICtrlToolbar_CheckButton($hToolbar, $idOpen) Sleep(1000) _GUICtrlToolbar_CheckButton($hToolbar, $idOpen, False) Sleep(1000) Until $msg </syntaxhighlight> ===_GUICtrlToolbar_PressButton=== #include <GuiToolbar.au3> _GUICtrlToolbar_PressButton($hToolbar, $iID [, $fPress = True]) Funkcja symuluje wciśnięci (zwolnienie) przycisku w pasku narzędziowym. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$fPress''' - '''True''' (wartość domyślna) oznacza wciśnięcie przycisku, '''False''' jego zwolnienie Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> Global Enum $idNew = 1000, $idOpen, $idSave, $idHlp $hGUI = GUICreate("Toolbar", 600, 400) $hToolbar = _GUICtrlToolbar_Create($hGUI) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) _GUICtrlToolbar_AddString($hToolbar, "&Nowy") _GUICtrlToolbar_AddString($hToolbar, "&Otwórz") _GUICtrlToolbar_AddString($hToolbar, "&Zapisz") _GUICtrlToolbar_AddString($hToolbar, "&Pomoc") _GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW, 0) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 1) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, 2) _GUICtrlToolbar_AddButtonSep($hToolbar) _GUICtrlToolbar_AddButton($hToolbar, $idHlp, $STD_HELP, 3) GUISetState() Sleep(2000) _GUICtrlToolbar_PressButton($hToolbar, $idSave) ;wciśnięcie przycisku If _GUICtrlToolbar_IsButtonPressed($hToolbar, $idSave) Then MsgBox(0, "Test:", _ "Symulacja wciśnięcia przycisku: Zapisz") _GUICtrlToolbar_PressButton($hToolbar, $idSave, False) ;zwolnienie przycisku Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> === _GUICtrlToolbar_SetButtonText === #include <GuiToolbar.au3> _GUICtrlToolbar_SetButtonText($hToolbar, $iID, $sText) Funkcja zmienia opis przycisków paska narzędziowego. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iID''' - ID przycisku nadane przez programistę '''$sText''' - nowy tekst opisu przycisku '''UWAGA:''' Nowy opis powinien być krótszy od pierwotnego, w przeciwnym razie jego część będzie zastąpiona kropkami. W razie konieczności wydłużyć pierwotny opis dodając na jego końcu odpowiednią ilość spacji. Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> Global Enum $idNew = 1000, $idOpen, $idSave, $idHlp $hGUI = GUICreate("Toolbar", 600, 400) $hToolbar = _GUICtrlToolbar_Create($hGUI) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) _GUICtrlToolbar_AddString($hToolbar, "&New") _GUICtrlToolbar_AddString($hToolbar, "&Open ") _GUICtrlToolbar_AddString($hToolbar, "&Save") _GUICtrlToolbar_AddString($hToolbar, "&Help") _GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW, 0) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, 1) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, 2) _GUICtrlToolbar_AddButtonSep($hToolbar) _GUICtrlToolbar_AddButton($hToolbar, $idHlp, $STD_HELP, 3) GUISetState() Sleep(2000) MsgBox(0, "Test", "Zmiana opisu przycisków") _GUICtrlToolbar_SetButtonText($hToolbar, $idNew, "&Nowy") _GUICtrlToolbar_SetButtonText($hToolbar, $idOpen, "&Otwórz") _GUICtrlToolbar_SetButtonText($hToolbar, $idSave, "&Zapis") _GUICtrlToolbar_SetButtonText($hToolbar, $idHlp, "&Pomoc") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> === _GUICtrlToolbar_SetStyle === #include <GuiToolbar.au3> _GUICtrlToolbar_SetStyle($hToobar, $iStyle) Funkcja ustala styl paska narzędziowego. Zwraca '''True''' gdy sukces, lub '''False''' gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego '''$iStyle''' - kod stylu paska $CCS_TOP - pasek na górze $CCS_BOTTOM - pasek na dole $TBSTYLE_TOOLTIPS - pasek może być wielowierszowy (jeżeli przyciski nie mieszczą się w jednym wierszu) $TBSTYLE_FLAT - pasek jednowierszowy, opis pod spodem odrazka $TBSTYLE_LIST - pasek jednowierszowy, opis z prawej strony obrazka $TBSTYLE_TRANSPARENT - pasek przezroczysty Kody można łączyć za pomocą funkcji BitOR, np.: BitOR($TBSTYLE_WRAPABLE, $CCS_TOP). === _GUICtrlToolbar_GetStyle === #include <GuiToolbar.au3> _GUICtrlToolbar_GetStyle($hToolbar) Funkcja odczytuje kod stylu paska narzędziowego. Zwraca ten kod lub 0 gdy wystąpił błąd. '''$hToolbar''' - uchwyt do paska narzędziowego Przykład: <syntaxhighlight lang="autoit"> #include <GuiToolbar.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Constants.au3> Enum $idNew = 1000, $idOpen, $idSave, $idHlp $hGUI = GUICreate("", 400, 200, 300, 300) $hToolbar = _GUICtrlToolbar_Create($hGUI) ;ustalenie stylu paska _GUICtrlToolbar_SetStyle($hToolbar, BitOR($TBSTYLE_WRAPABLE, $CCS_TOP)) _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) $a1 = _GUICtrlToolbar_AddString($hToolbar, "&Nowy") $a2 = _GUICtrlToolbar_AddString($hToolbar, "&Otwórz") $a3 = _GUICtrlToolbar_AddString($hToolbar, "&Zapis") $a4 = _GUICtrlToolbar_AddString($hToolbar, "&Pomoc") _GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW, $a1) _GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, $a2) _GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, $a3) _GUICtrlToolbar_AddButton($hToolbar, $idHlp, $STD_HELP, $a4) GUISetState() MsgBox(0, "", "Styl: 0x" & Hex(_GUICtrlToolbar_GetStyle($hToolbar))) ;zmiana stylu _GUICtrlToolbar_SetStyle($hToolbar, BitOR($TBSTYLE_LIST, $CCS_BOTTOM)) GUISetState() MsgBox(0, "", "Styl: 0x" & Hex(_GUICtrlToolbar_GetStyle($hToolbar))) </syntaxhighlight> =Edytor tekstu w formacie RTF= ==Wstęp== Podstawowy zestaw kontrolek Autoit zawiera tylko edytor czystego tekstu (txt). W bibliotece standardowej znajduje się biblioteka funkcji do obsługi bardziej zaawansowanego formatu RTF (Rich Text Format). Format ten opracowany w 1987 r. przez Microsoft umożliwia zmianę wielkości, kroju i koloru czcionki oraz tworzenie tabel. Jest bardzo popularny i dostępny niemal w każdym bardziej zaawansowanym edytorze tekstu. Funkcje do obsługi kontrolki edytora RTF zawarte są w UDF o nazwie GuiRichEdit.au3. Jest on bardzo rozbudowany i zawiera prawie sto funkcji. ==Podstawowe funkcje do tworzenie kontrolki RTF== ===_GUICtrlRichEdit_Create=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_Create($hWnd, $sText, $iLeft, $iTop [, $iWidth = 150 [, $iHeight = 150 [, $iStyle = -1 [, $iExStyle = -1]]]]) Funkcja tworzy kontrolkę edytora RTF. Zwraca uchwyt do kontrolki lub 0 gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 103 - $iLeft < 0 104 - $iTop < 0 105 - $iWidth nie jest >0 lub równe -1 106 - $iHeight nie jest >0 lub równe -1 107 - $iStyle nie jest >0 lub równe -1 108 - $iExStyle nie jest >0 lub równe -1 UWAGA: -1 oznacza wartość domyślną '''$hWnd''' - uchwyt do okna GUI, w którym ma być utworzona kontrolka '''$sText''' - tekst do wstawienia w kontrolce '''$iLeft''' i '''$iTop''' - współrzędne lewego górnego narożnika kontrolki '''$iWidth''' - szerokość kontrolki '''$iHeight''' - wysokość kontrolki '''$iStyle''' - styl kontrolki $ES_AUTOHSCROLL - automatyczne przewijanie tekstu w prawo o 10 znaków, gdy użytkownik wpisze znak na końcu linii $ES_AUTOVSCROLL - automatycznie przewija tekst o stronę, gdy użytkownik naciśnie klawisz ENTER w ostatniej linii $WS_HSCROLL - kontrolka z poziomym pasekiem przewijania $WS_VSCROLL - kontrolka z pionowym paskiem przewijania $ES_CENTER - centrowanie tekstu $ES_LEFT - wyrównanie tekstu do lewego marginesu $ES_MULTILINE - tekst wielowierszowy (domyślne) $ES_NOHIDESEL - zaznaczony tekst jest w negatywie, nawet jeśli kontrola nie jest aktywna $ES_NUMBER - pozwala wpisywać tylko cyfry $ES_READONLY - tekst tylko do odzczytu, edycja zablokowana $ES_RIGHT - wyrównanie tekstu do prawego marginesu $ES_WANTRETURN - powrót karetki po naciśnięciu ENTER (ustawienie domyślne) $ES_PASSWORD - wyświetla gwiazdki (*) zamiast znaków wpisanych do pola edycyjnego '''$iExStyle''' - kod rozszerzenia stylu, wg standardowych stałych $WS_EX_... '''UWAGA:''' 1. Kody można łączyć za pomocą funkcji BitOR. 2. Przed zakończeniem skryptu należy użyć funkcji _GUICtrlRichEdit_Destroy(). ===_GUICtrlRichEdit_Destroy=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_Destroy(ByRef $hRTF) Funkcja usuwa kontrolkę edytora RTF. Zwraca TRUE gdy sukces, jednocześnie zerując zmienną zawierającą uchwyt do kontrolki. Jeżeli wystąpił błąd funkcja zwraca 0, a makro @error przyjmuje wartość -1 (funkcja próbuje zniszczyć kontrolkę należącą do innej aplikacji). '''$hRTF''' - uchwyt do kontrolki edytora RTF ===_GUICtrlRichEdit_AppendText=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_AppendText($hRTF, $sText) Funkcja dodaje tekst do tekstu w kontrolce (na końcu). Zwraca TRUE gdy sukces, FALSE gdy wystąpił błąd (@error przyjmuje wartość 101 - $hRTF nie zawiera uchwytu do kontrolki). '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sText''' - dopisywany tekst ===_GUICtrlRichEdit_SetText=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_SetText($hRTF, $sText) Funkcja nadpisuje tekst w kontrolce. Zwraca TRUE gdy sukces, FALSE gdy wystąpił błąd (@error przyjmuje wartość 101 - $hRTF nie zawiera uchwytu do kontrolki). '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sText''' - nadpisywany tekst ===_GUICtrlRichEdit_GetText=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_GetText($hRTF [, $fCrToCrLf = False [, $iCodePage = 0 [, $sReplChar = ""]]]) Funkcja zwraca pobrany tekst z kontrolki RTF. Jeżeli wystąpił błąd zwraca pusty string "", a makro @error przyjmuje wartość: 101 - $hRTF nie zawiera uchwytu 102 - $fCrToCrLf ma inną wartość niż TRUE lub FALSE 103 - $iCodePage nie jest liczbą 700 - błąd wewnętrzny '''$fCrToCrLf''' - konwersja każdego CR na CRLF, TRUE - tak, FALSE - nie (wartość domyślna) '''$iCodePage''' - strona kodowa używana w tłumaczeniu, domyślna wartość 0, co oznacza domyślne ustawienie w systemie, CP_ACP - ANSI, 1200 - Unicode '''$sReplChar''' - znak jaki ma być wstawiony w miejsce znaku występującego w odczytanym tekście, jeżeli nie występuje on w zadeklarowanej stronie kodowej. Domyślnie jest to pusty string, czyli znak zostanie pominięty. Makro @extended zawiera ilość podmian. '''UWAGA:''' Zwracany jest czysty tekst, bez znaków formatujących. ===_GUICtrlRichEdit_StreamFromFile=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamFromFile($hRTF, $sFilespec) Funkcja wczytuje z pliku do kontrolki tekst w formacie RTF. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 1121 - nie można otworzyć pliku 1122 - plik jest pusty 700 - próba przesłania zbyt wielu znaków '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sFilespec''' - nazwa pliku do wczytania ===_GUICtrlRichEdit_StreamFromVar=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamFromVar($hRTF, $sVar) Funkcja wczytuje ze zmiennej do kontrolki tekst w formacie RTF. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 700 - próba przesłania zbyt wielu znaków '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sVar''' - nazwa zmiennej do wczytania ===_GUICtrlRichEdit_StreamToFile=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamToFile($hRTF, $sFilespec [, $fIncludeCOM=True [, $iOpts=0 [, $iCodePage = 0]]]) Funkcja zapisuje tekst z kontrolki do pliku zachowując format RTF lub TXT. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 102 - nie można utworzyć pliku 1041 - $SFF_PLAINRTF nieprawidłowy dla pliku tekstowego 1042 - $opts: nieprawidłowa opcja 1043 - $SF_UNICODE jest ważne tylko dla pliku tekstowego 700 - błąd wewnętrzny '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$sFilespec''' - nazwa pliku do zapisania, jeżeli rozszerzenie jest .rtf (np. "tekst.rtf"), to plik będzie zapisany w formacie RTF, w przeciwnym razie jako TXT. '''$fIncludeCOM''' - '''$iOpts''' - dodatkowe opcje, domyślnie 0 '''$iCodePage''' - generowanie tekstu UTF-8 przy użyciu tej strony kodowej ===_GUICtrlRichEdit_StreamToVar=== #include <GuiRichEdit.au3> _GUICtrlRichEdit_StreamToVar($hRTF [, $fRtf = True [, $fIncludeCOM=True [, $iOpts=0 [, $iCodePage = 0]]]]) Funkcja zwraca tekst z kontrolki w formacie RTF lub TXT, lub string pusty "" jeżeli wystąpił błąd. Makro @error przyjmuje wtedy wartość: 101 - $hRTF nie zawiera uchwytu 1041 - $SFF_PLAINRTF nieprawidłowy dla pliku tekstowego 1042 - $opts: nieprawidłowa opcja 1043 - $SF_UNICODE jest ważne tylko dla pliku tekstowego 700 - internal error '''$hRTF''' - uchwyt do kontrolki edytora RTF '''$fRtf''' - TRUE - zwracany tekst w formacie RTF, FALSE - zwracany tylko czysty tekst (TXT) '''$fIncludeCOM''' - '''$iOpts''' - dodatkowe opcje, domyślnie 0 '''$iCodePage''' - generowanie tekstu UTF-8 przy użyciu tej strony kodowej ==Tworzenie i obsługa kontrolki edytora RTF== <syntaxhighlight lang="autoit"> #include <GuiRichEdit.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> ;tworzenie okna GUI $hGui = GUICreate("Test edytora RTF", 320, 300) ;tworzenie kontrolki edytora RTF $hREdit = _GUICtrlRichEdit_Create($hGui, "Tekst początkowy.", 10, 10, 300, 250, _ BitOR($WS_HSCROLL, $WS_VSCROLL, $ES_MULTILINE)) GUISetState() MsgBox(0, "", "Dopisanie tekstu",5) ;dopisywanie tekstu do kontrolki (z użyciem znaków kontrolnych formatu RTF) _GUICtrlRichEdit_AppendText($hREdit, "{\rtf \par Dopisuję trochę {\b wytłuszczonego tekstu}.\par }") ;zapisanie do pliku tekstu w formacie RTF _GUICtrlRichEdit_StreamToFile($hREdit, "bleble.rtf") MsgBox(0, "", "Zmiana tekstu",5) ;zmiana tekstu _GUICtrlRichEdit_SetText($hREdit, "Teraz inny tekst") MsgBox(0,"","Wczytanie tekstu RTF z pliku") ;wczytanie tekstu RTF z pliku do kontrolki _GUICtrlRichEdit_StreamFromFile($hREdit, "bleble.rtf") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;odczyt tekstu z kontrolki $txt = _GUICtrlRichEdit_GetText($hREdit) MsgBox(0,"Tekst odczytany:", $txt) ;likwidacja kontrolki _GUICtrlRichEdit_Destroy($hREdit) </syntaxhighlight> 9e1n9n66n5mm4oehznguz8lc0dr8u2q AutoIt/Funkcje interfejsu GDI+ 0 27723 558472 399130 2026-10-03T23:12:22Z Wasta 12503 558472 wikitext text/x-wiki =Co to jest GDI?= Za Wiki: GDI (''Graphics Device Interface'') jeden z trzech podstawowych komponentów (razem z jądrem i API Windows) interfejsu użytkownika (menedżera okien GDI) w Microsoft Windows. GDI odpowiedzialne jest za przedstawianie obiektów graficznych i przesyłanie ich do urządzeń wyjściowych, takich jak monitory i drukarki. Zestaw funkcji GDI umożliwia: - zarządzanie kontekstem urządzenia (jego tworzeniem, zwalnianiem, odczytem i ustawianiem jego atrybutów), - rysowanie (wyświetlanie tekstów, linii, prostokątów, bitmap itp.), - określanie cech obiektów rysujących. Począwszy od Windows XP, GDI jest zastępowane przez GDI+. Wbudowane funkcje AutoIt'a nie wykorzystują nowych możliwości tego interfejsu. Aby z nich skorzystać należy użyć standardowego UDF'u zawartego w pliku '''GDIPlus.au3'''. Biblioteka zawiera wiele funkcji znacznie powiększających możliwości graficzne języka. ==Kontekst urządzenia - Device context (DC)== Operacje graficzne w systemie Windows wykonywane są nie bezpośrednio na obiekcie ale na tzw. kontekście urządzenia. Dzięki wprowadzeniu kontekstu urządzenia możliwe stało się ujednolicenie funkcji graficznych zawartych w API. Każda z funkcji operuje na konkretnym kontekście urządzenia, który w rzeczywistości może oznaczać ekran monitora, drukarkę, czy też mapę bitową utworzoną w pamięci. Zrozumiałe jest, że nie każda operacja graficzna jest możliwa do wykonania na każdym kontekście urządzenia. Każdy kontekst urządzenia pomiędzy kolejnymi operacjami graficznymi pamięta wszystkie atrybuty, jakie poprzednio stosowaliśmy. Dzięki temu nie musimy za każdym razem tworzyć lub wybierać pióra do rysowania linii, pędzla do malowania obszarów, czy czcionki do pisania tekstu. W każdej chwili możemy w danym kontekście urządzenia użyć inne, nowe pióro, inny pędzel, czy czcionkę równocześnie zmieniając kolor narzędzia, tła, wielkość i inne atrybuty. Ponieważ w systemie Windows nie istnieje standardowe urządzenie graficzne, na którym moglibyśmy wykonywać operacje graficzne, za każdym razem, gdy chcemy coś narysować, musimy pobrać z systemu Windows kontekst urządzenia. Pobranie kontekstu urządzenia, to nic innego jak uzyskanie z systemu Windows identyfikatora kontekstu urządzenia. Takim identyfikatorem jest uchwyt kontekstu urządzenia '''hdc'''. Identyfikowany poprzez swój uchwyt kontekst urządzenia jest strukturą zarządzaną przez system Windows i zawierającą nie tylko obiekt przeznaczony do wykonywanych operacji graficznych, ale przechowującą również wiele informacji o obiektach rysujących i parametrach określających tryby stosowane przez funkcje GDI podczas rysowania w kontekście urządzenia. Należy mieć świadomość, że wszystkie funkcje GDI działają na kontekstach urządzeń, nawet jeżeli w sposób jawny nie odwołują się do nich. =Tworzenie szkieletu= Poniższe dwie funkcje (_GDIPlus_Startup i _GDIPlus_Shutdown) tworzą w programie blok, wewnątrz którego można korzystać z innych funkcji interfejsu GDI+. ===_GDIPlus_Startup=== #include <GDIPlus.au3> _GDIPlus_Startup() Funkcja inicjuje interfejs GDI+. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Nie przyjmuje żadnych parametrów. Funkcja ta musi zostać użyta przed użyciem innych funkcji korzystających z interfejsu GDI+. ===_GDIPlus_Shutdown=== #include <GDIPlus.au3> _GDIPlus_Shutdown() Funkcja zamyka dostęp do interfejsu GDI+. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Nie przyjmuje żadnych parametrów. Funkcji tej należy użyć po zakończeniu korzystania z GDI+, celem zwolnienia zasobów. Przedtem należy zlikwidować wszystkie utworzone obiekty graficzne (funkcjami '''_GDIPlus_...Dispose'''). Szkielet bloku programu korzystającego z funkcji GDI+: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> _GDIPlus_Startup() ;blok programu korzystający z interfejsu GDI+ _GDIPlus_Shutdown() </syntaxhighlight> =Tworzenie zasobów= ==Obiekt graphics (obszar rysowania)== ===_GDIPlus_GraphicsCreateFromHWND=== #include <GDIPlus.au3> _GDIPlus_GraphicsCreateFromHWND($hWnd) Funkcja tworzy obiekt graphics w oknie (lub kontrolce) o podanym uchwycie. Zwraca uchwyt do tego obiektu, lub 0 gdy wystąpił błąd. W obiekcie tym można następnie umieszczać inne obiekty graficzne (np. odcinki, elipsy, krzywe, teksty, itp.). Jest to jakby przestrzeń do rysowania. '''$hWnd''' - uchwyt do okna lub kontrolki '''UWAGA:''' Funkcja umożliwia umieszczanie elementów graficznych w dowolnym oknie (jeżeli tylko znamy uchwyt do niego), a nie tylko w oknie skryptu. Likwidacja obiektu za pomocą '''_GDIPlus_GraphicsDispose'''. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() ;tworzenie obiektu graficznego na oknie $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsDrawString($hGraphic, "Witajcie!", 150, 150) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsCreateFromHDC=== #include <GDIPlus.au3> _GDIPlus_GraphicsCreateFromHDC($hDC) Funkcja tworzy obiekt graphics na kontekście urządzenia o podanym uchwycie. Zwraca uchwyt do tego obiektu, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu urządzenia, dla okna jest zwracany przez funkcję _WinAPI_GetWindowDC (UDF '''WinAPI.au3''') Likwidacja obiektu za pomocą '''_GDIPlus_GraphicsDispose'''. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() ;pobranie uchwytu do kontekstu okna $hDC = _WinAPI_GetWindowDC($hGUI) _GDIPlus_Startup() ;tworzenie obiektu graficznego na kontekście okna $hGraphic = _GDIPlus_GraphicsCreateFromHDC($hDC) _GDIPlus_GraphicsDrawString($hGraphic, "Witajcie!", 150, 150) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_GraphicsDispose($hGraphic) _WinAPI_ReleaseDC($hGUI, $hDC) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsDispose=== #include <GDIPlus.au3> _GDIPlus_GraphicsDispose($hGraphics) Funkcja likwiduje obiekt graphics utworzony przez _GDIPlus_GraphicsCreateFromHWND. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' i '''_GDIPlus_GraphicsCreateFromHDC''' ==Obiekt pen (pióro)== Poniższy zestaw funkcji służy do tworzenia wirtualnego pióra, nadawania i odczytywania jego właściwości (kolor, szerokość i rodzaj rysowanej linii, sposób jej zakończenia i położenie względem konturu teoretycznego). Piórem tym można następnie rysować różna obiekty graficzne jak odcinki, krzywe, wielokąty, okręgi, elipsy itp. ===_GDIPlus_PenCreate=== #include <GDIPlus.au3> _GDIPlus_PenCreate([$iARGB = 0xFF000000 [, $nWidth = 1 [, $iUnit = 2]]]) Funkcja tworzy pióro, którym będzie można rysować różne obiekty graficzne. Zwraca uchwyt do pióra, lub 0 gdy wystąpił błąd. '''$iARGB''' - składowe koloru pędzla, po dwa bajty aarrggbb (np. 0xEEFF1055), gdzie: aa - przezroczystość (kanał alfa) od 00 (całkowicie przezroczysty) do FF (całkowicie nieprzezroczysty) rr, gg, bb - składowe poszczególnych kolorów RGB, wartości od 00 do FF Wartość domyślna (0xFF000000) to całkowicie nieprzezroczysty kolor czarny. '''$nWidth''' - szerokość pióra w jednostkach określonych przez '''$iUnit''', domyślnie 1 jednostka '''$iUnit''' - jednostka szerokości pióra, domyślnie 2 piksele Likwidacja obiektu za pomocą '''_GDIPlus_PenDispose'''. ===_GDIPlus_PenCreate2=== #include <GDIPlus.au3> _GDIPlus_PenCreate2 ( $hBrush [, $fWidth = 1 [, $iUnit = 2]] ) Funkcja tworzy pióro na podstawie atrybutów wcześniej zdefiniowanego pędzla. Zwraca uchwyt do pióra, lub 0 gdy wystąpił błąd. '''$hBrush''' - uchwyt do pędzla '''$nWidth''' - szerokość pióra w jednostkach określonych przez '''$iUnit''', domyślnie 1 jednostka '''$iUnit''' - jednostka szerokości pióra, domyślnie 2 piksele Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> $hGUI = GUICreate("Elipsa spektrum", 600, 200) GUISetBkColor(0, $hGUI) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $tRectF = _GDIPlus_RectFCreate(0, 0, 600, 200) ;tworzenie pędzla z gradientem liniowym $hBrush = _GDIPlus_LineBrushCreateFromRect($tRectF, 0, 0, 0, 1) ;tablica z danymi gradientu wielokolorowego Dim $aInterpolations[6][2] $aInterpolations[0][0] = 5 $aInterpolations[1][0] = 0xFFD00000 ;Czerwony $aInterpolations[1][1] = 0 $aInterpolations[2][0] = 0xFFFFFF00 ;Żółty $aInterpolations[2][1] = 0.25 $aInterpolations[3][0] = 0xFF00FF00 ;Zielony $aInterpolations[3][1] = 0.5 $aInterpolations[4][0] = 0xFF0080FF ;Niebieski $aInterpolations[4][1] = 0.75 $aInterpolations[5][0] = 0xFF7000A0 ;Fioletowy $aInterpolations[5][1] = 1 _GDIPlus_LineBrushSetPresetBlend($hBrush, $aInterpolations) $hPen = _GDIPlus_PenCreate2($hBrush, 10) ;utworzenie pióra na podstawie atrybutów pędzla _GDIPlus_GraphicsDrawEllipse($hGraphics, 10, 10, 580, 180, $hPen) ;rysowanie elipsy Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_PenDispose($hPen) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() GUIDelete($hGUI) </syntaxhighlight> ===_GDIPlus_PenDispose=== #include <GDIPlus.au3> _GDIPlus_PenDispose($hPen) Funkcja likwiduje pióro utworzony przez _GDIPlus_PenCreate. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' ===_GDIPlus_PenSetColor=== #include <GDIPlus.au3> _GDIPlus_PenSetColor($hPen, $iARGB) Funkcja zmienia kolor pióra. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' '''$iARGB''' - składowe koloru pędzla, po dwa bajty aarrggbb (np. 0xEEFF1055), gdzie: aa - przezroczystość (kanał alfa) od 00 (całkowicie przezroczysty) do FF (całkowicie nieprzezroczysty) rr, gg, bb - składowe poszczególnych kolorów RGB, wartości od 00 do FF ===_GDIPlus_PenGetColor=== #include <GDIPlus.au3> _GDIPlus_PenGetColor($hPen) Funkcja odczytuje kolor pióra. Zwraca kod koloru (format jak w _GDIPlus_PenSetColor), lub -1 gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' ===_GDIPlus_PenSetWidth=== #include <GDIPlus.au3> _GDIPlus_PenSetWidth($hPen, $fWidth) Funkcja zmienia szerokość pióra. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' '''$fWidth''' - szerokość pióra ===_GDIPlus_PenGetWidth=== #include <GDIPlus.au3> _GDIPlus_PenGetWidth($hPen) Funkcja odczytuje i zwraca szerokość pióra. Jeżeli wystąpi błąd zwraca -1. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' ===_GDIPlus_PenSetEndCap=== #include <GDIPlus.au3> _GDIPlus_PenSetEndCap($hPen, $iEndCap) Funkcja zmienia rodzaj zakończenia linii rysowanej piórem. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' '''$iEndCap''' - kod rodzaju zakończenia lini: $GDIP_LINECAPFLAT - zakończenie płaskie $GDIP_LINECAPSQUARE - kwadrat o wymiarach grubości pióra $GDIP_LINECAPROUND - półkole $GDIP_LINECAPTRIANGLE - trójkąt $GDIP_LINECAPNOANCHOR - bez zakończenia $GDIP_LINECAPSQUAREANCHOR - kwadrat $GDIP_LINECAPROUNDANCHOR - koło $GDIP_LINECAPDIAMONDANCHOR - diament $GDIP_LINECAPARROWANCHOR - grot strzałki $GDIP_LINECAPCUSTOM - niestandardowe, zdefiniowane przez _GDIPlus_PenSetCustomEndCap Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 410, 350) GUISetState() ;tworzenie obiektów graficznych _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xFF000000, 12) ;rysowanie odcinków różnie zakńczonych _GDIPlus_PenSetEndCap($hPen, $GDIP_LINECAPFLAT) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 30, 390, 30, $hPen) _GDIPlus_PenSetEndCap($hPen, $GDIP_LINECAPSQUARE) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 60, 390, 60, $hPen) _GDIPlus_PenSetEndCap($hPen, $GDIP_LINECAPROUND ) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 90, 390, 90, $hPen) _GDIPlus_PenSetEndCap($hPen, $GDIP_LINECAPTRIANGLE) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 120, 390, 120, $hPen) _GDIPlus_PenSetEndCap($hPen, $GDIP_LINECAPNOANCHOR) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 150, 390, 150, $hPen) _GDIPlus_PenSetEndCap($hPen, $GDIP_LINECAPSQUAREANCHOR) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 180, 390, 180, $hPen) _GDIPlus_PenSetEndCap($hPen, $GDIP_LINECAPROUNDANCHOR) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 210, 390, 210, $hPen) _GDIPlus_PenSetEndCap($hPen, $GDIP_LINECAPDIAMONDANCHOR) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 240, 390, 240, $hPen) _GDIPlus_PenSetEndCap($hPen, $GDIP_LINECAPARROWANCHOR) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 270, 390, 270, $hPen) _GDIPlus_PenSetEndCap($hPen, $GDIP_LINECAPCUSTOM) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 300, 390, 300, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PenGetEndCap=== #include <GDIPlus.au3> _GDIPlus_PenGetEndCap($hPen) Funkcja odczytuje rodzaj zakończenia linii rysowanej piórem. Zwraca kod zakończenia (wartości jak w _GDIPlus_PenSetEndCap), lub -1 gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' ===_GDIPlus_PenSetStartCap=== #include <GDIPlus.au3> _GDIPlus_PenSetStartCap ( $hPen, $iLineCap ) Funkcja zmienia rodzaj początku linii rysowanej piórem. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra '''$iLineCap''' - określa wygląd początku linii rysowanej piórem: 0x00 - linia równo obcięta, bez dodatkowego zakończenie 0x01 - linia rozpoczęta prostokątem o długości równej połowie szerokości pióra 0x02 - linia rozpoczęta półkolem o promieniu równym połowie grubości pióra 0x03 - linia rozpoczęta trójkątem równobocznym o wysokości równej połowie grubości pióra 0x10 - jak 0x00 0x11 - linia rozpoczęta kwadratem, środek kwadratu w punkcie początkowym linii 0x12 - linia rozpoczęta kołem, środek koła w punkcie początkowym linii 0x13 - linia rozpoczęta kwadratem, środek kwadratu w punkcie początkowym linii, przekątna kwadratu wzdłuż osi linii 0x14 - linia rozpoczęta od grotu strzałki, ostrze grotu w punkcie początkowym linii 0xFF - początek linii zdefiniowany w obiekcie CustomLineCap Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 450, 800) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xFFAA00FF, 40) Local $aTab[] = [0, 1, 2, 3, 0x10, 0x11, 0x12, 0x13, 0x14, 0xff] For $iLineCap In $aTab _GDIPlus_GraphicsDrawString($hGraphic, "LineCap = " & $iLineCap, 30, 35) _GDIPlus_PenSetStartCap($hPen, $iLineCap ) _GDIPlus_GraphicsDrawLine($hGraphic, 200, 40, 400, 40, $hPen) _GDIPlus_GraphicsTranslateTransform($hGraphic, 0, 80) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PenSetCustomEndCap=== #include <GDIPlus.au3> _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) Funkcja ustala niestandardowe zakończenie linii. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' '''$hEndCap''' - uchwyt do obiektu będącym niestandardowym zakończeniem linii Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 600, 600) $gr=GUICtrlCreateGraphic(150,200,400,300) GUICtrlSetBkColor($gr,0xffff00) ;kolor tła okienka GUICtrlSetColor($gr,0) GUISetState() ;tworzenie zasobów _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND(ControlGetHandle("","",$gr)) $hPen = _GDIPlus_PenCreate(0xFF0000FF, 2) ;tworzenie niestandardowego zakończenia w postaci grotu strzałki $hEndCap = _GDIPlus_ArrowCapCreate(6, 6) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) ;rysownie strzałek _GDIPlus_GraphicsDrawLine($hGraphic, 10, 120, 390, 120, $hPen) _GDIPlus_PenSetWidth($hPen, 4) _GDIPlus_GraphicsDrawLine($hGraphic, 390, 150, 10, 50, $hPen) _GDIPlus_PenSetWidth($hPen, 6) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 180, 390, 180, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_ArrowCapDispose($hEndCap) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PenGetCustomEndCap=== #include <GDIPlus.au3> _GDIPlus_PenGetCustomEndCap($hPen) Funkcja odczytuje i zwraca uchwyt do obiektu graficznego będącego niestandardowym zakończeniem linii. Jeżeli wystąpi błąd zwracane jest 0. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' ===_GDIPlus_PenSetDashStyle=== #include <GDIPlus.au3> _GDIPlus_PenSetDashStyle($hPen [, $iStyle = 0]) Funkcja zmienia rodzaj linii rysowanej piórem. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' '''$iStyle''' - kod rodzaju lini: $GDIP_DASHSTYLESOLID - ciągła $GDIP_DASHSTYLEDASH - przerywana $GDIP_DASHSTYLEDOT - punktowa $GDIP_DASHSTYLEDASHDOT - przerywano - punktowa $GDIP_DASHSTYLEDASHDOTDOT - przerywano - dwupunktowa $GDIP_DASHSTYLECUSTOM - zdefiniowana przez użytkownika '''UWAGA:''' - w UDF'ie brak funkcji do definiowania rodzaju linii. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() ;tworzenie zasobów _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xFF000000, 8) ;rysowanie różnych rodzajów lini _GDIPlus_PenSetDashStyle($hPen, $GDIP_DASHSTYLESOLID) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 50, 390, 50, $hPen) _GDIPlus_PenSetDashStyle($hPen, $GDIP_DASHSTYLEDASH) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 80, 390, 80, $hPen) _GDIPlus_PenSetDashStyle($hPen, $GDIP_DASHSTYLEDOT) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 110, 390, 110, $hPen) _GDIPlus_PenSetDashStyle($hPen, $GDIP_DASHSTYLEDASHDOT) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 140, 390, 140, $hPen) _GDIPlus_PenSetDashStyle($hPen, $GDIP_DASHSTYLEDASHDOTDOT) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 170, 390, 170, $hPen) _GDIPlus_PenSetDashStyle($hPen, $GDIP_DASHSTYLECUSTOM) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 200, 390, 200, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PenGetDashStyle=== #include <GDIPlus.au3> _GDIPlus_PenGetDashStyle($hPen) Funkcja zwraca kod rodzaju rysowanej przez pióro linii (wartości jak dla _GDIPlus_PenSetDashStyle), lub -1 gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' ===_GDIPlus_PenSetAlignment=== #include <GDIPlus.au3> _GDIPlus_PenSetAlignment($hPen [, $iAlignment = 0]) Funkcja ustala położenie rysowanej linii względem konturu teoretycznego. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Funkcja ma zastosowanie tylko do konturów zamkniętych. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' '''$iAlignment''' - 0 symetrycznie względem konturu teoretycznego, 1 do wnętrza figury Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 400) GUISetState() ;tworzenie zasobów _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xFF000000, 18) ;rysowanie elips _GDIPlus_PenSetAlignment($hPen, 1) _GDIPlus_GraphicsDrawEllipse($hGraphic, 130, 100, 140, 70, $hPen) _GDIPlus_PenSetAlignment($hPen, 0) _GDIPlus_GraphicsDrawEllipse($hGraphic, 130, 200, 140, 70, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PenGetAlignment=== #include <GDIPlus.au3> _GDIPlus_PenGetAlignment($hPen) Funkcja zwraca kod położenia linii względem konturu teoretycznego (0 symetrycznie względem konturu teoretycznego, 1 do wnętrza figury), lub -1 gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra zwrócony przez '''_GDIPlus_PenCreate''' ===_GDIPlus_PenSetLineCap=== #include <GDIPlus.au3> _GDIPlus_PenSetLineCap ( $hPen, $iStartCap, $iEndCap, $iDashCap ) Funkcja ustawia rodzaj linii oraz rodzaj jej rozpoczęcia i zakończenia. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra '''$iStartCap''', '''$iEndCap''' - określają rodzaj rozpoczęcia i zakończenia linii: 0x00 - linia równo obcięta, bez dodatkowego elementów 0x01 - linia rozpoczęta (zakończona) prostokątem o długości równej połowie szerokości pióra 0x02 - linia rozpoczęta (zakończona) półkolem o promieniu równym połowie grubości pióra 0x03 - linia rozpoczęta (zakończona) trójkątem równobocznym o wysokości równej połowie grubości pióra 0x10 - jak 0x00 0x11 - linia rozpoczęta (zakończona) kwadratem, środek kwadratu w punkcie początkowym linii 0x12 - linia rozpoczęta (zakończona) kołem, środek koła w punkcie początkowym linii 0x13 - linia rozpoczęta (zakończona) kwadratem, środek kwadratu w punkcie początkowym linii, przekątna kwadratu wzdłuż osi linii 0x14 - linia rozpoczęta (zakończona) od grotu strzałki, ostrze grotu w punkcie początkowym linii 0xFF - początek (koniec) linii zdefiniowany w obiekcie CustomLineCap '''$iDashCap''' - określa sposób zakończenia odcinków linii przerywanej: 0 - proste 2 - zaokrąglone 3 - trójkątne Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 700, 750) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xFFAA00FF, 20) _GDIPlus_PenSetDashStyle($hPen, $GDIP_DASHSTYLEDASH) Local $aTab[] = [0, 1, 2, 3, 0x10, 0x11, 0x12, 0x13, 0x14] For $iLineCap In $aTab _GDIPlus_GraphicsDrawString($hGraphic, "LineCap = " & $iLineCap, 30, 35) $iEndCap = $iLineCap _GDIPlus_PenSetLineCap($hPen, $iLineCap, $iEndCap, 2) _GDIPlus_GraphicsDrawLine($hGraphic, 200, 40, 600, 40, $hPen) _GDIPlus_GraphicsTranslateTransform($hGraphic, 0, 80) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PenSetLineJoin=== #include <GDIPlus.au3> _GDIPlus_PenSetLineJoin ( $hPen, $iLineJoin ) Funkcja ustawia kształt łączenia linii rysowanych piórem. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra '''$iLineJoin''' - współczynnik określający kształt łączenia linii: 0 - ostry lub przycięty narożnik, zależnie od ustawienia funkcji '''_GDIPlus_PenSetMiterLimit''' 1 - ścięty narożnik 2 - zaokrąglony narożnik 3 - ostry lub przycięty narożnik, zależnie od ustawienia funkcji '''_GDIPlus_PenSetMiterLimit''' i kąta między liniami Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> $hGUI = GUICreate("GDI+", 900, 650) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;wygładzenie linni $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddLine($hPath, 50, 550, 70, 200) _GDIPlus_PathAddLine($hPath, 70, 200, 130, 550) _GDIPlus_PathAddLine($hPath, 130, 550, 220, 400) $fPenWidth = 28 $hPen1 = _GDIPlus_PenCreate(0xFF000000, 1) $hPen = _GDIPlus_PenCreate(0xFFFF0000, $fPenWidth) _GDIPlus_PenSetMiterLimit($hPen, 8) For $i = 0 To 3 _GDIPlus_GraphicsDrawString($hGraphic, "LineJoin = " & $i, 30, 30) _GDIPlus_PenSetLineJoin ($hPen, $i) ;ustawienie kształtu połączenia linii _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen1) _GDIPlus_GraphicsTranslateTransform($hGraphic, 220, 0) ;przesunięcie układu Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_PenDispose($hPen1) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PenSetMiterLimit=== #include <GDIPlus.au3> _GDIPlus_PenSetMiterLimit ( $hPen, $fMiterLimit ) Funkcja ustawia próg ścięcia pióra. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra '''$fMiterLimit''' - liczba rzeczywista określająca próg ścięcia pióra. Wartość od 1.0 w górę. Jeżeli wstawimy liczbę mniejszą to zostanie ona zastąpiona przez 1.0. ===_GDIPlus_PenGetMiterLimit=== #include <GDIPlus.au3> _GDIPlus_PenGetMiterLimit ( $hPen ) Funkcja zwraca wartość progu ścięcia pióra, lub -1 gdy wystąpił błąd. '''$hPen''' - uchwyt do pióra Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> $hGUI = GUICreate("GDI+", 800, 600) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;wygładzenie linni $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddLine($hPath, 30, 550, 70, 200) _GDIPlus_PathAddLine($hPath, 70, 200, 110, 550) $fPenWidth = 28 $hPen1 = _GDIPlus_PenCreate(0xFF000000, 1) For $i = 0 To 6 _GDIPlus_GraphicsDrawLine($hGraphic, 0, 200 - $fPenWidth * 0.5 * $i, 800, 200 - $fPenWidth * 0.5 * $i, $hPen1) Next $hPen = _GDIPlus_PenCreate(0xFFFF0000, $fPenWidth) For $i = 1 To 5 _GDIPlus_PenSetMiterLimit($hPen, $i) _GDIPlus_GraphicsDrawString($hGraphic, "MiterLimit = " & _GDIPlus_PenGetMiterLimit($hPen), 20, 20) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen1) _GDIPlus_GraphicsTranslateTransform($hGraphic, 130, 0) ;przesunięcie układu współrzędnych Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_PenDispose($hPen1) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ==Obiekty brush (Pędzel)== Pędzle służą do zamalowywania obszarów i wpisywania tekstów. W AutoIt 3.3.10.2 można używać pędzli pięciu rodzajów (wcześniej tylko typu solid): - jednolity kolor (Solid Brush) - kreskowanie (Hatch Brush) - gradient liniowy (Line Brush) - gradient wzdłuż ścieżki (Path Brush) - tekstura (Texture Brush) Poniżej trzy funkcje działające na wszystkich rodzajach pędzli: ===_GDIPlus_BrushClone=== #include <GDIPlus.au3> _GDIPlus_BrushClone($hBrush) Funkcja klonuje pędzel. Zwraca uchwyt do nowego pędzla, lub 0 gdy wystąpił błąd. '''$hBrush''' - uchwyt do klonowanego pędzla, np. zwracany przez '''_GDIPlus_BrushCreateSolid''' Likwidacja obiektu za pomocą '''_GDIPlus_BrushDispose'''. ===_GDIPlus_BrushGetType=== #include <GDIPlus.au3> _GDIPlus_BrushGetType($hBrush) Funkcja zwraca typ pędzla, lub -1 gdy wystąpił błąd. 0 - jednolity kolor (Solid) 1 - kreskowanie 2 - tekstura 3 - gradient wzdłuż ścieżki 4 - gradient liniowy '''$hBrush''' - uchwyt do pędzla ===_GDIPlus_BrushDispose=== #include <GDIPlus.au3> _GDIPlus_BrushDispose($hBrush) Funkcja likwiduje pędzel. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hBrush''' - uchwyt do likwidowanego pędzla, np. zwracany przez '''_GDIPlus_BrushCreateSolid''' lub '''_GDIPlus_BrushClone''' ==Obiekt SolidBrush (Pędzel o jednolitym kolorze)== ===_GDIPlus_BrushCreateSolid=== #include <GDIPlus.au3> _GDIPlus_BrushCreateSolid([$iARGB = 0xFF000000]) Funkcja tworzy pędzel typu solid (malujący jednolitym kolorem). Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. '''$iARGB''' - składowe koloru pędzla, po dwa bajty aarrggbb (np. 0xEEFF1055), gdzie: aa - przezroczystość (kanał alfa) od 00 (całkowicie przezroczysty) do FF (całkowicie nieprzezroczysty) rr, gg, bb - składowe poszczególnych kolorów RGB, wartości od 00 do FF Wartość domyślna (0xFF000000) to całkowicie nieprzezroczysty kolor czarny. Likwidacja obiektu za pomocą '''_GDIPlus_BrushDispose'''. ===_GDIPlus_BrushSetSolidColor=== #include <GDIPlus.au3> _GDIPlus_BrushSetSolidColor($hBrush, [$iARGB = 0xFF000000]) Funkcja zmienia kolor pędzla. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hBrush''' - uchwyt do likwidowanego pędzla, np. zwracany przez '''_GDIPlus_BrushCreateSolid''' lub '''_GDIPlus_BrushClone''' '''$iARGB''' - składowe koloru pędzla, po dwa bajty aarrggbb (np. 0xEEFF1055), gdzie: aa - przezroczystość (kanał alfa) od 00 (całkowicie przezroczysty) do FF (całkowicie nieprzezroczysty) rr, gg, bb - składowe poszczególnych kolorów RGB, wartości od 00 do FF Wartość domyślna (0xFF000000) to całkowicie nieprzezroczysty kolor czarny. ===_GDIPlus_BrushGetSolidColor=== #include <GDIPlus.au3> _GDIPlus_BrushGetSolidColor($hBrush) Funkcja odczytuje kolor pędzla. Zwraca kod koloru (format jak w _GDIPlus_BrushSetSolidColor), lub -1 gdy wystąpił błąd. '''$hBrush''' - uchwyt do pędzla, np. zwracany przez '''_GDIPlus_BrushCreateSolid''' lub '''_GDIPlus_BrushClone''' ==Obiekt HatchBrush (pędzel z kreskowaniem)== ===_GDIPlus_HatchBrushCreate=== #include <GDIPlus.au3> _GDIPlus_HatchBrushCreate ( [ $iHatchStyle = 0 [, $iARGBForeground = 0xFFFFFFFF [, $iARGBBackground = 0xFFFFFFFF]]] ) Funkcja tworzy pędzel typu hatch (kreskowanie). Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. $iHatchStyle - styl kreskowania (zakres wartości od 0 do 52) $iArgbForeground - kolor wzoru w formacie AARRGGBB, domyślnie kolor czarny $iArgbBackground - kolor tła w formacie AARRGGBB, domyślnie kolor biały Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 580, 320) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush1 = _GDIPlus_HatchBrushCreate(0,0xFF00FF00, 0xFF0000FF) _GDIPlus_GraphicsFillEllipse($hGraphic, 20, 30, 120, 250, $hBrush1) $hBrush2 = _GDIPlus_HatchBrushCreate(3,0xFFFF0000, 0xFF00FF00) _GDIPlus_GraphicsFillRect($hGraphic, 220, 30, 120, 250, $hBrush2) $hBrush3 = _GDIPlus_HatchBrushCreate(52,0xFF0000FF, 0xFFFFFF00) _GDIPlus_GraphicsFillRect($hGraphic, 420, 30, 120, 250, $hBrush3) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush1) _GDIPlus_BrushDispose($hBrush2) _GDIPlus_BrushDispose($hBrush3) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ==Obiekt LineBrush (Pędzel z gradientem liniowym kolorów)== ===_GDIPlus_LineBrushCreate=== #include <GDIPlus.au3> _GDIPlus_LineBrushCreate ( $nX1, $nY1, $nX2, $nY2, $iARGBClr1, $iARGBClr2 [, $iWrapMode = 0] ) Funkcja tworzy liniowy pędzel gradientowy. Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. '''$nX1''', '''$nY1''' - współrzędne punktu początkowego gradientu '''$nX2''', '''$nY2''' - współrzędne punktu końcowego gradientu '''$iARGBClr1''' - składowe początkowego koloru gradientu (alfa i RGB) '''$iARGBClr2''' - składowe końcowego koloru gradientu (alfa i RGB) '''$iWrapMode''' - parametr określający tryb nakładania kolejnych płytek gradientu. Odcinek łączący punkty 1 i 2 wyznacza kierunek gradientu, a jego długość jest szerokością płytki gradientu. Płytka gradientu jest ograniczona dwiema izochromami prostopadłymi do kierunku gradientu, o kolorach $iARGBClr1 i $iARGBClr2. Jeżeli obszar do zamalowania jest szerszy od płytki gradientu, to dostawiane są kolejne płytki. Płytki mogą być obrócone lub nie w zależności od wartości parametru $iWrapMode, i tak: 0 - płytka nie obrócona 1 - płytka obrócona wokół izochromy 2 - płytka obrócona wokół kierunku gradientu 3 - płytka obrócona wokół obu osi 4 - brak płytki (obszar nie jest wypełniany gradientem) Ponieważ dla gradientu liniowego obrót wokół kierunku gradientu nie zmienia wyglądu płytki, efekt dla parametru 0 i 2, oraz 1 i 3 są identyczne, co widać na poniższym przykładzie: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 760, 320) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush1 = _GDIPlus_LineBrushCreate(20, 50, 50, 100, 0xFFFF0000, 0xFF4020FF) _GDIPlus_GraphicsFillRect($hGraphic, 20, 30, 120, 250, $hBrush1) $hBrush2 = _GDIPlus_LineBrushCreate(220, 50, 250, 100, 0xFFFF0000, 0xFF4020FF, 1) _GDIPlus_GraphicsFillRect($hGraphic, 220, 30, 120, 250, $hBrush2) $hBrush3 = _GDIPlus_LineBrushCreate(420, 50, 450, 100, 0xFFFF0000, 0xFF4020FF, 2) _GDIPlus_GraphicsFillRect($hGraphic, 420, 30, 120, 250, $hBrush3) $hBrush3 = _GDIPlus_LineBrushCreate(620, 50, 650, 100, 0xFFFF0000, 0xFF4020FF, 3) _GDIPlus_GraphicsFillRect($hGraphic, 620, 30, 120, 250, $hBrush3) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush1) _GDIPlus_BrushDispose($hBrush2) _GDIPlus_BrushDispose($hBrush3) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> Przykład jak uzyskać efekt kraty przez nałożenie gradientów: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 350, 350) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush1 = _GDIPlus_LineBrushCreate(0, 0, 0, 50, 0xFFFF0000, 0xFF0000FF, 0) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 350, 350, $hBrush1) $hBrush2 = _GDIPlus_LineBrushCreate(0, 0, 50, 0, 0x80FF0000, 0x800000FF, 0) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 350, 350, $hBrush2) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush1) _GDIPlus_BrushDispose($hBrush2) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_LineBrushCreateFromRect=== #include <GDIPlus.au3> _GDIPlus_LineBrushCreateFromRect ( $tRectF, $iARGBClr1, $iARGBClr2 [, $iGradientMode = 0 [, $iWrapMode = 0]] ) Funkcja tworzy liniowy pędzel gradientowy w oparciu o dane zawarte w strukturze $tagGDIPRECTF. Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. '''$tRectF''' - struktura z położeniem i wielkością prostokąta definiującego gradient '''$iARGBClr1''' - składowe początkowego koloru gradientu (alfa i RGB) '''$iARGBClr2''' - składowe końcowego koloru gradientu (alfa i RGB) '''$iGradientMode''' - parametr określający kierunek gradientu: 0 - poziomy od lewej do prawej (izochromy są pionowe) 1 - pionowy od góry do dołu (izochromy są poziome) 2 - skośny od lewego-górnego do prawego-dolnego narożnika 3 - skośny od prawego-górnego do lewego-dolnego narożnika Dla 0 i 1 izochromy pokrywają się z bokami prostokąta definiującego, dla 2 i 3 przechodzą przez przeciwległe wierzchołki prostokąta i są równoległe do jego przekątnej. '''$iWrapMode''' - parametr określający tryb nakładania kolejnych płytek gradientu (jak dla _GDIPlus_LineBrushCreate). W poniższym przykładzie pokazano położenie izochrom w stosunku do prostokąta definiującego: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 300) GUISetState(@SW_SHOW) _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) Local $x=100, $y=50, $w=100, $h=60 $tRectF = _GDIPlus_RectFCreate($x, $y, $w, $h) $hBrush = _GDIPlus_LineBrushCreateFromRect($tRectF, 0xFF0008000, 0xFFFFFFFF, 3, 0) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 300, $hBrush) _GDIPlus_GraphicsDrawRect($hGraphic, $x, $y, $w, $h) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_LineBrushCreateFromRectWithAngle=== #include <GDIPlus.au3> _GDIPlus_LineBrushCreateFromRectWithAngle ( $tRectF, $iARGBClr1, $iARGBClr2, $fAngle [, $bIsAngleScalable = True [, $iWrapMode = 0]] ) Funkcja tworzy liniowy pędzel gradientowy w oparciu o kąt i dane zawarte w strukturze $tagGDIPRECTF. Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. '''$tRectF''' - struktura z położeniem i wielkością prostokąta definiującego gradient '''$iARGBClr1''' - składowe początkowego koloru gradientu (alfa i RGB) '''$iARGBClr2''' - składowe końcowego koloru gradientu (alfa i RGB) '''$fAngle''' - kąt kierunku gradientu, w stopniach '''$bIsAngleScalable''' - True - kąt jest skalowany względem wymiarów prostokąta definiującego wg wzoru β = atan( tan( $fAngle ) * szerokość / wysokość ), False - kąt nie jest skalowany '''$iWrapMode''' - parametr określający tryb nakładania kolejnych płytek gradientu (jak dla _GDIPlus_LineBrushCreate). Przykład (ze skalowaniem kąta): <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 300) GUISetState(@SW_SHOW) _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) Local $x=100, $y=50, $w=160, $h=60 $tRectF = _GDIPlus_RectFCreate($x, $y, $w, $h) $hBrush = _GDIPlus_LineBrushCreateFromRectWithAngle($tRectF, 0xFF0008000, 0xFFFFFFFF, 45) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 300, $hBrush) _GDIPlus_GraphicsDrawRect($hGraphic, $x, $y, $w, $h) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_LineBrushGetColors=== #include <GDIPlus.au3> _GDIPlus_LineBrushGetColors ( $hLineGradientBrush ) Funkcja zwraca w postaci dwuelementowej tablicy kod koloru początkowego i końcowego gradientu liniowego. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. [0] - kod koloru początkowego w formacie ARGB [1] - kod koloru końcowego w formacie ARGB '''$hLineGradientBrush''' - uchwyt pędzla z gradientem liniowym Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState(@SW_SHOW) _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_LineBrushCreate(0, 0, 400, 0, Random(0xFF000000, 0xFFFFFFFF, 1), Random(0xFF000000, 0xFFFFFFFF, 1)) _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 400, 400, $hBrush) $sColStart = Hex(_GDIPlus_LineBrushGetColors($hBrush)[0], 8) $sColEnd = Hex(_GDIPlus_LineBrushGetColors($hBrush)[1], 8) MsgBox(0, "", "Kolor początkowy: " & $sColStart & @LF & "Kolor końcowy: " & $sColEnd) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_LineBrushGetRect=== #include <GDIPlus.au3> _GDIPlus_LineBrushGetRect ( $hLineGradientBrush ) Funkcja zwraca w postaci 4-elementowej tablicy, dane prostokąta definiującego gradient liniowy. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. [0] - współrzędna X lewego górnego narożnika prostokąta [1] - współrzędna Y lewego górnego narożnika prostokąta [2] - szerokość prostokąta [3] - wysokość prostokąta '''$hLineGradientBrush''' - uchwyt pędzla z gradientem liniowym Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 300) GUISetState(@SW_SHOW) _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) Local $x=Random(10, 100, 1), $y=Random(30, 60, 1), $x1=Random(5, 100, 1), $y1=Random(60, 100, 1) $hBrush = _GDIPlus_LineBrushCreate($x, $y, $x1, $y1, 0xFF0008000, 0xFFFFFFFF, 2) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 300, $hBrush) $aRect = _GDIPlus_LineBrushGetRect($hBrush) _GDIPlus_GraphicsDrawRect($hGraphic, $aRect[0], $aRect[1], $aRect[2], $aRect[3]) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_LineBrushMultiplyTransform=== #include <GDIPlus.au3> _GDIPlus_LineBrushMultiplyTransform ( $hLineGradientBrush, $hMatrix [, $iOrder = 0] ) Funkcja aktualizuje macierz transformacji pędzla za pomocą metod obiektu matrix. Zwraca True gdy sukces, lub False gdy wystąpił błąd. Transformacje są definiowane za pomocą funkcji obiektu matrix i powodują przemieszczanie, obroty i skalowanie lokalnego układu współrzędnych związanego z pędzlem. Dane pędzla i transformacji są zorganizowane w postaci macierzy. Transformacja polega na wymnożeniu macierzy danych przez macierz transformacji. '''$hLineGradientBrush''' - uchwyt pędzla z gradientem liniowym '''$hMatrix''' - uchwyt do obiektu matrix '''$iOrder''' - parametr określa kolejność mnożenia macierzy. I tak 0 -> MD * MP, 1 -> MP * MD. Ponieważ mnożenie macierzy nie jest przemienne, najczęściej efekt działania funkcji dla obu wartości parametru będzie różny. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF) $hBrush = _GDIPlus_LineBrushCreate(0, 0, 400, 400, 0xFFFF0000, 0xFF000000, 1) $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixTranslate($hMatrix, 15, 15) _GDIPlus_MatrixRotate($hMatrix, 1) For $i = 1 To 720 _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) _GDIPlus_LineBrushMultiplyTransform($hBrush, $hMatrix, 1) Sleep(10) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_LineBrushResetTransform=== #include <GDIPlus.au3> _GDIPlus_LineBrushResetTransform ( $hLineGradientBrush ) Funkcja resetuje transformacje geometryczne wykonane ma pędzlu z gradientem liniowym. Zwraca True gdy sukces, lub False gdy wystąpił błąd. Resetowane są przekształcenia związane z przesunięciem i obrotem, ale nie z kolorem i wielkością i położeniem prostokąta definiującego. Należy zwrócić uwagę, że pierwsza transformacja związana z obrotem dokonuje się już na etapie definiowania pędzla (jawnie dla _GDIPlus_LineBrushCreateFromRectWithAngle i niejawnie dla _GDIPlus_LineBrushCreate), więc po resecie kąt kierunku gradientu będzie wynosił 0. '''$hLineGradientBrush''' - uchwyt pędzla z gradientem liniowym Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_LineBrushCreate(0, 0, 40, 40, 0xFF00FF00, 0xFF0000FF, 3) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Sleep(3000) $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixRotate($hMatrix, 90) _GDIPlus_LineBrushMultiplyTransform($hBrush, $hMatrix, 1) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Sleep(3000) _GDIPlus_LineBrushResetTransform($hBrush) ;zresetowanie transformacji _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_LineBrushSetBlend=== #include <GDIPlus.au3> _GDIPlus_LineBrushSetBlend ( $hLineGradientBrush, $aBlends ) Funkcja ustawia współczynniki i pozycje mieszania kolorów celem uzyskania niestandardowego gradientu liniowego pędzla. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hLineGradientBrush''' - uchwyt pędzla z gradientem liniowym '''$aBlends''' - dwuwymiarowa tablica zawierająca współczynniki i pozycje mieszania [0][0] - liczba współczynników mieszania i stanowisk mieszania musi wynosić co najmniej 2 [1][0] - współczynnik 1 [1][1] - pozycja 1 [2][0] - współczynnik 2 [2][1] - pozycja 2 ... [n][0] - współczynnik n [n][1] - pozycja n Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> _GDIPlus_Startup() $hGUI = GUICreate("GDI+", 400, 400) GUISetState() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_LineBrushCreate(0, 0, 200, 300, 0xFFFFFF00, 0xFF4020FF, 1) Local $aBlends[5][2] $aBlends[0][0] = 4 $aBlends[1][0] = 0 $aBlends[1][1] = 0 $aBlends[2][0] = 1 $aBlends[2][1] = 0.1 $aBlends[3][0] = 0 $aBlends[3][1] = 0.5 $aBlends[4][0] = 1 $aBlends[4][1] = 1 _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 400, 400, $hBrush) Sleep(3000) _GDIPlus_LineBrushSetBlend($hBrush, $aBlends) _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 400, 400, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_LineBrushSetColors=== #include <GDIPlus.au3> _GDIPlus_LineBrushSetColors ( $hLineGradientBrush, $iARGBStart, $iARGBEnd ) Funkcja ustawia początkowy i końcowy kolor gradientu liniowego pędzla. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hLineGradientBrush''' - uchwyt pędzla z gradientem liniowym '''$iARGBStart''' - składowe początkowego koloru gradientu (alfa i RGB) '''$iARGBEnd''' - składowe końcowego koloru gradientu (alfa i RGB) Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $tRectF = _GDIPlus_RectFCreate(100, 100, 100, 100) ;tworzenie pędzla $hBrush = _GDIPlus_LineBrushCreateFromRect($tRectF, RandomColor(), RandomColor(), 2, 1) Do ;zmiana kolorów pędzla _GDIPlus_LineBrushSetColors ($hBrush, RandomColor(), RandomColor()) ;zamalowanie pędzlem prostokątnego obszaru okna _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Sleep(150) Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() ;generowanie losowego kodu koloru RGB Func RandomColor() Return Random(0xFF000000, 0xFFFFFFFF, 1) EndFunc </syntaxhighlight> ===_GDIPlus_LineBrushSetGammaCorrection=== #include <GDIPlus.au3> _GDIPlus_LineBrushSetGammaCorrection ( $hLineGradientBrush [, $fUseGammaCorrection = True] ) Funkcja włącza/wyłącza korekcję gamma kolorów gradientu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hLineGradientBrush''' - uchwyt pędzla z gradientem liniowym '''$fUseGammaCorrection''' - gdy True (domyślnie) korekta jest włączona, dla False korekta wyłączona Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $tRectF = _GDIPlus_RectFCreate(100, 100, 100, 100) ;tworzenie pędzla $hBrush = _GDIPlus_LineBrushCreateFromRect($tRectF, 0xFFFF0000, 0xFF0000FF, 2, 1) ;zamalowanie pędzlem prostokątnego obszaru okna _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Sleep(3000) ;włączeni korekty gamma _GDIPlus_LineBrushSetGammaCorrection ($hBrush, True) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Sleep(3000) ;wyłączenie korekty gamma _GDIPlus_LineBrushSetGammaCorrection ($hBrush, False) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_LineBrushSetLinearBlend=== #include <GDIPlus.au3> _GDIPlus_LineBrushSetLinearBlend ( $hLineGradientBrush, $fFocus [, $fScale = 1] ) Funkcja ustawia pozycję i intensywność mieszania kolorów w gradiencie. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hLineGradientBrush''' - uchwyt pędzla z gradientem liniowym '''$fFocus''' - określa w którym miejscu długości gradientu znajduje się barwa końcowa (zakres od 0 do 1, 0 - na początku, 1 - na końcu) '''$fScale''' - określa intensywność barwy końcowej w gradiencie (zakres od 0 do 1, 0 - brak koloru, 1 - 100%) Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_LineBrushCreate(0, 0, 400, 400, 0xFF0000A0, 0xFFFFFF00, 1) ;zmiana położenia koloru końcowego For $i = 0 To 1 Step 0.1 _GDIPlus_LineBrushSetLinearBlend($hBrush, $i) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Sleep(150) Next ;zmiana intensywności koloru końcowego For $i = 1 To 0 Step -0.05 _GDIPlus_LineBrushSetLinearBlend($hBrush, 1, $i) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Sleep(100) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_LineBrushSetPresetBlend=== #include <GDIPlus.au3> _GDIPlus_LineBrushSetPresetBlend ( $hLineGradientBrush, $aInterpolations ) Funkcja ustawia położenie i barwę mieszania kilku kolorów (gradient wielokolorowy). Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hLineGradientBrush''' - uchwyt pędzla z gradientem liniowym '''$aInterpolations''' - 2-wymiarowa tablica zawierająca dane mieszanych kolorów [0][0] - ilość mieszanych kolorów [1][0] - kolor 1 [1][1] - położenie 1 [2][0] - kolor 2 [2][1] - położenie 2 ... [n][0] - kolor n [n][1] - położenie n Przykład (symulacja spektrum światła białego): <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> $hGUI = GUICreate("Spektrum", 600, 300) GUISetBkColor(0, $hGUI) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $tRectF = _GDIPlus_RectFCreate(10, 50, 580, 180) ;tworzenie pędzla $hBrush = _GDIPlus_LineBrushCreateFromRect($tRectF, 0, 0, 0, 1) ;tablica z danymi gradientu wielokolorowego Dim $aInterpolations[6][2] $aInterpolations[0][0] = 5 $aInterpolations[1][0] = 0xFFD00000 ;Czerwony $aInterpolations[1][1] = 0 $aInterpolations[2][0] = 0xFFFFFF00 ;Żółty $aInterpolations[2][1] = 0.25 $aInterpolations[3][0] = 0xFF00FF00 ;Zielony $aInterpolations[3][1] = 0.5 $aInterpolations[4][0] = 0xFF0080FF ;Niebieski $aInterpolations[4][1] = 0.75 $aInterpolations[5][0] = 0xFF7000A0 ;Fioletowy $aInterpolations[5][1] = 1 _GDIPlus_LineBrushSetPresetBlend($hBrush, $aInterpolations) _GDIPlus_GraphicsFillRect($hGraphics, 10, 50, 580, 180, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() GUIDelete($hGUI) </syntaxhighlight> ===_GDIPlus_LineBrushSetSigmaBlend=== #include <GDIPlus.au3> _GDIPlus_LineBrushSetSigmaBlend ( $hLineGradientBrush, $fFocus [, $fScale = 1] ) Funkcja ustawienie mieszanie kolorów gradientu wg kształtu krzywej dzwonowej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hLineGradientBrush''' - uchwyt pędzla z gradientem liniowym '''$fFocus''' - określa w którym miejscu długości gradientu znajduje się barwa końcowa (zakres od 0 do 1, 0 - na początku, 1 - na końcu) '''$fScale''' - określa intensywność barwy końcowej w gradiencie (zakres od 0 do 1, 0 - brak koloru, 1 - 100%) Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> $hGUI = GUICreate("GDI+", 600, 300) GUISetBkColor(0, $hGUI) ;tło GUI GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_LineBrushCreate(0, 0, 0, 280, 0xFFFFFF00, 0xFF0000FF, 1) _GDIPlus_GraphicsFillRect($hGraphics, 10, 10, 280, 280, $hBrush) ;mieszanie w połowie długości gradientu, intensywność barwy końcowej 80% _GDIPlus_LineBrushSetSigmaBlend($hBrush, 0.5, 0.8) _GDIPlus_GraphicsFillRect($hGraphics, 310, 10, 280, 280, $hBrush) _GDIPlus_GraphicsDrawString($hGraphics, "bez sigma blend", 14, 14) _GDIPlus_GraphicsDrawString($hGraphics, "z sigma blend", 314, 14) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() GUIDelete($hGUI) </syntaxhighlight> ===_GDIPlus_LineBrushSetTransform=== #include <GDIPlus.au3> _GDIPlus_LineBrushSetTransform ( $hLineGradientBrush, $hMatrix ) Funkcja ustawia macierz przekształcenia gradientu liniowego pędzla, co jest równoważne z transformacją do nowego układu współrzędnych. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hLineGradientBrush''' - uchwyt pędzla z gradientem liniowym '''$hMatrix''' - wskaźnik do macierzy transformacji Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF) $hBrush = _GDIPlus_LineBrushCreate(0, 0, 400, 400, 0xFFDD0000, 0xFFFFFFFF, 1) $hMatrix = _GDIPlus_MatrixCreate() For $i = 0 To 360 _GDIPlus_MatrixRotate($hMatrix, 2) ;obrót układu współrzędnych o 2 stopnie _GDIPlus_LineBrushSetTransform($hBrush, $hMatrix) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Sleep(50) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ==Obiekt PathBrush (Pędzel z gradientem kolorów po ścieżce)== ===_GDIPlus_PathBrushCreate=== #include <GDIPlus.au3> _GDIPlus_PathBrushCreate ( $aPoints [, $iWrapMode = 0] ) Funkcja tworzy pędzel z gradientem kolorów po ścieżce. Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. '''$aPoints''' - 2-wymiarowa tablica z współrzędnymi punktów węzłowych ścieżki [0][0] - ilość punktów [1][0] - punkt 1 współrzędna X [1][1] - punkt 1 współrzędna Y [2][0] - punkt 2 współrzędna X [2][1] - punkt 2 współrzędna Y ... [n][0] - punkt n współrzędna X [n][1] - punkt n współrzędna Y '''$iWrapMode''' - parametr określający tryb nakładania kolejnych płytek gradientu. Odcinek łączący punkty węzłowe tworzą figurę, której krawędzie wyznaczają kierunki gradientów. Można zdefiniować kolory w każdym punkcie węzłowym, oraz w punkcie środkowym figury (oddzielnymi funkcjami). Prostokąt opisany na tej figurze tworzy płytkę gradientu. Jeżeli obszar do zamalowania jest większy od płytki gradientu, to dostawiane są kolejne płytki. Płytki mogą być obrócone lub nie w zależności od wartości parametru $iWrapMode, i tak: 0 - płytka nie obrócona 1 - płytka obrócona wokół osi pionowej 2 - płytka obrócona wokół osi poziomej 3 - płytka obrócona wokół obu osi 4 - tylko pojedyncza płytka Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 600, 400) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) Local $aPoints[5][2] = [[4]] $aPoints[1][0] = 0 $aPoints[1][1] = 0 $aPoints[2][0] = 0 $aPoints[2][1] = 100 $aPoints[3][0] = 100 $aPoints[3][1] = 100 $aPoints[4][0] = 100 $aPoints[4][1] = 0 $hBrush = _GDIPlus_PathBrushCreate($aPoints, 3) Local $aColors[5] = [4] $aColors[1] = 0xFFFF0000 $aColors[2] = 0xFF00FF00 $aColors[3] = 0xFF0000FF $aColors[4] = 0xFFFFFF00 _GDIPlus_PathBrushSetSurroundColorsWithCount($hBrush, $aColors) _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 600, 400, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushCreateFromPath=== #include <GDIPlus.au3> _GDIPlus_PathBrushCreateFromPath ( $hPath ) Funkcja tworzy pędzel z gradientem po ścieżce wg wcześniej zdefiniowanej ścieżki (patrz podrozdział "Ścieżki (GraphicsPath)"). Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 200, 180) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphics, 0xFF000000) ;tworzenie i definiowanie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 10, 10, 180, 160) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) _GDIPlus_PathBrushSetSurroundColor($hBrush, 0xFF0000FF) _GDIPlus_GraphicsFillRect($hGraphics, 10, 10, 180, 160, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushGetCenterPoint=== #include <GDIPlus.au3> _GDIPlus_PathBrushGetCenterPoint ( $hPathGradientBrush ) Funkcja odczytuje współrzędne punktu środkowego pędzla z gradientem po ścieżce. Zwraca jednowymiarową tablicę ze współrzędnymi. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. [0] - współrzędna X [1] - współrzędna Y '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce ===_GDIPlus_PathBrushSetCenterPoint=== #include <GDIPlus.au3> _GDIPlus_PathBrushSetCenterPoint ( $hPathGradientBrush, $nX, $nY ) Funkcja definiuje punkt środkowy pędzla z gradientem po ścieżce. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce '''$nX''', '''$nY''' - współrzędne punktu środkowego Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 200, 180) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphics, 0xFF000000) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 10, 10, 180, 160) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) _GDIPlus_PathBrushSetSurroundColor($hBrush, 0xFF0000FF) _GDIPlus_GraphicsFillRect($hGraphics, 10, 10, 180, 160, $hBrush) Sleep(2000) ;odczyt współrzędnych punktu środkowego $aTab = _GDIPlus_PathBrushGetCenterPoint ($hBrush) For $i = 1 To 20 Step 0.1 $x = $aTab[0] + 40*Sin($i) $y = $aTab[1] + 40*Cos($i) _GDIPlus_PathBrushSetCenterPoint ($hBrush, $X, $Y) ;ustawienie współrzędnych punktu środkowego _GDIPlus_GraphicsFillRect($hGraphics, 10, 10, 180, 160, $hBrush) Sleep(50) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushGetFocusScales=== #include <GDIPlus.au3> _GDIPlus_PathBrushGetFocusScales ( $hPathGradientBrush ) Funkcja odczytuje współczynniki skupienia gradientu pędzla z gradientem po ścieżce. Zwraca jednowymiarową tablicę ze współczynnikami. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. [0] - współczynnik w kierunku osi X [1] - współczynnik w kierunku osi Y ===_GDIPlus_PathBrushSetFocusScales=== #include <GDIPlus.au3> _GDIPlus_PathBrushSetFocusScales ( $hPathGradientBrush, $fScaleX, $fScaleY ) Funkcja ustawia współczynniki skupienia gradientu pędzla z gradientem po ścieżce. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce '''$fScaleX''', '''$fScaleY''' - skupienie gradientu wzdłuż osi X i Y. Zakres od 0 do 1, 0 - cała długość gradientu (wartość wyjściowa), 1 - na początku gradientu (będzie tylko kolor końcowy). Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 200, 180, -1, 50) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphics, 0xFF000000) ;tworzenie i definiowanie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 10, 10, 180, 160) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) ;tworzenie pędzla na podstawie ścieżki _GDIPlus_PathBrushSetFocusScales($hBrush, 0.2, 0.9) ;ustalenie skali skupienia gradientu _GDIPlus_PathBrushSetSurroundColor($hBrush, 0xFF0000FF) ;ustalenie koloru wyjściowego gradientu _GDIPlus_GraphicsFillPath($hGraphics, $hPath, $hBrush) ;zamalowanie ścieżki $aValue = _GDIPlus_PathBrushGetFocusScales($hBrush) ;odczyt skali gradientu MsgBox(0, "", "Skala X: " & $aValue[0] & @CRLF & "Skala Y: " & $aValue[1]) ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushGetPointCount=== #include <GDIPlus.au3> _GDIPlus_PathBrushGetPointCount ( $hPathGradientBrush ) Funkcja zwraca liczbę punktów w tablicy punktów, które wyznaczają ścieżkę granicy pędzla. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 200, 180, -1, 50) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphics, 0xFF000000) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 10, 10, 180, 160) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) _GDIPlus_PathBrushSetCenterColor($hBrush, 0xFFFFFF00) _GDIPlus_PathBrushSetCenterPoint($hBrush, 90, 80) _GDIPlus_PathBrushSetSurroundColor($hBrush, 0xFF303000) _GDIPlus_PathBrushSetGammaCorrection($hBrush, True) _GDIPlus_GraphicsFillRect($hGraphics, 10, 10, 180, 160, $hBrush) $iPoints = _GDIPlus_PathBrushGetPointCount($hBrush) MsgBox(0, "", "Liczba pkt w tablicy, która określa ścieżkę granicy pędzla: " & $iPoints) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushGetRect=== #include <GDIPlus.au3> _GDIPlus_PathBrushGetRect ( $hPathGradientBrush ) Funkcja zwraca położenie i wielkość prostokąta opisanego na ścieżce granicy gradientu. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce '''UWAGA:''' Uzyskany prostokąt stanowi obszar pojedynczej płytki gradientu. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 600, 400) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) Local $aPoints[5][2] = [[3]] $aPoints[1][0] = 300 $aPoints[1][1] = 50 $aPoints[2][0] = 450 $aPoints[2][1] = 350 $aPoints[3][0] = 150 $aPoints[3][1] = 250 $hBrush = _GDIPlus_PathBrushCreate($aPoints, 4) Local $aColors[5] = [3] $aColors[1] = 0xFFFF0000 $aColors[2] = 0xFF00FF00 $aColors[3] = 0xFF0000FF _GDIPlus_PathBrushSetSurroundColorsWithCount($hBrush, $aColors) _GDIPlus_PathBrushSetCenterColor($hBrush, 0xFFFFFFFF) _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 600, 400, $hBrush) $aRect = _GDIPlus_PathBrushGetRect($hBrush) _GDIPlus_GraphicsDrawRect($hGraphics, $aRect[0], $aRect[1], $aRect[2], $aRect[3]) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushGetWrapMode=== #include <GDIPlus.au3> _GDIPlus_PathBrushGetWrapMode ( $hPathGradientBrush ) Funkcja zwraca tryb nakładania kolejnych płytek gradientu, lub -1 gdy wystąpił błąd. 0 - płytka nie obrócona 1 - płytka obrócona wokół osi pionowej 2 - płytka obrócona wokół osi poziomej 3 - płytka obrócona wokół obu osi '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce ===_GDIPlus_PathBrushSetWrapMode=== #include <GDIPlus.au3> _GDIPlus_PathBrushSetWrapMode ( $hPathGradientBrush, $iWrapMode ) Funkcja ustawia tryb nakładania kolejnych płytek gradientu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce '''$iWrapMode''' - tryb nakładania kolejnych płytek gradientu: 0 - płytka nie obrócona 1 - płytka obrócona wokół osi pionowej 2 - płytka obrócona wokół osi poziomej 3 - płytka obrócona wokół obu osi Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 1500, 300, -1, 50) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) Local $aPoints[5][2] = [[4]] $aPoints[1][0] = 0 $aPoints[1][1] = 0 $aPoints[2][0] = 0 $aPoints[2][1] = 100 $aPoints[3][0] = 100 $aPoints[3][1] = 100 $aPoints[4][0] = 100 $aPoints[4][1] = 0 $hBrush = _GDIPlus_PathBrushCreate($aPoints, 0) Local $aColors[5] = [4] $aColors[1] = 0xFFFF0000 $aColors[2] = 0xFF00FF00 $aColors[3] = 0xFF0000FF $aColors[4] = 0xFFFFFF00 _GDIPlus_PathBrushSetSurroundColorsWithCount($hBrush, $aColors) _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 300, 300, $hBrush) MsgBox(0, "", "WrapMode = " & _GDIPlus_PathBrushGetWrapMode ($hBrush)) _GDIPlus_PathBrushSetWrapMode ( $hBrush, 1) _GDIPlus_GraphicsFillRect($hGraphics, 400, 0, 300, 300, $hBrush) MsgBox(0, "", "WrapMode = " & _GDIPlus_PathBrushGetWrapMode ($hBrush)) _GDIPlus_PathBrushSetWrapMode ( $hBrush, 2) _GDIPlus_GraphicsFillRect($hGraphics, 800, 0, 300, 300, $hBrush) MsgBox(0, "", "WrapMode = " & _GDIPlus_PathBrushGetWrapMode ($hBrush)) _GDIPlus_PathBrushSetWrapMode ( $hBrush, 3) _GDIPlus_GraphicsFillRect($hGraphics, 1200, 0, 300, 300, $hBrush) MsgBox(0, "", "WrapMode = " & _GDIPlus_PathBrushGetWrapMode ($hBrush)) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushMultiplyTransform=== #include <GDIPlus.au3> _GDIPlus_PathBrushMultiplyTransform ( $hPathGradientBrush, $hMatrix [, $iOrder = 0] ) Funkcja aktualizuje macierz transformacji pędzla za pomocą metod obiektu matrix. Zwraca True gdy sukces, lub False gdy wystąpił błąd. Transformacje są definiowane za pomocą funkcji obiektu matrix i powodują przemieszczanie, obroty i skalowanie lokalnego układu współrzędnych związanego z pędzlem. Dane pędzla i transformacji są zorganizowane w postaci macierzy. Transformacja polega na wymnożeniu macierzy danych przez macierz transformacji. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce '''$hMatrix''' - uchwyt do obiektu matrix '''$iOrder''' - parametr określa kolejność mnożenia macierzy. I tak 0 -> MD * MP, 1 -> MP * MD. Ponieważ mnożenie macierzy nie jest przemienne, najczęściej efekt działania funkcji dla obu wartości parametru będzie różny. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddRectangle ($hPath, 10, 10, 380, 380) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) _GDIPlus_PathBrushSetCenterPoint($hBrush, 200, 100) _GDIPlus_PathBrushSetCenterColor($hBrush, 0xFFFFFFFF) _GDIPlus_PathBrushSetSurroundColor($hBrush, 0xFFAA00FF) $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixTranslate($hMatrix, -200, -200) _GDIPlus_MatrixRotate($hMatrix, 1, True) _GDIPlus_MatrixTranslate($hMatrix, 200, 200, True) For $i = 1 To 360 _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) _GDIPlus_PathBrushMultiplyTransform($hBrush, $hMatrix, True) Sleep(10) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushResetTransform=== #include <GDIPlus.au3> _GDIPlus_PathBrushResetTransform ( $hPathGradientBrush ) Funkcja resetuje transformacje geometryczne wykonane ma pędzlu z gradientem po ścieżce. Zwraca True gdy sukces, lub False gdy wystąpił błąd. Resetowane są przekształcenia związane z przesunięciem i obrotem, ale nie z kolorem i wielkością i położeniem prostokąta definiującego. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) Local $aPoints[5][2] = [[4]] $aPoints[1][0] = 0 $aPoints[1][1] = 0 $aPoints[2][0] = 0 $aPoints[2][1] = 400 $aPoints[3][0] = 400 $aPoints[3][1] = 400 $aPoints[4][0] = 400 $aPoints[4][1] = 0 $hBrush = _GDIPlus_PathBrushCreate($aPoints, 0) Local $aColors[5] = [4] $aColors[1] = 0xFFFF0000 $aColors[2] = 0xFF00FF00 $aColors[3] = 0xFF0000FF $aColors[4] = 0xFFFFFF00 _GDIPlus_PathBrushSetSurroundColorsWithCount($hBrush, $aColors) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Sleep(2000) $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixTranslate($hMatrix, 400, 400) _GDIPlus_MatrixRotate($hMatrix, 90, True) _GDIPlus_PathBrushMultiplyTransform($hBrush, $hMatrix, 1) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Sleep(3000) _GDIPlus_PathBrushResetTransform($hBrush) ;zresetowanie transformacji _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushSetBlend=== #include <GDIPlus.au3> _GDIPlus_PathBrushSetBlend ( $hPathGradientBrush, $aBlends ) Funkcja ustawia pozycję i proporcje mieszania kolorów gradientu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce '''$aBlends''' - tablica zawierająca pozycje i proporcje mieszania kolorów (zakres 0 do 1) [0][0] - liczba współczynników proporcji mieszania [1][0] - proporcja 1 [1][1] - pozycja 1 [2][0] - proporcja 2 [2][1] - pozycja 2 ... [n][0] - proporcja n [n][1] - pozycja n Współczynnik proporcji określa jaka jest w gradiencie zawartość koloru końcowego w danym miejscu długości gradientu. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 200, 180) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 10, 10, 180, 160) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) _GDIPlus_PathBrushSetCenterPoint($hBrush, 100, 90) _GDIPlus_PathBrushSetSurroundColor($hBrush, 0xFF000000) ;kolor początkowy (obwód ścieżki) _GDIPlus_PathBrushSetCenterColor($hBrush, 0xFFFF0000) ;kolor końcowy (punkt centralny) Local $aBlend[5][2] = [[4]] $aBlend[1][0] = 0 ;zawartość koloru końcowego 0% $aBlend[1][1] = 0 ;początek gradientu $aBlend[2][0] = 0.2 ;na 20% koloru końcowego $aBlend[2][1] = 0.2 ;20% długości gradientu $aBlend[3][0] = 1 ;100% koloru końcowego $aBlend[3][1] = 0.6 ;na 60% długości gradientu $aBlend[4][0] = 0 ;zawartość koloru końcowego 0% $aBlend[4][1] = 1 ;koniec gradientu _GDIPlus_PathBrushSetBlend($hBrush, $aBlend) $aRect = _GDIPlus_PathBrushGetRect($hBrush) _GDIPlus_GraphicsFillRect($hGraphics, $aRect[0], $aRect[1], $aRect[2], $aRect[3], $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushSetCenterColor=== #include <GDIPlus.au3> _GDIPlus_PathBrushSetCenterColor ( $hPathGradientBrush, $iARGB ) Funkcja ustawia kolor środkowego punktu gradientu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce '''$iARGB''' - kolor ponktu środkowego gradientu w formacie AARRGGBB Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) Local $aPoints[4][2] = [[3]] $aPoints[1][0] = 200 $aPoints[1][1] = 50 $aPoints[2][0] = 350 $aPoints[2][1] = 350 $aPoints[3][0] = 50 $aPoints[3][1] = 350 $hBrush = _GDIPlus_PathBrushCreate($aPoints, 4) Local $aColors[5] = [4] $aColors[1] = 0xFFFF0000 $aColors[2] = 0xFF00FF00 $aColors[3] = 0xFF0000FF _GDIPlus_PathBrushSetSurroundColorsWithCount($hBrush, $aColors) _GDIPlus_PathBrushSetCenterColor ($hBrush, 0xFFFFFFFF) ;punkt środkowy biały _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 600, 400, $hBrush) Sleep(2000) _GDIPlus_PathBrushSetCenterColor ($hBrush, 0xFF000000) ;punkt środkowy czarny _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 600, 400, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushSetGammaCorrection=== #include <GDIPlus.au3> _GDIPlus_PathBrushSetGammaCorrection ( $hPathGradientBrush, $bUseGammaCorrection ) Funkcja włącza lub wyłącza korekcję gamma kolorów gradientu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce '''$bUseGammaCorrection''' - True - korekcja gamma włączona, False - korekcja gamma wyłączona Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 200, 200) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphics, 0xFF000000) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 10, 10, 180, 180) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) _GDIPlus_PathBrushSetCenterColor($hBrush, 0xFFFFFF00) _GDIPlus_PathBrushSetCenterPoint($hBrush, 130, 90) _GDIPlus_PathBrushSetSurroundColor($hBrush, 0xFF0000FF) $aRect = _GDIPlus_PathBrushGetRect($hBrush) _GDIPlus_PathBrushSetGammaCorrection($hBrush, True) ;korekcja gamma włączona _GDIPlus_GraphicsFillRect($hGraphics, $aRect[0], $aRect[1], $aRect[2], $aRect[3], $hBrush) Sleep(2000) _GDIPlus_PathBrushSetGammaCorrection($hBrush, False) ;korekcja gamma wyłączona _GDIPlus_GraphicsFillRect($hGraphics, $aRect[0], $aRect[1], $aRect[2], $aRect[3], $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushSetLinearBlend=== #include <GDIPlus.au3> _GDIPlus_PathBrushSetLinearBlend ( $hPathGradientBrush, $fFocus [, $fScale = 1] ) Funkcja ustawia pozycję i proporcje mieszania kolorów gradientu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce '''$fFocus''' - pozycja na długości gradientu z maksymalnym nasyceniem koloru końcowego (od 0 do 1, 0 - początek gradientu, 1 - koniec gradientu). Jeżeli 0 > $fFocus > 1 to początek i koniec gradientu mają kolor początkowy. '''$fScale''' - maksymalne nasycenie koloru końcowego (od 0 do 1, 1 = 100%) Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 200, 180) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphics, 0xFF000000) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 10, 10, 180, 160) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) _GDIPlus_PathBrushSetCenterPoint($hBrush, 100, 90) ;kolor początkowy nie został zdefiniowany, więc domyślnie jest to kolor biały ;kolor punktu centralnego (końcowy kolor gradientu) _GDIPlus_PathBrushSetCenterColor($hBrush, 0xFF0000FF) ;max. koloru końcowego (90%)na 20% długości gradientu _GDIPlus_PathBrushSetLinearBlend($hBrush, 0.2, 0.9) _GDIPlus_GraphicsFillPath($hGraphics, $hPath, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushSetPresetBlend=== #include <GDIPlus.au3> _GDIPlus_PathBrushSetPresetBlend ( $hPathGradientBrush, $aInterpolations ) Funkcja ustawia położenie i barwę mieszania kilku kolorów (gradient wielokolorowy). Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce '''$aInterpolations''' - 2-wymiarowa tablica zawierająca dane mieszanych kolorów [0][0] - ilość mieszanych kolorów [1][0] - kolor 1 [1][1] - położenie 1 [2][0] - kolor 2 [2][1] - położenie 2 ... [n][0] - kolor n [n][1] - położenie n Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 200, 180) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphics, 0xFF000000) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 10, 10, 180, 160) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) _GDIPlus_PathBrushSetCenterPoint($hBrush, 100, 90) Dim $aInterpolations[6][2] $aInterpolations[0][0] = 5 $aInterpolations[1][0] = 0xFFD00000 ;Czerwony $aInterpolations[1][1] = 0 $aInterpolations[2][0] = 0xFFFFFF00 ;Żółty $aInterpolations[2][1] = 0.25 $aInterpolations[3][0] = 0xFF00FF00 ;Zielony $aInterpolations[3][1] = 0.5 $aInterpolations[4][0] = 0xFF0080FF ;Niebieski $aInterpolations[4][1] = 0.75 $aInterpolations[5][0] = 0xFF7000A0 ;Fioletowy $aInterpolations[5][1] = 1 _GDIPlus_PathBrushSetPresetBlend($hBrush, $aInterpolations) $aRect = _GDIPlus_PathBrushGetRect($hBrush) _GDIPlus_GraphicsFillRect($hGraphics, $aRect[0], $aRect[1], $aRect[2], $aRect[3], $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushSetSigmaBlend=== #include <GDIPlus.au3> _GDIPlus_PathBrushSetSigmaBlend ( $hPathGradientBrush, $fFocus [, $fScale = 1] ) Funkcja ustawienie mieszanie kolorów gradientu wg kształtu krzywej dzwonowej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem liniowym '''$fFocus''' - określa w którym miejscu długości gradientu znajduje się barwa końcowa (zakres od 0 do 1, 0 - na początku, 1 - na końcu) '''$fScale''' - określa intensywność barwy końcowej w gradiencie (zakres od 0 do 1, 0 - brak koloru, 1 - 100%) Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 200, 180) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphics, 0xFF000000) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 10, 10, 180, 160) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) _GDIPlus_PathBrushSetCenterColor($hBrush, 0xFF0000FF) _GDIPlus_PathBrushSetSigmaBlend($hBrush, 0.25, 0.80) _GDIPlus_GraphicsFillPath($hGraphics, $hPath, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushSetSurroundColor=== #include <GDIPlus.au3> _GDIPlus_PathBrushSetSurroundColor ( $hPathGradientBrush, $iARGB ) Funkcja ustawia kolor obwodu ścieżki pędzla (kolor początkowy gradientu). Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem liniowym '''$iARGB''' - kod koloru w formacie AARRGGBB Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphics, 0xFF000000) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddLine($hPath, 106, 330, 200, 40) _GDIPlus_PathAddLine($hPath, 294, 330, 48, 151) _GDIPlus_PathAddLine($hPath, 352, 151, 106, 330) _GDIPlus_PathWindingModeOutline($hPath) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) _GDIPlus_PathBrushSetSurroundColor($hBrush, 0xFF0000FF) $aRect = _GDIPlus_PathBrushGetRect($hBrush) _GDIPlus_GraphicsFillRect($hGraphics, $aRect[0], $aRect[1], $aRect[2], $aRect[3], $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushSetSurroundColorsWithCount=== #include <GDIPlus.au3> _GDIPlus_PathBrushSetSurroundColorsWithCount ( $hPathGradientBrush, $aColors ) Funkcja ustawia kolory obwodu ścieżki pędzla (kolory początkowe gradientu). Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem liniowym '''$aColors''' - jednowymiarowa tablica zawierająca kolory kolejnych punktów obwodu pędzla [0] - ilość kolorów [1] - kolor 1 punktu [2] - kolor 2 punktu ... [n] - kolor n-tego punktu Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphics, 0xFF000000) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddLine($hPath, 106, 330, 200, 40) _GDIPlus_PathAddLine($hPath, 294, 330, 48, 151) _GDIPlus_PathAddLine($hPath, 352, 151, 106, 330) _GDIPlus_PathWindingModeOutline($hPath) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) Dim $aColors[11] = [10] $aColors[1] = 0xFFFF0000 $aColors[2] = 0xFF000000 $aColors[3] = 0xFFFFFF00 $aColors[4] = 0xFF000000 $aColors[5] = 0xFF00FF00 $aColors[6] = 0xFF000000 $aColors[7] = 0xFF00FFFF $aColors[8] = 0xFF000000 $aColors[9] = 0xFF0000FF $aColors[10] = 0xFF000000 _GDIPlus_PathBrushSetSurroundColorsWithCount($hBrush, $aColors) _GDIPlus_GraphicsFillPath($hGraphics, $hPath, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathBrushSetTransform=== #include <GDIPlus.au3> _GDIPlus_PathBrushSetTransform ( $hPathGradientBrush, $hMatrix ) Funkcja ustawia macierz przekształcenia gradientu po ścieżce pędzla, co jest równoważne z transformacją do nowego układu współrzędnych. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathGradientBrush''' - uchwyt pędzla z gradientem po ścieżce '''$hMatrix''' - wskaźnik do macierzy transformacji Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 0, 0, 150, 150) $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) _GDIPlus_PathBrushSetCenterColor($hBrush, 0xFFFF0000) $hMatrix = _GDIPlus_MatrixCreate() For $i = 0 To 360 If $i = 0 Then _GDIPlus_MatrixTranslate($hMatrix,200, 200) _GDIPlus_MatrixRotate($hMatrix, 2) ;obrót układu współrzędnych o 2 stopnie _GDIPlus_PathBrushSetTransform($hBrush, $hMatrix) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 400, 400, $hBrush) Sleep(50) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ==Obiekt TextureBrush (Pędzel z teksturą)== ===_GDIPlus_TextureCreate=== #include <GDIPlus.au3> _GDIPlus_TextureCreate ( $hImage [, $iWrapMode = 0] ) Funkcja tworzy pędzel z teksturą na podstawie obiektu Image. Zwraca uchwyt do pędzla lub 0 gdy wystąpił błąd. '''$hImage''' - uchwyt do obiektu Image '''$iWrapMod''' - parametr określający tryb nakładania kolejnych płytek tekstury: 0 - płytka nie obrócona 1 - płytka obrócona wokół osi pionowej 2 - płytka obrócona wokół osi poziomej 3 - płytka obrócona wokół obu osi 4 - tylko pojedyncza płytka Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> Dim $sWow64 If @AutoItX64 Then $sWow64 = "\Wow6432Node" $sRegPath = "HKLM\SOFTWARE" & $sWow64 & "\AutoIt v3\AutoIt" $sFile = RegRead($sRegPath, "InstallDir") & "\Examples\GUI\logo4.gif" If Not FileExists($sFile) Then MsgBox(0, "", $sFile & " Brak pliku!", 10) Exit EndIf _GDIPlus_Startup() ;utworzenie obiektu Image na podstawie pliku z bitmapą $hImage = _GDIPlus_ImageLoadFromFile($sFile) If @error Then _GDIPlus_Shutdown() MsgBox(0 , "", "Błąd pliku!", 10) Exit EndIf $hGUI = GUICreate("GDI+", 600, 400) GUISetState() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_TextureCreate($hImage, 3) ;utworzenie pędzla z teksturą _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 600, 400, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_ImageDispose($hImage) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() GUIDelete($hGUI) </syntaxhighlight> ===_GDIPlus_TextureCreate2=== #include <GDIPlus.au3> _GDIPlus_TextureCreate2 ( $hImage, $nX, $nY, $nWidth, $nHeight [, $iWrapMode = 0] ) Funkcja tworzy pędzel z teksturą na podstawie obiektu Image. Zwraca uchwyt do pędzla lub 0 gdy wystąpił błąd. W odróżnieniu od poprzednio opisanej funkcji _GDIPlus_TextureCreate można wybrać dowolną część obrazka jako teksturą. '''$hImage''' - uchwyt do obiektu Image '''$nX''', '''$nY''' - współrzędne lewego górnego narożnika wybranego fragmentu obrazu '''$nWidth''', '''$nHeight''' - szerokość i wysokość wybranego fragmentu obrazu '''$iWrapMod''' - parametr określający tryb nakładania kolejnych płytek tekstury: 0 - płytka nie obrócona 1 - płytka obrócona wokół osi pionowej 2 - płytka obrócona wokół osi poziomej 3 - płytka obrócona wokół obu osi 4 - tylko pojedyncza płytka Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> Dim $sWow64 If @AutoItX64 Then $sWow64 = "\Wow6432Node" $sRegPath = "HKLM\SOFTWARE" & $sWow64 & "\AutoIt v3\AutoIt" $sFile = RegRead($sRegPath, "InstallDir") & "\Examples\GUI\logo4.gif" If Not FileExists($sFile) Then MsgBox(0, "", $sFile & " Brak pliku!", 10) Exit EndIf _GDIPlus_Startup() ;utworzenie obiektu Image na podstawie pliku z bitmapą $hImage = _GDIPlus_ImageLoadFromFile($sFile) If @error Then _GDIPlus_Shutdown() MsgBox(0 , "", "Błąd pliku!", 10) Exit EndIf $hGUI = GUICreate("GDI+", 600, 400) GUISetState() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_TextureCreate2($hImage, 0, 0, 65, 65, 3) ;utworzenie pędzla z teksturą _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 600, 400, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush) _GDIPlus_ImageDispose($hImage) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() GUIDelete($hGUI) </syntaxhighlight> ===_GDIPlus_TextureCreateIA=== #include <GDIPlus.au3> _GDIPlus_TextureCreateIA ( $hImage, $nX, $nY, $nWidth, $nHeight [, $pImageAttributes = 0] ) Funkcja tworzy pędzel z teksturą na podstawie obiektu Image. Zwraca uchwyt do pędzla lub 0 gdy wystąpił błąd. W odróżnieniu od poprzednio opisanej funkcji _GDIPlus_TextureCreate można wybrać dowolną część obrazka jako teksturą. '''$hImage''' - uchwyt do obiektu Image '''$nX''', '''$nY''' - współrzędne lewego górnego narożnika wybranego fragmentu obrazu '''$nWidth''', '''$nHeight''' - szerokość i wysokość wybranego fragmentu obrazu '''$pImageAttributes''' - wskaźnik do obiektu ImageAttributes który zawiera właściwości obrazu ==Obiekt arrow (grot strzałki)== Poniżej kilka funkcji do obsługi obiektu będącego grotem strzałki. Obiekt ten może być następnie użyty jako niestandardowe zakończenie linii (_GDIPlus_PenSetCustomEndCap). ===_GDIPlus_ArrowCapCreate=== #include <GDIPlus.au3> _GDIPlus_ArrowCapCreate($fHeight, $fWidth [, $bFilled = True]) Funkcja tworzy obiekt będący grotem strzałki. Zwraca uchwyt do obiektu, lub 0 gdy wystąpił błąd. '''$fHeight''', '''$fWidth''' - długość i szerokość grotu (jednostką jest grubość linii) '''$bFilled''' - wypełnienie grotu, TRUE - grot wypełniony, FALSE - grot nie wypełniony '''UWAGA:''' Grot jest skalowalny, tzn. że po zmianie grubości linii następuje automatycznie proporcjonalne powiększenie jego wymiarów. Likwidacja obiektu za pomocą '''_GDIPlus_ArrowCapDispose'''. ===_GDIPlus_ArrowCapDispose=== #include <GDIPlus.au3> _GDIPlus_ArrowCapDispose($hArrowCap) Funkcja likwiduje obiekt będący grotem strzałki. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hArrowCap''' - uchwyt do obiektu zwrócony przez '''_GDIPlus_ArrowCapCreate''' Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() ;tworzenie zasobów _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xFF000000, 6) $hEndCap = _GDIPlus_ArrowCapCreate(3, 6) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) ;rysowanie strzałki _GDIPlus_GraphicsDrawLine($hGraphic, 10, 100, 390, 100, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_ArrowCapDispose($hEndCap) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ArrowCapSetHeight=== #include <GDIPlus.au3> _GDIPlus_ArrowCapSetHeight($hArrowCap, $fHeight) Funkcja zmienia długość grotu. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hArrowCap''' - uchwyt do obiektu zwrócony przez '''_GDIPlus_ArrowCapCreate''' '''$fHeight''' - długość grotu (jednostką jest grubość linii) ===_GDIPlus_ArrowCapGetHeight=== #include <GDIPlus.au3> _GDIPlus_ArrowCapGetHeight($hArrowCap) Funkcja odczytuje i zwraca długość grotu (jednostką jest grubość linii). Jeżeli wystąpił błąd zwracane jest -1. '''$hArrowCap''' - uchwyt do obiektu zwrócony przez '''_GDIPlus_ArrowCapCreate''' Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() ;tworzenie zasobów _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xFF000000, 6) $hEndCap = _GDIPlus_ArrowCapCreate(3, 6) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) ;rysowanie strzałki _GDIPlus_GraphicsDrawLine($hGraphic, 10, 100, 390, 100, $hPen) ;długość grotu zwiększona o 10 $fL = _GDIPlus_ArrowCapGetHeight($hEndCap) _GDIPlus_ArrowCapSetHeight($hEndCap, $fL+10) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 150, 390, 150, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_ArrowCapDispose($hEndCap) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ArrowCapSetWidth=== #include <GDIPlus.au3> _GDIPlus_ArrowCapSetWidth($hArrowCap, $fWidth) Funkcja zmienia szerokość grotu. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hArrowCap''' - uchwyt do obiektu zwrócony przez '''_GDIPlus_ArrowCapCreate''' '''$fWidth''' - szerokość grotu (jednostką jest grubość linii) ===_GDIPlus_ArrowCapGetWidth=== #include <GDIPlus.au3> _GDIPlus_ArrowCapGetHeight($hArrowCap) Funkcja odczytuje i zwraca szerokość grotu (jednostką jest grubość linii). Jeżeli wystąpił błąd zwracane jest -1. '''$hArrowCap''' - uchwyt do obiektu zwrócony przez '''_GDIPlus_ArrowCapCreate''' Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() ;tworzenie zasobów _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xFF000000, 6) $hEndCap = _GDIPlus_ArrowCapCreate(3, 6) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) ;rysowanie strzałki _GDIPlus_GraphicsDrawLine($hGraphic, 10, 100, 390, 100, $hPen) ;szerokość grotu zwiększona o 10 $fS = _GDIPlus_ArrowCapGetWidth($hEndCap) _GDIPlus_ArrowCapSetWidth($hEndCap, $fS+10) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 200, 390, 200, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_ArrowCapDispose($hEndCap) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ArrowCapSetFillState=== #include <GDIPlus.au3> _GDIPlus_ArrowCapSetFillState($hArrowCap, $bFilled = True) Funkcja zmienia wypełnieni grotu. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hArrowCap''' - uchwyt do obiektu zwrócony przez '''_GDIPlus_ArrowCapCreate''' '''$bFilled''' - wypełnienie grotu, TRUE - grot wypełniony, FALSE - grot nie wypełniony Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() ;tworzenie zasobów _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xFF000000, 4) $hEndCap = _GDIPlus_ArrowCapCreate(4, 6) ;rysowanie strzałki _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 100, 390, 100, $hPen) ;grot niewypełniony _GDIPlus_ArrowCapSetFillState($hEndCap, False) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 160, 390, 160, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_ArrowCapDispose($hEndCap) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ArrowCapGetFillState=== #include <GDIPlus.au3> _GDIPlus_ArrowCapGetFillState($hArrowCap) Funkcja odczytuje i zwraca kod wypełnienia grotu (TRUE - grot wypełniony, FALSE - grot nie wypełniony). Jeżeli wystąpił błąd zwracane jest -1. '''$hArrowCap''' - uchwyt do obiektu zwrócony przez '''_GDIPlus_ArrowCapCreate''' ===_GDIPlus_ArrowCapSetMiddleInset=== #include <GDIPlus.au3> _GDIPlus_ArrowCapSetMiddleInset($hArrowCap, $fInset) Funkcja ustala głębokość wcięcia w tylnej części grotu. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hArrowCap''' - uchwyt do obiektu zwrócony przez '''_GDIPlus_ArrowCapCreate''' '''$fInset''' - głębokość wcięcia (jednostką jest grubość linii), dla wartości ujemnych wypukłość zamiast wcięcia. ===_GDIPlus_ArrowCapGetMiddleInset=== #include <GDIPlus.au3> _GDIPlus_ArrowCapGetMiddleInset($hArrowCap) Funkcja odczytuje i zwraca głębokość wcięcia grotu (jednostką jest grubość linii). Jeżeli wystąpił błąd zwracane jest -1. '''$hArrowCap''' - uchwyt do obiektu zwrócony przez '''_GDIPlus_ArrowCapCreate''' Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() ;tworzenie zasobów _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xFF000000, 6) $hEndCap = _GDIPlus_ArrowCapCreate(3, 6) ;grot bez wcięcia _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 100, 390, 100, $hPen) ;grot z wcięciem 0.5 _GDIPlus_ArrowCapSetMiddleInset($hEndCap, 0.5) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 150, 390, 150, $hPen) ;grot z wcięciem powiększonym o 1 $iInset = _GDIPlus_ArrowCapGetMiddleInset($hEndCap) + 1 _GDIPlus_ArrowCapSetMiddleInset($hEndCap, $iInset) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 200, 390, 200, $hPen) ;grot z wypukłością _GDIPlus_ArrowCapSetMiddleInset($hEndCap, -1) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) _GDIPlus_GraphicsDrawLine($hGraphic, 10, 250, 390, 250, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_ArrowCapDispose($hEndCap) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ==Niestandardowe zakończenie linii== Kilka funkcji do definiowanie niestandardowego zakończenie linni. ===_GDIPlus_CustomLineCapCreate=== #include <GDIPlus.au3> _GDIPlus_CustomLineCapCreate ( $hPathFill, $hPathStroke [, $iLineCap = 0 [, $iBaseInset = 0]] ) Funkcja tworzy obiekt będący niestandardowym zakończeniem linii. Zwraca uchwyt do obiektu, lub 0 gdy wystąpił błąd. '''$hPathFill''' - uchwyt do ścieżki z opisem wypełnienia zakończenia linii, 0 - brak wypełnienia '''$hPathStroke''' - uchwyt do ścieżki z opisem konturu zakończenia linii, 0 - brak konturu '''$iLineCap''' - ten parametr nie powoduje żadnego działania, domyślnie ma wartość 0 i niech tak zostanie '''$iBaseInset''' - odległość między zdefiniowanym zakończeniem, a końcem linii Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> _GDIPlus_Startup() $hGUI = GUICreate("Niestandardowe zakończenie linii", 400, 300) GUISetState() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;tworzenie ścieżki z opisem kształtu zakończenia linii $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddLine($hPath, -15, -15, 0, 0) _GDIPlus_PathAddLine($hPath, 0, 0, 15, -15) _GDIPlus_PathAddEllipse($hPath, -6,-15, 12, 12) ;tworzenie zakończenia linii na podstawie zdefiniowanej ścieżki $hCustomLineCap = _GDIPlus_CustomLineCapCreate(0, $hPath) ;tworzenie pióra z niestandardowym zakończeniem $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) _GDIPlus_PenSetCustomEndCap($hPen, $hCustomLineCap) ;rysowanie linii z niestandardowym zakończeniem _GDIPlus_GraphicsDrawLine($hGraphics, 200, 100, 350, 50, $hPen) _GDIPlus_GraphicsDrawLine($hGraphics, 200, 100, 50, 50, $hPen) _GDIPlus_GraphicsDrawLine($hGraphics, 200, 100, 200, 250, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PenDispose($hPen) _GDIPlus_CustomLineCapDispose($hCustomLineCap) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_CustomLineCapClone=== #include <GDIPlus.au3> _GDIPlus_CustomLineCapClone ( $hCustomLineCap ) Funkcja klonuje obiekt CustomLineCap. Zwraca uchwyt do utworzonego obiektu, lub 0 gdy wystąpił błąd. '''$hCustomLineCap''' - uchwyt do klonowanego obiektu ===_GDIPlus_CustomLineCapDispose=== #include <GDIPlus.au3> _GDIPlus_CustomLineCapDispose ( $hCap ) Funkcja likwiduje obiekt CustomLineCap. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hCap''' - uchwyt do klonowanego obiektu ==Fonty (czcionki) i stringi (teksty)== Kilka funkcji do definiowania fontów, których można użyć do tworzenia tekstów wstawianych w obszarze grafiki za pomocą funkcji '''_GDIPlus_GraphicsDrawStringEx'''. ===_GDIPlus_FontFamilyCreate=== #include <GDIPlus.au3> _GDIPlus_FontFamilyCreate($sFamily) Funkcja tworzy rodzinę fontów. Zwraca uchwyt do tej rodziny, lub 0 gdy wystąpił błąd. '''$sFamily''' - nazwa rodziny fontów jak w systemie, np. "arial", "courier" itp. Likwidacja obiektu za pomocą '''_GDIPlus_FontFamilyDispose'''. ===_GDIPlus_FontFamilyDispose=== #include <GDIPlus.au3> _GDIPlus_FontFamilyDispose($hFamily) Funkcja likwiduje rodzinę fontów. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hFamily''' - uchwyt do rodziny fontów zwracany przez '''_GDIPlus_FontFamilyCreate''' ===_GDIPlus_FontCreate=== #include <GDIPlus.au3> _GDIPlus_FontCreate($hFamily, $fSize [, $iStyle = 0 [, $iUnit = 3]]) Funkcja tworzy font. Zwraca uchwyt do fontu, lub 0 gdy wystąpił błąd. '''$hFamily''' - uchwyt do rodziny fontów zwracany przez _GDIPlus_FontFamilyCreate '''$fSize''' - rozmiar czcionki mierzony w jednostkach określonych w $iUnit '''$iStyle''' - styl fontu (wartości można sumować): 0 - normalny 1 - wytłuszczony 2 - kursywa 4 - podkreślony 8 - przekreślony '''$iUnit''' - jednostka wielkości fontu: 2 - 1 piksel 3 - 1 punkt (1/72 cala) 4 - 1 cal 5 - 1/300 cala 6 - 1 milimetr Likwidacja obiektu za pomocą '''_GDIPlus_FontDispose'''. ===_GDIPlus_FontDispose=== #include <GDIPlus.au3> _GDIPlus_FontDispose($hFont) Funkcja likwiduje font. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hFont''' - uchwyt do fontu zwracany przez '''_GDIPlus_FontCreate''' ===_GDIPlus_StringFormatCreate=== #include <GDIPlus.au3> _GDIPlus_StringFormatCreate([$iFormat = 0 [, $iLangID = 0]]) Funkcja tworzy format stringu. Zwraca uchwyt do tego formatu, lub 0 gdy wystąpił błąd. Parametry oba opcjonalne, w zasadzie można je pominąć, gdyż najczęściej korzysta się z ustawień domyślnych. Dla dociekliwych opis w Helpie. '''$iFormat''' - kod formatu (np. 0 - tekst wpisywany w prawo (domyślne), 1 - tekst wpisywany w lewo, 2 - tekst wpisywany w pionie) '''$iLangID''' - kod języka Likwidacja obiektu za pomocą '''_GDIPlus_StringFormatDispose'''. ===_GDIPlus_StringFormatDispose=== #include <GDIPlus.au3> _GDIPlus_StringFormatDispose($hFormat) Funkcja likwiduje format stringu. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hFormat''' - uchwyt do formatu zwrócony przez '''_GDIPlus_StringFormatCreate''' ===_GDIPlus_StringFormatSetAlign=== #include <GDIPlus.au3> _GDIPlus_StringFormatSetAlign($hFormat,$iFlag) Funkcja ustala sposób wyrównywania tekstu w okienku tekstowym. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hFormat''' - uchwyt do formatu zwrócony przez '''_GDIPlus_StringFormatCreate''' '''$iFlag''' - sposób wyrównania" 0 - do lewej 1 - centrowanie 2 - do prawej ===_GDIPlus_RectFCreate=== #include <GDIPlus.au3> _GDIPlus_RectFCreate([$nX = 0 [, $nY = 0 [, $nWidth = 0 [, $nHeight = 0]]]]) Funkcja tworzy i zwraca strukturę ($tagGDIPRECTF) zawierającą dane o położeniu i wielkości prostokątnego obszaru. Struktura ta jest wykorzystywana przez funkcję '''_GDIPlus_GraphicsDrawStringEx'''. '''$nX''' i '''$nY''' - współrzędne lewego górnego narożnika '''$nWidth''' i '''$nHeight''' - długość i szerokość obszaru, domyślne wartości określają, że polem jest cały obszar grafiki ===_GDIPlus_GraphicsMeasureString=== #include <GDIPlus.au3> _GDIPlus_GraphicsMeasureString($hGraphics, $sString, $hFont, $tLayout, $hFormat) Funkcja mierzy rozmiaru łańcucha znaków. Zwraca jednowymiarową tablicę z danymi o wielkości łańcucha, lub 0 gdy wystąpił błąd. [0] - struktura $tagGDIPRECTF [1] - liczba znaków, które rzeczywiście mieszczą się w zadeklarowanym obszarze [2] - liczba wierszy, które rzeczywiście mieszczą się w zadeklarowanym obszarze Struktura $tagGDIPRECTF, zawiera dane o rzeczywistym prostokątnym obszarze, w którym mieści się tekst. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$sString''' - tekst do wpisania '''$hFont''' - uchwyt do fontu zwracany przez '''_GDIPlus_FontCreate''' '''$tLayout''' - struktura $tagGDIPRECTF z zadeklarowanym obszarem do wpisania tekstu, zwracana przez '''_GDIPlus_RectFCreate''' '''$hFormat''' - uchwyt do formatu stringu, zwracany przez '''_GDIPlus_StringFormatCreate''' Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $sString = "Witajcie przyjaciele!" ;tworzenie GUI $hGUI = GUICreate("GDI+", 500, 200) GUISetState() ;tworzenie zasobów _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_BrushCreateSolid(0xFF00007F) $hFormat = _GDIPlus_StringFormatCreate() $hFamily = _GDIPlus_FontFamilyCreate("Arial") $hFont = _GDIPlus_FontCreate($hFamily, 32, 2) $tLayout = _GDIPlus_RectFCreate(40, 50, 450, 100) ;odczyt danych o rzeczywistym obszarze zawierającym tekst $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, $tLayout, $hFormat) MsgBox(0,"","Rzeczywista szerokość pola - " & DllStructGetData ($aInfo[0], 3) _ & @LF & "Ilość znaków - " & $aInfo[1] _ & @LF & "Ilość wierszy - " & $aInfo[2]) ;wpisanie tekstu _GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $aInfo[0], $hFormat, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ==Ścieżki (GraphicsPath)== Ścieżki są obiektami łączącymi w jedną całość inne proste obiekty graficzna (linie, figury geometryczne, teksty, itp.). Tak utworzony obiektem można następnie manipulować jako całością, co znacznie upraszcza wykonywanie różnych operacji graficznych (przesuwanie, skalowanie, obracanie, itp.). ===_GDIPlus_PathCreate=== #include <GDIPlus.au3> _GDIPlus_PathCreate ( [$iFillMode = 0] ) Funkcja tworzy tworzy obiekt GraphicsPath (pusty) i inicjuje tryb wypełnienia. Zwraca uchwyt do obiektu, lub 0 gdy wystąpił błąd. '''$iFillMode''' - tryb wypełniania wnętrza figur '''UWAGA:''' Niepotrzebny już obiekt należy usunąć celem zwolnienia zasobów, wywołując funkcję _GDIPlus_PathDispose. ===_GDIPlus_PathCreate2=== #include <GDIPlus.au3> _GDIPlus_PathCreate2 ( $aPathData [, $iFillMode = 0] ) Funkcja tworzy obiekt GraphicsPath oparty na tablicy punktów i inicjuje tryb wypełnienia. Zwraca uchwyt do obiektu, lub 0 gdy wystąpił błąd. '''$aPathData''' - 2-wymiarowa tablica zawierająca dane punktów i ich typ [0][0] - ilość punktów i typów (n) [1][0] - punkt 1, pozycja X [1][1] - punkt 1, pozycja Y [1][2] - punkt 1, typu... .... [n][0] - punkt n, pozycja X [n][1] - punkt n, Pozycja Y [n][2] - punkt, typu... Każdy punkt jest jednego z następujących typów: 0x00 - punkt jest początkiem rysunku 0x01 - jeden z dwóch końców linii 0x03 - punkt końcowy lub kontrolny krzywej Baziera 0x20 - marker 0x80 - ostatni punkt w zamkniętej podścieżce (rysunek) '''$iFillMode''' - tryb wypełniania wnętrza figur '''UWAGA:''' Niepotrzebny już obiekt należy usunąć celem zwolnienia zasobów, wywołując funkcję _GDIPlus_PathDispose. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("_GDIPlus_PathCreate2", 420, 420) GUISetState(@SW_SHOW) _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphics, 0xFF000000) ;dane ścieżki Dim $aPathData[][] = [[5, 0, 0],[80, 200, 1],[160, 300, 1],[320, 10, 1],[160, 400, 1],[80, 200, 1]] ;tworzenie ścieżki i zasobów $hPath = _GDIPlus_PathCreate2($aPathData) $hBrush = _GDIPlus_BrushCreateSolid(0x7F0088AA) $hPen = _GDIPlus_PenCreate(0xFF0088AA, 2) ;rysowanie ścieżki _GDIPlus_GraphicsFillPath($hGraphics, $hPath, $hBrush) _GDIPlus_GraphicsDrawPath($hGraphics, $hPath, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathDispose=== #include <GDIPlus.au3> _GDIPlus_PathDispose ( $hPath ) Funkcja likwiduje obiekt GraphicsPath i zwalnia zasoby. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt obiektu GraphicsPath ===_GDIPlus_PathAddArc=== #include <GDIPlus.au3> _GDIPlus_PathAddArc ( $hPath, $nX, $nY, $nWidth, $nHeight, $fStartAngle, $fSweepAngle ) Funkcja dodaje łuk elipsy do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$nX''' i '''$nY''' - współrzędna lewego górnego rogu prostokąta mieszczącego elipsę '''$nWidth''' i '''$nHeight''' - szerokość i wysokość prostokąta mieszczącego elipsę '''$fStartAngle''' - kąt w stopniach, między osią X i promieniem początkowym łuku '''$fSweepAngle''' - kąt w stopniach, między promieniem początkowym i końcowym łuku Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_GDIPlus_PathAddArc", 400, 300) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) $hBrush = _GDIPlus_BrushCreateSolid(0x70FF0000) ;tworzenie i definiowanie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddArc($hPath, 50, 50, 300, 100, 90, 180) _GDIPlus_PathAddArc($hPath, 50, 150, 300, 100, 90, -180) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Sleep(3000) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;wypełnienie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddBezier=== #include <GDIPlus.au3> _GDIPlus_PathAddBezier ( $hPath, $nX1, $nY1, $nX2, $nY2, $nX3, $nY3, $nX4, $nY4 ) Funkcja dodaje krzywą Beziera do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$nX1''' i '''$nY1''' - współrzędne punktu początkowego '''$nX2''' i '''$nY2''' - współrzędne pierwszego punktu kontrolnego '''$nX3''' i '''$nY3''' - współrzędne drugiego punktu kontrolnego '''$nX4''' i '''$nY4''' - współrzędne punktu końcowego Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_GDIPlus_PathAddBezier", 400, 300) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) $hBrush = _GDIPlus_BrushCreateSolid(0x70FF0000) ;tworzenie i definiowanie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddBezier($hPath, 10, 10, 50, 200, 300, 10, 390, 290) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Sleep(3000) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;wypełnienie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddClosedCurve=== #include <GDIPlus.au3> _GDIPlus_PathAddClosedCurve ( $hPath, $aPoints ) Funkcja dodaje zamkniętą krzywą do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$aPoints''' - 2-wymiarowa tablica zawierająca współrzędne punktów: [0][0] - ilość punktów (n) [1][0] - punkt 1, pozycja X [1][1] - punkt 1, pozycja Y .... [n][0] - punkt n, pozycja X [n][1] - punkt n, Pozycja Y Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_GDIPlus_PathAddClosedCurve", 400, 300) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) $hBrush = _GDIPlus_BrushCreateSolid(0x70FF0000) ;tworzenie i definiowanie ścieżki $hPath = _GDIPlus_PathCreate() Local $aPoints[][] = [[4,0],[20,100],[120,80],[220,220],[380,180]] _GDIPlus_PathAddClosedCurve($hPath, $aPoints) ;rysowanie ścieżki _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Sleep(3000) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;wypełnienie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddClosedCurve2=== #include <GDIPlus.au3> _GDIPlus_PathAddClosedCurve2 ( $hPath, $aPoints [, $fTension = 0.5] ) Funkcja dodaje zamkniętą krzywą do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$aPoints''' - 2-wymiarowa tablica zawierająca współrzędne punktów: [0][0] - ilość punktów (n) [1][0] - punkt 1, pozycja X [1][1] - punkt 1, pozycja Y .... [n][0] - punkt n, pozycja X [n][1] - punkt n, Pozycja Y '''$fTension''' - liczba kontrolująca wygięcie krzywej, 0 - linia łamana Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_PathAddClosedCurve2", 400, 300) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) Local $aPoints[][] = [[4,0],[20,150],[120,60],[220,220],[380,180]] ;tworzenie i rysowanie ścieżki $hPen = _GDIPlus_PenCreate(0xFFFFFFFF, 2) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddClosedCurve2($hPath, $aPoints, 0) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Sleep(2000) $hPen = _GDIPlus_PenCreate(0xFFFFFF00, 2) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddClosedCurve2($hPath, $aPoints) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Sleep(2000) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddClosedCurve2($hPath, $aPoints,2) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddCurve=== #include <GDIPlus.au3> _GDIPlus_PathAddCurve ( $hPath, $aPoints ) Funkcja dodaje krzywą do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$aPoints''' - 2-wymiarowa tablica zawierająca współrzędne punktów: [0][0] - ilość punktów (n) [1][0] - punkt 1, pozycja X [1][1] - punkt 1, pozycja Y .... [n][0] - punkt n, pozycja X [n][1] - punkt n, Pozycja Y Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_GDIPlus_PathAddCurve", 400, 300) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) $hBrush = _GDIPlus_BrushCreateSolid(0x70FF0000) ;tworzenie i definiowanie ścieżki $hPath = _GDIPlus_PathCreate() Local $aPoints[][] = [[4,0],[20,100],[120,80],[220,220],[380,180]] _GDIPlus_PathAddCurve($hPath, $aPoints) ;rysowanie ścieżki _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Sleep(3000) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;wypełnienie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddCurve2=== #include <GDIPlus.au3> _GDIPlus_PathAddCurve2 ( $hPath, $aPoints [, $fTension = 0] ) Funkcja dodaje krzywą do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$aPoints''' - 2-wymiarowa tablica zawierająca współrzędne punktów: [0][0] - ilość punktów (n) [1][0] - punkt 1, pozycja X [1][1] - punkt 1, pozycja Y .... [n][0] - punkt n, pozycja X [n][1] - punkt n, Pozycja Y '''$fTension''' - liczba kontrolująca wygięcie krzywej, 0 - linia łamana Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_PathAddCurve2", 400, 300) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) Local $aPoints[][] = [[4,0],[20,150],[120,60],[220,220],[380,180]] ;tworzenie i rysowanie ścieżki $hPen = _GDIPlus_PenCreate(0xFFFFFFFF, 2) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddCurve2($hPath, $aPoints, 0) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Sleep(2000) $hPen = _GDIPlus_PenCreate(0xFFFFFF00, 2) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddCurve2($hPath, $aPoints) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Sleep(2000) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddCurve2($hPath, $aPoints,2) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddCurve3=== #include <GDIPlus.au3> _GDIPlus_PathAddCurve3 ( $hPath, $aPoints, $iOffset, $iNumOfSegments [, $fTension = 0.5] ) Funkcja dodaje krzywą do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$aPoints''' - 2-wymiarowa tablica zawierająca współrzędne punktów: [0][0] - ilość punktów i typów [1][0] - punkt 1, pozycja X [1][1] - punkt 1, pozycja Y .... [n][0] - punkt n, pozycja X [n][1] - punkt n, Pozycja Y '''$iOffset''' - indeks elementu tablicy, który jest używany jako pierwszy punkt krzywej '''$iNumOfSegments''' - liczba segmentów krzywej, segmentem jest krzywa, która łączy kolejne punkty w tablicy '''$fTension''' - liczba kontrolująca wygięcie krzywej, 0 - linia łamana Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_PathAddCurve3", 400, 300) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) Local $aPoints[][] = [[4,0],[20,150],[120,60],[220,220],[380,180]] ;tworzenie i rysowanie ścieżki $hPen = _GDIPlus_PenCreate(0xFFFFFFFF, 2) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddCurve3($hPath, $aPoints, 0, 1) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Sleep(2000) $hPen = _GDIPlus_PenCreate(0xFF0000FF, 2) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddCurve3($hPath, $aPoints, 1,1) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Sleep(2000) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddCurve3($hPath, $aPoints,2,1) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddEllipse=== #include <GDIPlus.au3> _GDIPlus_PathAddEllipse ( $hPath, $nX, $nY, $nWidth, $nHeight ) Funkcja dodaje elipsę do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$nX''' i '''$nY''' - współrzędna lewego górnego rogu prostokąta mieszczącego elipsę '''$nWidth''' i '''$nHeight''' - szerokość i wysokość prostokąta mieszczącego elipsę Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_GDIPlus_PathAddEllipse", 280, 190) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) $hPen = _GDIPlus_PenCreate(0xFFFFFFFF, 2) $hPath = _GDIPlus_PathCreate() ;tworzenie i rysowanie ścieżki _GDIPlus_PathAddEllipse($hPath, 10,10, 100, 100) _GDIPlus_PathAddEllipse($hPath, 90,10, 100, 100) _GDIPlus_PathAddEllipse($hPath, 170,10, 100, 100) _GDIPlus_PathAddEllipse($hPath, 50,80, 100, 100) _GDIPlus_PathAddEllipse($hPath, 130,80, 100, 100) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddLine=== #include <GDIPlus.au3> _GDIPlus_PathAddLine ( $hPath, $nX1, $nY1, $nX2, $nY2 ) Funkcja dodaje odcinek linii prostej do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$nX1''' i '''$nY1''' - współrzędna początku odcinka '''$nX2''' i '''$nY2''' - współrzędna końca odcinka Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_GDIPlus_PathAddLine", 400, 400) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) $hPen = _GDIPlus_PenCreate(0xFFFFFFFF, 2) $hBrush = _GDIPlus_BrushCreateSolid(0x70FF0000) ;tworzenie i rysowanie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddLine($hPath, 106, 330, 200, 40) _GDIPlus_PathAddLine($hPath, 294, 330, 48, 151) _GDIPlus_PathAddLine($hPath, 352, 151, 106, 330) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) Sleep(3000) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddLine2=== #include <GDIPlus.au3> _GDIPlus_PathAddLine2 ( $hPath, $aPoints ) Funkcja w oparciu o tablicę punktów, dodaje odcinki do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$aPoints''' - 2-wymiarowa tablica zawierająca współrzędne punktów: [0][0] - ilość punktów [1][0] - punkt 1, pozycja X [1][1] - punkt 1, pozycja Y .... [n][0] - punkt n, pozycja X [n][1] - punkt n, Pozycja Y Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_GDIPlus_PathAddLine2", 400, 400) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) $hPen = _GDIPlus_PenCreate(0xFFFFFFFF, 2) $hBrush = _GDIPlus_BrushCreateSolid(0x70FF0000) ;tworzenie i rysowanie ścieżki $hPath = _GDIPlus_PathCreate() Local $avPoints[][] = [[5],[100, 50],[300, 50],[100, 350],[300,350],[100,50]] _GDIPlus_PathAddLine2($hPath, $avPoints) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) Sleep(3000) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddPath=== #include <GDIPlus.au3> _GDIPlus_PathAddPath ( $hPath1, $hPath2 [, $bConnect = True] ) Funkcja łączy dwie ścieżki graficzne. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath1''' - uchwyt ścieżki, do której będzie dołączona druga ścieżka '''$hPath2''' - uchwyt do dołączanej ścieżki Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_GDIPlus_PathAddLine2", 400, 400) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) $hPen = _GDIPlus_PenCreate(0xFFFFFFFF, 2) $hBrush = _GDIPlus_BrushCreateSolid(0x70FF0000) ;tworzenie ścieżki 1 $hPath1 = _GDIPlus_PathCreate() Local $avPoints[][] = [[5],[100, 50],[300, 50],[100, 350],[300,350],[100,50]] _GDIPlus_PathAddLine2($hPath1, $avPoints) ;tworzenie ścieżki 2 $hPath2 = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath2, 100,150, 200, 100) _GDIPlus_PathAddPath($hPath1, $hPath2) ;łączenie ścieżek _GDIPlus_GraphicsDrawPath($hGraphic, $hPath1, $hPen) Sleep(3000) _GDIPlus_GraphicsFillPath($hGraphic, $hPath1, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath1) _GDIPlus_PathDispose($hPath2) _GDIPlus_PenDispose($hPen) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddPie=== #include <GDIPlus.au3> _GDIPlus_PathAddPie ( $hPath, $nX, $nY, $nWidth, $nHeight, $fStartAngle, $fSweepAngle ) Funkcja dodaje wycinek elipsy do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$nX''' i '''$nY''' - współrzędna lewego górnego rogu prostokąta mieszczącego elipsę '''$nWidth''' i '''$nHeight''' - szerokość i wysokość prostokąta mieszczącego elipsę '''$fStartAngle''' - kąt w stopniach, między osią X i promieniem początkowym łuku '''$fSweepAngle''' - kąt w stopniach, między promieniem początkowym i końcowym łuku Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_GDIPlus_PathAddPie", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0) ;tworzenie zasobów $hBrush = _GDIPlus_BrushCreateSolid(0x8F8800AA) $hPen = _GDIPlus_PenCreate(0xFFFF00AA, 2) $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddPie($hPath, 50, 50, 300, 300, 135, 270);dodanie wycinka _GDIPlus_PathAddPie($hPath, 50, 80, 300, 300, 45, 90) ;dodanie drugiego wycinka _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;inicjowanie zamalowania obszaru _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddPolygon=== #include <GDIPlus.au3> _GDIPlus_PathAddPolygon ( $hPath, $aPoints ) Funkcja dodaje wielokąt do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$aPoints''' - tablica z współrzędnymi wierzchołków wielokąta: [0][0] - ilość punktów (n) [1][0] - punkt 1, pozycja X [1][1] - punkt 1, pozycja Y .... [n][0] - punkt n, pozycja X [n][1] - punkt n, Pozycja Y Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_GDIPlus_PathAddPolygon", 400, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0) ;tworzenie zasobów $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki ;tworzenie tablic z współrzędnymi wierzchołków wielokątów Local $aPoints1[][] = [[5,0],[20,100],[120,80],[220,20],[380,180],[200,360]] Local $aPoints2[][] = [[3,0],[120,150],[200,80],[220,220]] ;dodawanie wielokątó do ścieżki _GDIPlus_PathAddPolygon ( $hPath, $aPoints1 ) _GDIPlus_PathAddPolygon ( $hPath, $aPoints2 ) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddRectangle=== #include <GDIPlus.au3> _GDIPlus_PathAddRectangle ( $hPath, $nX, $nY, $nWidth, $nHeight ) Funkcja dodaje prostokąt do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$nX''' i '''$nY''' - współrzędna lewego górnego rogu prostokąta '''$nWidth''' i '''$nHeight''' - szerokość i wysokość prostokąta Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_GDIPlus_PathAddRectangle", 400, 340) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) $hBrush = _GDIPlus_BrushCreateSolid(0x70FF0000) ;tworzenie i definiowanie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddRectangle($hPath, 50, 140, 300, 50) _GDIPlus_PathAddRectangle($hPath, 175, 20, 50, 300) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Sleep(3000) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;wypełnienie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathAddString=== #include <GDIPlus.au3> _GDIPlus_PathAddString ( $hPath, $sString, $tLayout, $hFamily [, $iStyle = 0 [, $fSize = 8.5 [, $hFormat = 0]]] ) Funkcja dodaje tekst do określonej ścieżki graficznej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$sString''' - tekst '''$tLayout''' - struktura $tagGDIPRECTF z wymiarami i położeniem prostokąta zawierającego tekst '''$hFamily''' - uchwyt do rodziny fontów '''$iStyle''' - styl kroju pisma, może być kombinacją następujących wartości: 0 - normalna waga i styl czcionki (domyślne) 1 - wytłuszczenie 2 - kursywa 4 - podkreślenie 8 - przekreślenie '''$fSize''' - wielkość czcionki w punktach (domyślnie 8.5) '''$hFormat''' - wskaźnik do obiektu StringFormat (domyślnie 0) Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("_GDIPlus_PathAddString", 540, 100) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_BrushCreateSolid(0xFFDD2200) $hPen = _GDIPlus_PenCreate(0xFFFFBB00, 2) $hFamily = _GDIPlus_FontFamilyCreate("Arial") ;tworzenie rodziny fontów $tLayout = _GDIPlus_RectFCreate() ;tworzenie prostokąta zawierającego tekst $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddString($hPath, "AutoIt to jest to!", $tLayout, $hFamily, 0, 72) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;zamalowanie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathCloseFigure=== #include <GDIPlus.au3> _GDIPlus_PathCloseFigure ( $hPath ) Funkcja łączy elementy ścieżki w zamkniętą figurę. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki Łączenie następuje za pomocą odcinków prostej: - dla 1 elementu łączy początek z końcem - dla wielu elementów wg schematu: koniec pierwszego - początek drugiego ... koniec poprzedniego - początek następnego ... koniec ostatniego - początek pierwszego Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 600) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) $hBrush = _GDIPlus_BrushCreateSolid(0xFFFF9900) $hPen = _GDIPlus_PenCreate(0xFF0000FF, 2) ;tworzenie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddArc($hPath, 150, 150, 100, 100, 160, 220) _GDIPlus_PathAddArc($hPath, 50, 50, 300, 300, 20, -220) _GDIPlus_PathCloseFigure($hPath) ;zamknięcie figury _GDIPlus_PathAddArc($hPath, 150, 450, 100, 100, 160, 220) _GDIPlus_PathCloseFigure($hPath) ;zamknięcie figury _GDIPlus_PathAddArc($hPath, 50, 350, 300, 300, 20, -220) _GDIPlus_PathCloseFigure($hPath) ;zamknięcie figury _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathFlatten=== #include <GDIPlus.au3> _GDIPlus_PathFlatten ( $hPath [, $fFlatness = 0.25 [, $hMatrix = 0]] ) Funkcja zastępuje każdą krzywą w ścieżce linią łamaną. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$fFlatness''' - liczba rzeczywista określająca maksymalną odchyłkę między ścieżką, a jej przybliżeniem, im wartość mniejsza tym łamana składa się z większej liczby odcinków i przybliżenie jest dokładniejsze (dla wartości 0 transformacja nie jest realizowana) '''$hMatrix''' - uchwyt do obiektu matrix z dodatkową transformację (np. obrót, skalowanie, itp.), 0 oznacza brak transformacji matrix Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 800, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;włączenie wygładzania krawędzi $hPen = _GDIPlus_PenCreate(0xFF000000, 2) ;oryginalna ścieżka _GDIPlus_GraphicsDrawString($hGraphic, "Oryginalna ścieżka", 10, 10) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 50, 50, 300, 200) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;ścieżka po transformacji _GDIPlus_GraphicsDrawString($hGraphic, "Ścieżka po transformacji", 410, 10) _GDIPlus_PathReset($hPath) _GDIPlus_PathAddEllipse($hPath, 450, 50, 300, 200) _GDIPlus_PathFlatten($hPath, 5) ;transformacja ścieżki do łamanej _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathGetData=== #include <GDIPlus.au3> _GDIPlus_PathGetData ( $hPath ) Funkcja zwraca dwuwymiarową tablicę z danymi punktów charakterystycznych ścieżki. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. [0][0] - ilość punktów i typów (n) [1][0] - współrzędna X pierwszego punktu [1][1] - współrzędna Y pierwszego punktu [1][2] - typ pierwszego punktu ... [n][0] - współrzędna X ostatniego punktu [n][1] - współrzędna Y ostatniego punktu [n][2] - typ ostatniego punktu Każdy punkt jest jednego z następujących typów: 0x00 - punkt jest początkiem rysunku 0x01 - jeden z dwóch końców linii 0x03 - punkt końcowy lub kontrolny krzywej Baziera 0x20 - marker 0x80 - ostatni punkt w zamkniętej podścieżce (rysunek) '''$hPath''' - uchwyt do ścieżki Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 380, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen1 = _GDIPlus_PenCreate(0xFFFF0000, 2) $hPen2 = _GDIPlus_PenCreate(0xFF000000, 1) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 50, 50, 280, 180) ;odczyt punktów charakterystycznych ścieżki $aPath = _GDIPlus_PathGetData($hPath) ;zmiana typu punktów (wszystkie jako końce odcinków) For $i = 1 To UBound($aPath)-1 $aPath[$i][2] = 1 Next ;tworzenie ścieżki na podstawie tablicy punktów $hPath2 = _GDIPlus_PathCreate2($aPath) ;rysowanie oryginalnej ścieżki _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen1) Sleep(2000) ;rysowanie ścieżki ze zmienionym typem punktów _GDIPlus_GraphicsDrawPath($hGraphic, $hPath2, $hPen2) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_PathDispose($hPath2) _GDIPlus_PenDispose($hPen1) _GDIPlus_PenDispose($hPen2) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathGetLastPoint=== #include <GDIPlus.au3> _GDIPlus_PathGetLastPoint ( $hPath ) Funkcja zwraca w postaci dwuelementowej tablicy, współrzędne końcowego punktu ostatniej figury ścieżki graficznej. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. [0] - współrzędna X [1] - współrzędna Y '''$hPath''' - uchwyt do ścieżki Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xFF0000FF, 2) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddArc($hPath, 100, 100, 200, 100, Random(0, 360), Random(30, 270)) _GDIPlus_PathAddArc($hPath, 50, 50, 300, 200, Random(0, 360), Random(30, 270)) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) _GDIPlus_PenSetColor($hPen, 0xFFFF0000) $aPnt = _GDIPlus_PathGetLastPoint($hPath) _GDIPlus_GraphicsDrawEllipse($hGraphic, $aPnt[0]-5, $aPnt[1]-5, 10, 10, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathGetPoints=== #include <GDIPlus.au3> _GDIPlus_PathGetPoints ( $hPath ) Funkcja odczytuje współrzędne punktów ścieżki i zwraca je w postaci dwuwymiarowej tablicy. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. [0][0] - ilość punktów (n) [1][0] - współrzędna X pierwszego punktu [1][1] - współrzędna Y pierwszego punktu ... [n][0] - współrzędna X ostatniego punktu [n][1] - współrzędna Y ostatniego punktu '''$hPath''' - uchwyt do ścieżki Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 700, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;tworzenie piór $hPen1 = _GDIPlus_PenCreate(0xFF00AA00, 1) $hPen2 = _GDIPlus_PenCreate(0xFF0000FF, 2) $hPen3 = _GDIPlus_PenCreate(0xFFFF0000, 1) ;tworzenie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 50, 50, 600, 300) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen1) ;rysowanie ścieżki (elipsy) $aPoints = _GDIPlus_PathGetPoints($hPath) ;odczytanie współrzędnych punktów ścieżki ;rysowanie kółek wokół punktów charakterystycznych ścieżki For $i = 1 To $aPoints[0][0] _GDIPlus_GraphicsDrawEllipse($hGraphic, $aPoints[$i][0] - 4, $aPoints[$i][1] - 4, 8, 8, $hPen2) Next Sleep(2000) ;rysowanie łamanej łączącej punkty charakterystyczne ścieżki For $i = 1 To $aPoints[0][0]-1 _GDIPlus_GraphicsDrawLine($hGraphic, $aPoints[$i][0], $aPoints[$i][1], $aPoints[$i+1][0], $aPoints[$i+1][1], $hPen3) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen1) _GDIPlus_PenDispose($hPen2) _GDIPlus_PenDispose($hPen3) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathGetPointCount=== #include <GDIPlus.au3> _GDIPlus_PathGetPointCount ( $hPath ) Funkcja zwraca ilość punktów charakterystycznych ścieżki, lub 0 gdy wystąpił błąd (makro @error przyjmuje wartość różną od zera). '''$hPath''' - uchwyt do ścieżki '''UWAGA:''' Zwracana wartość jest tym samym co zawartość komórki [0][0] tablicy zwracanej przez funkcję _GDIPlus_PathGetPoint. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 700, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;tworzenie piór $hPen1 = _GDIPlus_PenCreate(0xFF00AA00, 1) $hPen2 = _GDIPlus_PenCreate(0xFF0000FF, 2) $hPen3 = _GDIPlus_PenCreate(0xFFFF0000, 1) ;tworzenie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 50, 50, 600, 300) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen1) ;rysowanie ścieżki (elipsy) $aPoints = _GDIPlus_PathGetPoints($hPath) ;odczytanie współrzędnych punktów ścieżki ;rysowanie kółek wokół punktów charakterystycznych ścieżki For $i = 1 To _GDIPlus_PathGetPointCount($hPath) _GDIPlus_GraphicsDrawEllipse($hGraphic, $aPoints[$i][0] - 4, $aPoints[$i][1] - 4, 8, 8, $hPen2) Next Sleep(2000) ;rysowanie łamanej łączącej punkty charakterystyczne ścieżki For $i = 1 To _GDIPlus_PathGetPointCount($hPath)-1 _GDIPlus_GraphicsDrawLine($hGraphic, $aPoints[$i][0], $aPoints[$i][1], $aPoints[$i+1][0], $aPoints[$i+1][1], $hPen3) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen1) _GDIPlus_PenDispose($hPen2) _GDIPlus_PenDispose($hPen3) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathGetWorldBounds=== #include <GDIPlus.au3> _GDIPlus_PathGetWorldBounds ( $hPath [, $hMatrix = 0 [, $hPen = 0]] ) Funkcja zwraca w jednowymiarowej tablicy dane prostokąta, w którym mieści się ścieżka (najmniejszy prostokąt będący obramowaniem ścieżki). Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. [0] - współrzędna X lewego górnego narożnika prostokąta [1] - współrzędna Y lewego górnego narożnika prostokąta [2] - szerokość prostokąta [3] - wysokość prostokąta '''$hPath''' - uchwyt do ścieżki '''$hMatrix''' - uchwyt do obiektu matrix, przekształcenia ścieżki opisane w tym obiekcie będą tylko uwzględnione w danych zwracanego prostokąta, sama transformacja ścieżki nie będzie realizowana, 0 oznacza zignorowanie parametru '''$hPen''' - uchwyt do pióra, grubość tego pióra będzie uwzględniona w danych zwracanego prostopąta, tak że ścieżka zmieści się w prostokącie nawet wtedy gdy będzie narysowana bardzo grubym piórem, 0 oznacza zignorowanie parametru Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> Local $iW = 800, $iH = 200 $hGUI = GUICreate("GDI+", $iW, $iH) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;włączenie wygładzania krawędzi ;tworzenie pędzla i pióra $hBrush = _GDIPlus_BrushCreateSolid(0xFFDD2200) $hPen = _GDIPlus_PenCreate(0xFF000000, 2) ;tworzenie ścieżki z tekstem $hPath = _GDIPlus_PathCreate() $hFamily = _GDIPlus_FontFamilyCreate("Arial") $tLayout = _GDIPlus_RectFCreate(80,10) _GDIPlus_PathAddString($hPath, "Skalowanie tekstu do okna", $tLayout, $hFamily, 0, 40) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;wypełnienie ścieżki bez skalowania _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki bez skalowania Sleep(2000) $aBounds = _GDIPlus_PathGetWorldBounds($hPath) ;odczyt danych prostokąta mieszcącego ścieżkę $hMatrix = _GDIPlus_MatrixCreate() ;przesunięcie tekstu do lewego górnego narożnika _GDIPlus_MatrixTranslate($hMatrix, -$aBounds[0], -$aBounds[1]) ;skalowanie tekstu do całej powierzchni okna _GDIPlus_MatrixScale($hMatrix, $iW / $aBounds[2], $iH / $aBounds[3], True) _GDIPlus_PathTransform($hPath, $hMatrix) ;transformacja ścieżki z tekstem _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;wypełnienie ścieżki skalowanej _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki skalowanej Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathSetFillMode=== #include <GDIPlus.au3> _GDIPlus_PathSetFillMode ( $hPath, $iFillMode ) Funkcja ustawia tryb wypełniania ścieżki. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$iFillMode''' - kod trybu wypełniania, 0 - tryb XOR, 1 - tryb OR ===_GDIPlus_PathGetFillMode=== #include <GDIPlus.au3> _GDIPlus_PathGetFillMode ( $hPath ) Funkcja zwraca tryb wypełniania ścieżki. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. 0 - tryb XOR 1 - tryb OR '''$hPath''' - uchwyt do ścieżki Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("", 380, 380) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;tworzenie pędzla i pióra $hBrush = _GDIPlus_BrushCreateSolid(0xFFF00000) $hPen = _GDIPlus_PenCreate(0xFF8800AA, 2) ;tworzenie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 50, 50, 180, 180) _GDIPlus_PathAddEllipse($hPath, 150, 50, 180, 180) _GDIPlus_PathAddEllipse($hPath, 100, 150, 180, 180) $iTimer = 0 Do If TimerDiff($iTimer) > 2000 Then $iMode = _GDIPlus_PathGetFillMode($hPath) ;odczyt trybu wypełniania WinSetTitle($hGUI, "", "Mode = " & $iMode & ($iMode ? " (Tryb OR)" : " (Tryb XOR)")) _GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF) ;czyszczenie grafiki _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;wypełnienie ścieżki _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki _GDIPlus_PathSetFillMode($hPath, Not $iMode) ;ustawienie trybu wypełniania na przeciwny $iTimer = TimerInit() EndIf Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathIsOutlineVisiblePoint=== #include <GDIPlus.au3> _GDIPlus_PathIsOutlineVisiblePoint ( $hPath, $nX, $nY [, $hPen = 0 [, $hGraphics = 0]] ) Funkcja zwraca True gdy punkt znajduje się na ścieżce graficznej. W przeciwnym razie zwraca False. '''$hPath''' - uchwyt do ścieżki '''$nX''', '''$nY''' - współrzędne sprawdzanego punktu '''$hPen''' - uchwyt do pióra, grubość tego pióra będzie uwzględniana w ocenie położenia punktu '''$hGraphics''' - uchwyt do obiektu graphics Przykład jak dla _GDIPlus_PathIsVisiblePoint. ===_GDIPlus_PathIsVisiblePoint=== #include <GDIPlus.au3> _GDIPlus_PathIsVisiblePoint ( $hPath, $nX, $nY [, $hGraphics = 0] ) Funkcja zwraca True gdy punkt znajduje się wewnątrz ścieżki graficznej. W przeciwnym razie zwraca False. '''$hPath''' - uchwyt do ścieżki '''$nX''', '''$nY''' - współrzędne sprawdzanego punktu '''$hGraphics''' - uchwyt do obiektu graphics '''UWAGA:''' Standardowo ocena co jest wnętrzem ścieżki jest typu XOR, tzn. dla nałożenia nieparzystej ilości wnętrz pojedynczych elementów (widać to na poniższym przykładzie). Funkcja reaguje na zmianę interpretacji funkcją _GDIPlus_PathSetFillMode. Dla typu OR za wnętrze zostanie uznany obszar zajmowany przez wnętrze przynajmniej jednego pojedynczego elementu. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("", 380, 380) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;tworzenie pędzla i pióra $hBrush = _GDIPlus_BrushCreateSolid(0xFFF00000) $hPen = _GDIPlus_PenCreate(0xFF8800AA, 8) ;tworzenie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 50, 50, 180, 180) _GDIPlus_PathAddEllipse($hPath, 150, 50, 180, 180) _GDIPlus_PathAddEllipse($hPath, 100, 150, 180, 180) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;wypełnienie ścieżki _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Do $iX = GUIGetCursorInfo($hGUI)[0] $iY = GUIGetCursorInfo($hGUI)[1] If _GDIPlus_PathIsOutlineVisiblePoint($hPath, $iX, $iY, $hPen) Then WinSetTitle($hGUI, "", "Ścieżka") ElseIf _GDIPlus_PathIsVisiblePoint($hPath, $iX, $iY) Then WinSetTitle($hGUI, "", "Wnętrze ścieżki") Else WinSetTitle($hGUI, "", "") EndIf Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathReset=== #include <GDIPlus.au3> _GDIPlus_PathReset ( $hPath ) Funkcja resetuje ścieżkę graficzną, tzn. usuwa wszystkie elementy graficzne i ustawia tryb wypełniania na 0. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki Przykład : <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 850, 300) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2) ;włączenie wygładzania krawędzi $hPath = _GDIPlus_PathCreate() $hFormat = _GDIPlus_StringFormatCreate() $hFamily = _GDIPlus_FontFamilyCreate("Arial") $tLayout = _GDIPlus_RectFCreate(0, 0, 900, 400) $hBrush = _GDIPlus_BrushCreateSolid() $hPen = _GDIPlus_PenCreate() For $i = 0 To 9 _GDIPlus_PathReset($hPath) ;resetowanie ścieżki _GDIPlus_PathAddString($hPath, "AutoIt", $tLayout, $hFamily, 2, 15+30*$i, $hFormat) _GDIPlus_GraphicsDrawPath($hGraphics, $hPath) _GDIPlus_BrushSetSolidColor($hBrush, 0xFF000000 + Random(0, 0xFFFFFF, 1)) _GDIPlus_GraphicsFillPath($hGraphics, $hPath, $hBrush) Sleep(400) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PenDispose($hPen) _GDIPlus_BrushDispose($hBrush) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathReverse=== #include <GDIPlus.au3> _GDIPlus_PathReverse ( $hPath ) Funkcja powoduje odwrócenie kolejności punktów definiujących ścieżkę graficzną. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki W poniższym przykładzie zastosowano _GDIPlus_PathReverse oby połączyć końce dwóch ścieżek, a nie jak jest standardowo koniec pierwszej ścieżki z początkiem drugiej: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> Local $iW = 600, $iH = 600 $hGUI = GUICreate("GDI+", $iW, $iH) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;włączenie wygładzania krawędzi $hBrush = _GDIPlus_BrushCreateSolid(0xFFFFA000) $hPen = _GDIPlus_PenCreate(0xFF000000, 2) $hPath = _GDIPlus_PathCreate() ;tworzenie spirali Local $iXOld = 0, $iYOld = 0, $iX, $iY, $iAngle = 0, $iRadius = 0 For $i = 0 To 200 $iX = Cos($iAngle) * $iRadius $iY = Sin($iAngle) * $iRadius $iAngle -= 0.1 $iRadius = $iAngle^2 / 2 _GDIPlus_PathAddLine($hPath, $iXOld, $iYOld, $iX, $iY) $iXOld = $iX $iYOld = $iY Next ;przesunięcie układu współrzędnych na środek okna _GDIPlus_GraphicsTranslateTransform($hGraphic, $iW/2, $iH/2) $hPath_Clone = _GDIPlus_PathClone($hPath) ;klonowanie ścieżki _GDIPlus_PathReverse($hPath_Clone) ;odwrócenie kolejności punktów ścieżki $hMatrix = _GDIPlus_MatrixCreate() ;tworzenie obiektu matrix ;skalowanie ścieżki _GDIPlus_MatrixScale($hMatrix, 1.5, 1.5) _GDIPlus_PathTransform($hPath_Clone, $hMatrix) _GDIPlus_PathAddPath($hPath, $hPath_Clone) ;łączenie ścieżek _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;wypełnienie ścieżki _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_PathDispose($hPath) _GDIPlus_PathDispose($hPath_Clone) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathSetMarker=== #include <GDIPlus.au3> _GDIPlus_PathSetMarker ( $hPath ) Funkcja ustawia marker na ostatnim punkcie ścieżki. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki Za pomocą funkcji _GDIPlus_PathSetMarker można podzielić ścieżkę na tak zwane podrozdziały (sekcje). Sposób wykorzystania podrozdziałów w opisie obiektu '''GraphicsPathIterator'''. ===_GDIPlus_PathStartFigure=== #include <GDIPlus.au3> _GDIPlus_PathStartFigure ( $hPath ) Funkcja rozpoczyna w ramach danej ścieżki tworzenie nowej figury bez zamykania poprzedniej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki W poniższym przykładzie rysujemy trzy identyczne linie pionowe. Po lewej stronie okna system standardowo dodaje linie łączące koniec poprzedniej linii z początkiem następnej. Po prawej stronie użyliśmy funkcji _GDIPlus_PathStartFigure informując system, że każda linia jest osobną figurą i dodatkowych linii już nie ma: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 700, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 5) ;ścieżka bez _GDIPlus_PathStartFigure $hPath1 = _GDIPlus_PathCreate() _GDIPlus_PathAddLine($hPath1, 50, 50, 50, 200) _GDIPlus_PathAddLine($hPath1, 150, 50, 150, 200) _GDIPlus_PathAddLine($hPath1, 250, 50, 250, 200) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath1, $hPen) ;ścieżka z _GDIPlus_PathStartFigure $hPath2 = _GDIPlus_PathCreate() _GDIPlus_PathAddLine($hPath2, 450, 50, 450, 200) _GDIPlus_PathStartFigure($hPath2) _GDIPlus_PathAddLine($hPath2, 550, 50, 550, 200) _GDIPlus_PathStartFigure($hPath2) _GDIPlus_PathAddLine($hPath2, 650, 50, 650, 200) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath2, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath1) _GDIPlus_PathDispose($hPath2) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathTransform=== #include <GDIPlus.au3> _GDIPlus_PathTransform ( $hPath, $hMatrix ) Funkcja dokonuje transformacji ścieżki graficznej zgodnie z przekształceniami zdefiniowanymi w obiekcie matrix. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$hMatrix''' - uchwyt do obiektu matrix Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> Local $iW = 600, $iH = 600 $hGUI = GUICreate("GDI+", $iW, $iH) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;włączenie wygładzania krawędzi ;przesunięcie układu współrzędnych do środka okna _GDIPlus_GraphicsTranslateTransform($hGraphic, $iW/2, $iH/2) $hPen = _GDIPlus_PenCreate(0xFF000000, 2) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, -250, -20, 500, 40) $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixRotate($hMatrix, 4) For $i=0 To 45 _GDIPlus_PathTransform($hPath, $hMatrix) ;transformacja ścieżki graficznej _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathWarp=== #include <GDIPlus.au3> _GDIPlus_PathWarp ( $hPath, $hMatrix, $aPoints, $nX, $nY, $nWidth, $nHeight [, $iWarpMode = 0 [, $fFlatness = 0.25]] ) Funkcja dokonuje transformacji ścieżki. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$hMatrix''' - uchwyt do obiektu matrix, 0 oznacza brak transformacji matrix '''$aPoints''' - dwuwymiarowa tablica ze współrzędnymi narożników czworoboku (równoległoboku), będącego wraz z przekształcanym prostokątem podstawą do wykonania transformacji. Tablica musi zawierać dane 3 lub 4 punktów. Dla 3 punktów obszar będzie miał kształt równoległoboku (współrzędne 4 narożnika będą wyliczone automatycznie), dla 4 punktów będzie dowolnym czworobokiem. [0][0] - ilość punktów, liczba ta powinna wynosić 3 lub 4 [1][0] - narożnik 1, współrzędna X [1][1] - narożnik 1, współrzędna Y [2][0] - narożnik 2, współrzędna X [2][1] - narożnik 2, współrzędna Y [3][0] - narożnik 3, współrzędna X [3][1] - narożnik 3, współrzędna Y [4][0] - narożnik 4, współrzędna X (opcjonalnie) [4][1] - narożnik 4, współrzędna Y (opcjonalnie) '''$nX''', '''$nY''' - współrzędne lewego górnego narożnika przekształcanego prostokąta '''$nWidth''', '''$nHeight''' - szerokość i wysokość przekształcanego prostokąta '''$iWarpMode''' - tryb przekształcenia, 0 - tryb perspektywy (domyślnie), 1 - tryb dwuliniowy '''$fFlatness''' - liczba rzeczywista określająca maksymalną odchyłkę między ścieżką, a jej przybliżeniem (dla wartości 0 transformacja nie jest realizowana) Transformacja polega na takim odkształceniu obszaru grafiki, że wyjściowy prostokąt przyjmie kształt, wielkość i położenie zdefiniowanego w tablicy czworokąta (równoległoboku). W czasie transformacji wyjściowa ścieżka jest zastąpiona linią łamaną. Parametr $fFlatness określa dokładność przybliżenia, im wartość mniejsza tym łamana składa się z większej liczby odcinków i przybliżenie jest dokładniejsze. Opcjonalne w obiekcie matrix można zdefiniować dodatkową transformację (np. obrót, skalowanie, itp.). Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> Local $iW = 600, $iH = 300 $hGUI = GUICreate("GDI+", $iW, $iH) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;włączenie wygładzania krawędzi _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) ;czarne tło $hPath = _GDIPlus_PathCreate() $hFormat = _GDIPlus_StringFormatCreate() _GDIPlus_StringFormatSetAlign($hFormat, 1) $hFamily = _GDIPlus_FontFamilyCreate("Arial Black") $tLayout = _GDIPlus_RectFCreate(0, 0, $iW, $iH) $sTxt = "AutoIt" & @LF & "to jest to!" & @LF & "Poleca Wasta" _GDIPlus_PathAddString($hPath, $sTxt, $tLayout, $hFamily, 0, 72, $hFormat) ;czworokąt transformacji Dim $aPoints[5][2] = [[4]] $aPoints[1][0] = $iW * 0.4 $aPoints[1][1] = $iH * 0.3 $aPoints[2][0] = $iW * 0.6 $aPoints[2][1] = $iH * 0.3 $aPoints[3][0] = 0 $aPoints[3][1] = $iH $aPoints[4][0] = $iW $aPoints[4][1] = $iH _GDIPlus_PathWarp($hPath, 0, $aPoints, 0, 0, $iW, $iH) ;transformacja warp $hBrush = _GDIPlus_BrushCreateSolid(0xFFFFFF00) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathWiden=== #include <GDIPlus.au3> _GDIPlus_PathWiden ( $hPath, $hPen [, $hMatrix = 0 [, $fFlatness = 0.25]] ) Funkcja dokonuje transformacji ścieżki. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$hPen''' - uchwyt pióra, które jest podstawą transformacji '''$hMatrix''' - uchwyt do obiektu matrix, zawierającego dane dodatkowej transformacji, 0 oznacza brak transformacji matrix '''$fFlatness''' - liczba rzeczywista określająca maksymalną odchyłkę między ścieżką, a jej przybliżeniem (dla wartości 0 transformacja nie jest realizowana) Transformacja polega na zastąpieniu wyjściowej ścieżki poprzez obszar ją otaczający. Obszar ten ma szerokość pióra $hPen i jest utworzony przez linie łamane przybliżające kształt wyjściowej ścieżki. Parametr $fFlatness określa dokładność przybliżenia, im wartość mniejsza tym łamana składa się z większej liczby odcinków i przybliżenie jest dokładniejsze. Jak widać w przykładzie 2 sposób tworzenia łamanych jest dość skomplikowany i wyrysowana linia ma zagmatwany przebieg. Natomiast wypełnienie obszaru ścieżki jest prawidłowe. Opcjonalne w obiekcie matrix można zdefiniować dodatkową transformację (np. obrót, skalowanie, itp.). Przykład 1: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 1200, 250) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPath = _GDIPlus_PathCreate() $hFormat = _GDIPlus_StringFormatCreate() $hFamily = _GDIPlus_FontFamilyCreate("Arial") $tLayout = _GDIPlus_RectFCreate(0, 0, 1200, 400) _GDIPlus_PathAddString($hPath, "AutoIt to jest to!", $tLayout, $hFamily, 0, 160, $hFormat) _GDIPlus_PathAddRectangle($hPath, 50, 180, 300, 20) $hBrush = _GDIPlus_BrushCreateSolid(0xFF0000FF) _GDIPlus_GraphicsDrawPath($hGraphics, $hPath) ;rysowanie ścieżki przed transformacją Sleep(2000) _GDIPlus_BrushSetSolidColor($hBrush, 0xFFFF5000) $hPen = _GDIPlus_PenCreate(0, 8) _GDIPlus_PathWiden($hPath, $hPen) ;transformacja ścieżki _GDIPlus_GraphicsFillPath($hGraphics, $hPath, $hBrush) ;wypełnienie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PenDispose($hPen) _GDIPlus_BrushDispose($hBrush) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_PathDispose($hPath) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> Przykład 2 (z dodatkową transformacją obiektem matrix): <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 800, 500) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;tworzenie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddRectangle($hPath, 250, 80, 300, 50) _GDIPlus_PathAddEllipse($hPath, 600, 78, 70, 50) _GDIPlus_GraphicsDrawPath($hGraphics, $hPath) ;rysowanie ścieżki przed transformacją Sleep(2000) ;tworzenie obiektu matrix $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixRotate($hMatrix, 30) $hPen = _GDIPlus_PenCreate(0, 15) _GDIPlus_PathWiden($hPath, $hPen, $hMatrix, 5) ;transformacja ścieżki _GDIPlus_GraphicsDrawPath($hGraphics, $hPath, 0) ;wyrysowanie ścieżki Sleep(2000) $hBrush = _GDIPlus_BrushCreateSolid(0xFF0000FF) _GDIPlus_BrushSetSolidColor($hBrush, 0xFFFF0000) _GDIPlus_GraphicsFillPath($hGraphics, $hPath, $hBrush) ;wypełnienie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PenDispose($hPen) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PathDispose($hPath) _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_PathWindingModeOutline=== #include <GDIPlus.au3> _GDIPlus_PathWindingModeOutline ( $hPath [, $hMatrix = 0 [, $fFlatness = 0.25]] ) Funkcja zamienia ścieżkę na jej obrys. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki '''$hMatrix''' - wskaźnik do obiektu Matrix, który określa transformację. Wartość 0 oznacza, że transformacja nie występuje. '''$fFlatness''' - liczba rzeczywista, która określa maksymalny błąd między ścieżką, a jego obrysem. Im mniejsza liczba tym większa ilość odcinków aproksymacji. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 800, 400) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF) $hPen = _GDIPlus_PenCreate(0xFF8800AA, 2) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddLine($hPath, 106, 330, 200, 40) _GDIPlus_PathAddLine($hPath, 294, 330, 48, 151) _GDIPlus_PathAddLine($hPath, 352, 151, 106, 330) $hPath_Clone = _GDIPlus_PathClone($hPath) $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixTranslate($hMatrix, 400, 0) _GDIPlus_PathWindingModeOutline($hPath_Clone, $hMatrix) _GDIPlus_GraphicsDrawString($hGraphic, "Ścieżka oryginalna", 40, 10) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) _GDIPlus_GraphicsDrawString($hGraphic, "Ścieżka po transformacji", 440, 10) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath_Clone, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_PathDispose($hPath) _GDIPlus_PathDispose($hPath_Clone) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ==Obiekt GraphicsPathIterator== GraphicsPathIterator jest obiektem umożliwiającym iteracyjne przeglądanie ścieżek podrzędnych (podścieżek lub podrozdziałów) w obiekcie GraphicsPath. Podścieżka to pojedyncza figura geometryczna dodawane do ścieżki którąś z funkcji _GDIPlus_PathAdd... Podrozdział to fragment ścieżki zawarty pomiędzy markerami, początkiem ścieżki i pierwszym markerem lub ostatnim markerem i końcem ścieżki. Markery można definiować w sposób jawny za pomocą funkcji _GDIPlus_PathSetMarker. Dla ścieżki zawierającej tekst podścieżkami są pojedyncze obiekty geometryczne tworzące znak. Na przykład litera B składa się z 3 podścieżek (obrys zewnętrzny i dwa obrysy wewnętrzne "brzuszków"). Podział na podrozdziały odbywa się poprzez niejawne wstawienie markerów pomiędzy pojedynczymi znakami (litera B będzie więc jednym podrozdziałem). ===_GDIPlus_PathIterCreate=== #include <GDIPlus.au3> _GDIPlus_PathIterCreate ( $hPath ) Funkcja tworzy obiekt GraphicsPathIterator na podstawie ścieżki o uchwycie podanym jako parametr. Zwraca uchwyt do tworzonego obiektu, lub 0 gdy wystąpił błąd. '''$hPath''' - uchwyt do ścieżki ===_GDIPlus_PathIterDispose=== #include <GDIPlus.au3> _GDIPlus_PathIterDispose ( $hPathIter ) Funkcja likwiduje obiekt GraphicsPathIterator. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathIter''' - uchwyt do obiektu GraphicsPathIterator ===_GDIPlus_PathIterGetSubpathCount=== #include <GDIPlus.au3> _GDIPlus_PathIterGetSubpathCount ( $hPathIter ) Funkcja zwraca ilość podścieżek, lub -1 gdy wystąpił błąd. '''$hPathIter''' - uchwyt do obiektu GraphicsPathIterator ===_GDIPlus_PathIterNextSubpathPath=== #include <GDIPlus.au3> _GDIPlus_PathIterNextSubpathPath ( $hPathIter, $hSubPath ) Funkcja odczytuje dane aktualnej podścieżki, dodaje je do ścieżki $hSubPath i przesuwa iterator na następną podścieżkę. Zwraca dwuelementową tablicę z ilością punktów podścieżki. Jeżeli wystąpi błąd makro @error przyjmuje wartość większą od 0. [0] - ilość punktów w pobranej podścieżce, lub 0 gdy nie ma więcej danych do pobrania [1] - True jeżeli podścieżka jest zamknięta, w przeciwnym razie False '''$hPathIter''' - uchwyt do obiektu GraphicsPathIterator '''$hSubPath''' - uchwyt do ścieżki, do której będą dodane dane podścieżki ===_GDIPlus_PathIterNextMarkerPath=== #include <GDIPlus.au3> _GDIPlus_PathIterNextMarkerPath ( $hPathIter, $hPath ) Funkcja odczytuje dane aktualnego podrozdziału, dodaje je do ścieżki $hSubPath i przesuwa iterator na następny podrozdział. Zwraca ilość punktów podrozdziału, lub 0 gdy nie ma więcej danych do pobrania. Jeżeli wystąpi błąd makro @error przyjmuje wartość większą od 0. '''$hPathIter''' - uchwyt do obiektu GraphicsPathIterator '''$hSubPath''' - uchwyt do ścieżki, do której będą dodane dane podrozdziału ===_GDIPlus_PathIterRewind=== #include <GDIPlus.au3> _GDIPlus_PathIterRewind ( $hPathIter ) Funkcja przesuwa iterator na pierwszą podścieżkę lub rozdział. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hPathIter''' - uchwyt do obiektu GraphicsPathIterator Przykład wykorzystania obiektu GraphicsPathIterator i iteracji po podścieżkach: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> Local $iBG = 0xFFFFFF00 $hGUI = GUICreate("GDI+", 720, 120) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2) ;włączenie wygładzania krawędzi _GDIPlus_GraphicsClear($hGraphics, $iBG) ;czyszczenie okna $hPen = _GDIPlus_PenCreate(0xFFFF0000, 3) ;tworzenie ścieżki z napisem $hPath = _GDIPlus_PathCreate() $hFormat = _GDIPlus_StringFormatCreate() $hFamily = _GDIPlus_FontFamilyCreate("Arial") $tLayout = _GDIPlus_RectFCreate(0, 0, 720, 120) _GDIPlus_PathAddString($hPath, "Jesteś szalona!", $tLayout, $hFamily, 0, 96, $hFormat) _GDIPlus_GraphicsDrawPath($hGraphics, $hPath, $hPen) ;rysowanie wyjściowej wersji napisu Sleep(1000) $hIter = _GDIPlus_PathIterCreate($hPath) ;tworzenie obiektu GraphicsPathIterator $iIterCnt = _GDIPlus_PathIterGetSubpathCount($hIter) ;ilość podścieżek $hSubPath = _GDIPlus_PathCreate() ;tworzenie ścieżki która będzie zawierać dane kolejnych podścieżek Do _GDIPlus_GraphicsClear($hGraphics, $iBG) ;czyszczenie okna For $i = 1 To $iIterCnt $hMatrix = _GDIPlus_MatrixCreate() ;tworzenie obiektu Matrix _GDIPlus_PathReset($hSubPath) ;zerowanie ścieżki _GDIPlus_PathIterNextSubpathPath($hIter, $hSubPath) ;dane podścieżki dodane do ścieżki $hSubPath $aBounds = _GDIPlus_PathGetWorldBounds($hSubPath) ;dane prostokąta mieszczącego podścieżkę ;definiowanie obiektu Matrix zawierającego przekształcenia kolejnych podścieżek _GDIPlus_MatrixTranslate($hMatrix, -($aBounds[0] + $aBounds[2] / 2), -($aBounds[1] + $aBounds[3] / 2)) _GDIPlus_MatrixRotate($hMatrix, Random(-30, 30), True) _GDIPlus_MatrixTranslate($hMatrix, $aBounds[0] + $aBounds[2] / 2, $aBounds[1] + $aBounds[3] / 2, True) _GDIPlus_PathTransform($hSubPath, $hMatrix) ;transformacja podścieżki _GDIPlus_MatrixDispose($hMatrix) ;likwidacja obiektu Matrix _GDIPlus_GraphicsDrawPath($hGraphics, $hSubPath, $hPen) ;rysowanie podścieżki po transformacji Next _GDIPlus_PathIterRewind($hIter) ;powrót do pierwszej podścieżki Sleep(50) Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_PathDispose($hSubPath) _GDIPlus_PathIterDispose($hIter) _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> Przykład wykorzystania obiektu GraphicsPathIterator i iteracji po podrozdziałach: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 600, 300) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2) _GDIPlus_GraphicsClear($hGraphics, 0xFF000000) $hBrush = _GDIPlus_BrushCreateSolid(0xFFAA00FF) $hPen = _GDIPlus_PenCreate(0xFFFFBB00, 2) $hPath = _GDIPlus_PathCreate() $hFormat = _GDIPlus_StringFormatCreate() _GDIPlus_StringFormatSetAlign($hFormat, 1) $hFamily = _GDIPlus_FontFamilyCreate("Arial") $tLayout = _GDIPlus_RectFCreate(0, 0, 600, 300) _GDIPlus_PathAddString($hPath, "AutoIt to jest to!", $tLayout, $hFamily, 0, 112, $hFormat) $hIter = _GDIPlus_PathIterCreate($hPath) $hSubPath = _GDIPlus_PathCreate() $iTimer = TimerInit() Do If TimerDiff($iTimer) > 100 Then Do _GDIPlus_PathReset($hSubPath) $iPointCount = _GDIPlus_PathIterNextMarkerPath($hIter, $hSubPath) ;dane podrozdziału dodane do ścieżki $hSubPath If $iPointCount <= 0 Then ExitLoop ;sprawdzenie czy osiągnięto koniec ścieżki _GDIPlus_PenSetColor($hPen, 0xFF000000 + Random(0xFF, 0xFFFFFF, 1)) _GDIPlus_BrushSetSolidColor($hBrush, BitOR(0xFF000000, Random(0xFF, 0xFFFFFF, 1))) _GDIPlus_GraphicsFillPath($hGraphics, $hSubPath, $hBrush) _GDIPlus_GraphicsDrawPath($hGraphics, $hSubPath, $hPen) Until 0 _GDIPlus_PathIterRewind($hIter) $iTimer = TimerInit() EndIf Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_PathDispose($hSubPath) _GDIPlus_PathIterDispose($hIter) _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() </syntaxhighlight> ==Regiony (obiekt)== Pojęcie regionu zostało wyjaśnione w części omawiającej bibliotekę WinAPI [[AutoIt/WinAPI#Regiony_.28Window_Regions.29|[WinAPI - Regiony]]]. Tam też znajduje się kilka funkcji do ich tworzenia i użycia. Teraz omówimy funkcje zawarte w bibliotece GDI+. Istnieje pewna istotna różnica pomiędzy regionami utworzonymi w bibliotece WinAPI (region GDI), a tymi z GDI+ (region GDI+). Region GDI+ to pewien obszar okna (można go np. zamalować jakimś pędzlem), natomiast region GDI to obszar okna, w którym to okno jest widoczne. Region GDI+ można zamienić na region GDI za pomocą funkcji '''_GDIPlus_RegionGetHRgn'''. ===_GDIPlus_RegionCreate=== #include <GDIPlus.au3> _GDIPlus_RegionCreate ( ) Funkcja tworzy obiekt Region. Zwraca uchwyt do utworzonego obiektu, lub 0 gdy wystąpił błąd (makro @error przyjmie wartość różną od 0). Tak utworzony region nie ma zdefiniowanego kształtu. ===_GDIPlus_RegionClone=== #include <GDIPlus.au3> _GDIPlus_RegionClone ( $hRegion ) Funkcja klonuje obiekt Region. Zwraca uchwyt do utworzonego obiektu, lub 0 gdy wystąpił błąd (makro @error przyjmie wartość różną od 0). '''$hRegion''' - uchwyt do klonowanego obiektu ===_GDIPlus_RegionCreateFromPath=== #include <GDIPlus.au3> _GDIPlus_RegionCreateFromPath ( $hPath ) Funkcja tworzy obiekt Region na podstawie wcześniej zdefiniowanej ścieżki z wypełnieniem. Zwraca uchwyt do utworzonego obiektu, lub 0 gdy wystąpił błąd (makro @error przyjmie wartość różną od 0). '''$hPath''' - uchwyt do ścieżki z wypełnieniem Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <GDIPlus.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState() ;okno normalne Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit _GDIPlus_Startup() ;region eliptyczny $aPos = WinGetPos($hGUI) $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddEllipse($hPath, 10, 10, $aPos[2]-20, $aPos[3]-20) $hReg = _GDIPlus_RegionCreateFromPath($hPath) $hRGN = _GDIPlus_RegionGetHRgn($hReg) _WinAPI_SetWindowRgn($hGUI, $hRGN) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;zwolnienie zasobów _WinAPI_DeleteObject($hRGN) _GDIPlus_RegionDispose($hReg) _GDIPlus_PathDispose($hPath) _GDIPlus_Shutdown() </syntaxhighlight> Przykład z tekstem jako regionem: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> $hGUI = GUICreate("GDI+", 620, 100) GUISetBkColor(0x80) ;Set window background color to blue GUISetState() _GDIPlus_Startup() $hFamily = _GDIPlus_FontFamilyCreate("Arial Black") ;tworzenie rodziny fontów $tLayout = _GDIPlus_RectFCreate() $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddString($hPath, "AutoIt to jest to!", $tLayout, $hFamily, 0, 60, 0) ;dodanie tekstu do ścieżki $hRegion = _GDIPlus_RegionCreateFromPath($hPath) ;tworzenie regionu _GDIPlus_RegionCombineRect($hRegion, 600, 0, 20,20) ;modyfikacja regionu $hRGN = _GDIPlus_RegionGetHRgn($hRegion, 0) ;tworzenie regionu GDI z regionu GDI+ _WinAPI_SetWindowRgn($hGUI, $hRGN) ;aktywacja regionu Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_FontFamilyDispose($hFamily) _WinAPI_DeleteObject($hRGN) _GDIPlus_RegionDispose($hRegion) _GDIPlus_PathDispose($hPath) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_RegionCreateFromRect=== #include <GDIPlus.au3> _GDIPlus_RegionCreateFromRect ( $iX, $iY, $iWidth, $iHeight ) Funkcja tworzy obiekt Region o kształcie prostokąta. Zwraca uchwyt do utworzonego obiektu, lub 0 gdy wystąpił błąd (makro @error przyjmie wartość różną od 0). '''$iX''' i '''$iY''' - współrzędne lewego górnego narożnika definiowanego regionu '''$iWidth''' i '''$iHeight - szerokość i wysokość definiowanego regionu Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <GDIPlus.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState() ;okno normalne Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit _GDIPlus_Startup() ;region prostokątny $hReg = _GDIPlus_RegionCreateFromRect(20, 10, 250, 200) $hRGN = _GDIPlus_RegionGetHRgn($hReg) _WinAPI_SetWindowRgn($hGUI, $hRGN) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;zwolnienie zasobów _WinAPI_DeleteObject($hRGN) _GDIPlus_RegionDispose($hReg) _GDIPlus_Shutdown() </syntaxhighlight> Przykład z zamalowaniem regionów: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <GDIPlus.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState() ;okno normalne Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit _GDIPlus_Startup() $aPos = WinGetPos($hGUI) $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_BrushCreateSolid(0x7F8800AA) ;tworzenie regionów $hRegion1 = _GDIPlus_RegionCreateFromRect(140, 0, 70, $aPos[3]) $hRegion2 = _GDIPlus_RegionCreateFromRect(0, 80, $aPos[2], $aPos[3]-160) ;zamalowanie regionów _GDIPlus_GraphicsFillRegion($hGraphic, $hRegion1, $hBrush) _GDIPlus_GraphicsFillRegion($hGraphic, $hRegion2, $hBrush) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;zwolnienie zasobów _GDIPlus_BitmapDispose($hBrush) _GDIPlus_RegionDispose($hRegion1) _GDIPlus_RegionDispose($hRegion2) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_RegionDispose=== #include <GDIPlus.au3> _GDIPlus_RegionDispose ( $hRegion ) Funkcja likwiduje obiekt Region. Zwraca True gdy sukces, lub False gdy wystąpił błąd (makro @error przyjmie wartość różną od 0). '''$hRegion''' - uchwyt do likwidowanego obiektu ===_GDIPlus_RegionCombinePath=== #include <GDIPlus.au3> _GDIPlus_RegionCombinePath ( $hRegion, $hPath [, $iCombineMode = 2] ) Funkcja modyfikuje istniejący obiekt Region za pomocą ścieżki z wypełnieniem. Zwraca True gdy sukces, lub False gdy wystąpił błąd (makro @error przyjmie wartość różną od 0). Zmodyfikowany obiekt będzie kombinacją istniejącego regionu i ścieżki z wypełnieniem. '''$hRegion''' - uchwyt do regionu '''$hPath''' - uchwyt ścieżki z wypełnieniem '''$iCombineMode''' - tryb modyfikacji: 0 - nowy region opisany ścieżką zastępuje ten istniejący 1 - nowy region jest częścią wspólną istniejącego regionu i ścieżki z wypełnieniem 2 - nowy region jest sumą istniejącego regionu i ścieżki z wypełnieniem 3 - nowy region jest połączeniem XOR istniejącego regionu i ścieżki z wypełnieniem 4 - nowy region obejmuje obszar, który jest w istniejącym regionie, ale nie w ścieżce 5 - nowy region obejmuje obszar, który jest w ścieżce, ale nie jest w istniejącym regionie Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <GDIPlus.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState() ;okno normalne Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit _GDIPlus_Startup() ;region eliptyczny z okienkiem $aPos = WinGetPos($hGUI) $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddEllipse($hPath, 10, 25, $aPos[2]-20, $aPos[3]-50) $hPath1 = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddRectangle($hPath1, 100, 0, $aPos[2]-200, $aPos[3]) $hPath2 = _GDIPlus_PathCreate() ;tworzenie ścież _GDIPlus_PathAddEllipse($hPath2, $aPos[2]-230, $aPos[3]-170, 100, 100) $hReg = _GDIPlus_RegionCreateFromPath($hPath) _GDIPlus_RegionCombinePath($hReg, $hPath1, 3) ;łączenie typu XOR _GDIPlus_RegionCombinePath($hReg, $hPath2, 2) ;łączenie typu XOR $hRGN = _GDIPlus_RegionGetHRgn($hReg) _WinAPI_SetWindowRgn($hGUI, $hRGN) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;zwolnienie zasobów _WinAPI_DeleteObject($hRGN) _GDIPlus_RegionDispose($hReg) _GDIPlus_PathDispose($hPath) _GDIPlus_PathDispose($hPath1) _GDIPlus_PathDispose($hPath2) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_RegionCombineRegion=== #include <GDIPlus.au3> _GDIPlus_RegionCombineRegion ( $hRegionDst, $hRegionSrc [, $iCombineMode = 2] ) Funkcja modyfikuje istniejący obiekt Region za pomocą innego regionu. Zwraca True gdy sukces, lub False gdy wystąpił błąd (makro @error przyjmie wartość różną od 0). Zmodyfikowany obiekt będzie kombinacją dwóch regionów. '''$hRegionDst''' - region modyfikowany '''$hRegionSrc''' - region modyfikujący '''$iCombineMode''' - tryb modyfikacji: 0 - region modyfikujący zastępuje region modyfikowany 1 - nowy region jest częścią wspólną istniejącego regionu modyfikowanego i modyfikującego 2 - nowy region jest sumą regionu modyfikowanego i modyfikującego 3 - nowy region jest połączeniem XOR regionu modyfikowanego i modyfikującego 4 - nowy region obejmuje obszar, który jest w regionie modyfikowanym, ale nie jest w modyfikującym 5 - nowy region obejmuje obszar, który jest w regionie modyfikującym, ale nie jest w modyfikowanym Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <GDIPlus.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState() ;okno normalne Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit _GDIPlus_Startup() ;region eliptyczny z okienkiem $aPos = WinGetPos($hGUI) $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddEllipse($hPath, 10, 10, $aPos[2]-20, $aPos[3]-20) $hReg = _GDIPlus_RegionCreateFromPath($hPath) $hReg2 = _GDIPlus_RegionCreateFromRect(100, 70, $aPos[2]-200, $aPos[3]-140) _GDIPlus_RegionCombineRegion($hReg, $hReg2, 3) ;łączenie regionów typu XOR $hRGN = _GDIPlus_RegionGetHRgn($hReg) _WinAPI_SetWindowRgn($hGUI, $hRGN) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;zwolnienie zasobów _WinAPI_DeleteObject($hRGN) _GDIPlus_RegionDispose($hReg) _GDIPlus_RegionDispose($hReg2) _GDIPlus_PathDispose($hPath) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_RegionCombineRect=== #include <GDIPlus.au3> _GDIPlus_RegionCombineRect ( $hRegion, $iX, $iY, $iWidth, $iHeight [, $iCombineMode = 2] ) Funkcja modyfikuje istniejący obiekt Region za pomocą prostokątnego obszaru. Zwraca True gdy sukces, lub False gdy wystąpił błąd (makro @error przyjmie wartość różną od 0). Zmodyfikowany obiekt będzie kombinacją istniejącego regionu i ścieżki z wypełnieniem. '''$hRegion''' - uchwyt do regionu '''$iX''' i '''$iY''' - współrzędne lewego górnego narożnika definiowanego regionu '''$iWidth''' i '''$iHeight - szerokość i wysokość definiowanego regionu '''$iCombineMode''' - tryb modyfikacji: 0 - nowy prostokątny region zastępuje ten istniejący 1 - nowy region jest częścią wspólną istniejącego regionu i prostokąta 2 - nowy region jest sumą istniejącego regionu i prostokąta 3 - nowy region jest połączeniem XOR istniejącego regionu i prostokąta 4 - nowy region obejmuje obszar, który jest w istniejącym regionie, ale nie w prostokącie 5 - nowy region obejmuje obszar, który jest w prostokącie, ale nie jest w istniejącym regionie Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <GDIPlus.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState() ;okno normalne Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit _GDIPlus_Startup() ;region eliptyczny z okienkiem $aPos = WinGetPos($hGUI) $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddEllipse($hPath, 10, 10, $aPos[2]-20, $aPos[3]-20) $hReg = _GDIPlus_RegionCreateFromPath($hPath) _GDIPlus_RegionCombineRect($hReg, 140, 0, $aPos[2]-280, $aPos[3], 4) $hRGN = _GDIPlus_RegionGetHRgn($hReg) _WinAPI_SetWindowRgn($hGUI, $hRGN) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;zwolnienie zasobów _WinAPI_DeleteObject($hRGN) _GDIPlus_RegionDispose($hReg) _GDIPlus_PathDispose($hPath) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_RegionGetBounds=== #include <GDIPlus.au3> _GDIPlus_RegionGetBounds ( $hRegion, $hGraphics ) Funkcja zwraca w postaci 4-elementowej tablicy położenie i wielkość prostokąta, w którym zawiera się region. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. [0] - współrzędna X lewego górnego narożnika prostokąta [1] - współrzędna Y lewego górnego narożnika prostokąta [2] - szerokość prostokąta [3] - wysokość prostokąta '''$hRegion''' - uchwyt do regionu '''$hGraphics''' - uchwyt do obiektu Graphics ===_GDIPlus_RegionGetHRgn=== #include <GDIPlus.au3> _GDIPlus_RegionGetHRgn ( $hRegion [, $hGraphics = 0] ) Funkcja tworzy obiekt Region GDI z regionu GDI+. Zwraca uchwyt do utworzonego obiektu GDI, lub 0 gdy wystąpił błąd (makro @error przyjmie wartość różną od 0). '''$hRegion''' - uchwyt do regionu '''$hGraphics''' - uchwyt do obiektu Graphics ===_GDIPlus_RegionTransform=== #include <GDIPlus.au3> _GDIPlus_RegionTransform ( $hRegion, $hMatrix ) Funkcja modyfikuje istniejący region za pomocą obiektu Matrix. Zwraca True gdy sukces, lub False gdy wystąpił błąd (makro @error przyjmie wartość różną od 0). '''$hRegion''' - uchwyt do regionu '''$hMatrix''' - uchwyt do obiektu Matrix Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <GDIPlus.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState() ;okno normalne Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit _GDIPlus_Startup() ;region eliptyczny z okienkiem $aPos = WinGetPos($hGUI) $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddEllipse($hPath, 50, 40, $aPos[2]-100, $aPos[3]-80) $hReg = _GDIPlus_RegionCreateFromPath($hPath) ;tworzenie regionu $hMatrix = _GDIPlus_MatrixCreate() ;tworzenie obiektu matrix _GDIPlus_MatrixShear($hMatrix, 0.3, 0.15) ;definiowanie ścinania _GDIPlus_RegionTransform ($hReg, $hMatrix) ;transformacja regionu $hRGN = _GDIPlus_RegionGetHRgn($hReg) _WinAPI_SetWindowRgn($hGUI, $hRGN) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;zwolnienie zasobów _WinAPI_DeleteObject($hRGN) _GDIPlus_RegionDispose($hReg) _GDIPlus_PathDispose($hPath) _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_RegionTranslate=== #include <GDIPlus.au3> _GDIPlus_RegionTranslate ( $hRegion, $iDX, $iDY ) Funkcja przesuwa region o podaną wartość w poziomie i pionie. Zwraca True gdy sukces, lub False gdy wystąpił błąd (makro @error przyjmie wartość różną od 0). '''$hRegion''' - uchwyt do regionu '''$iDX''' i '''$iDY''' - wielkość przesunięcia w poziomie i pionie Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <GDIPlus.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState() ;okno normalne Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit _GDIPlus_Startup() ;okno z regionem $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddRectangle($hPath, 0, 0, 250, 150) ;dodanie prostokąta do ścieżki $hReg = _GDIPlus_RegionCreateFromPath($hPath) ;tworzenie regionu ze ścieżki $hReg1 = _GDIPlus_RegionClone($hReg) ;klonowanie regionu _GDIPlus_RegionTranslate($hReg1, 100, 60) ;przesunięcie regionu _GDIPlus_RegionCombineRegion ($hReg, $hReg1, 3) ;modyfikacja regionu $hRGN = _GDIPlus_RegionGetHRgn($hReg) ;zmiana regionu GDI+ na GDI _WinAPI_SetWindowRgn($hGUI, $hRGN) ;aktywacja regionu Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;zwolnienie zasobów _WinAPI_DeleteObject($hRGN) _GDIPlus_RegionDispose($hReg) _GDIPlus_RegionDispose($hReg1) _GDIPlus_PathDispose($hPath) _GDIPlus_Shutdown() </syntaxhighlight> =Tworzenie grafiki= ==Wstawianie tekstów== ===_GDIPlus_GraphicsDrawString=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawString($hGraphics, $sString, $nX, $nY [, $sFont = "Arial" [, $fSize = 10 [, $iFormat = 0]]]) Funkcja wstawia tekst w obszarze rysowania. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$sString''' - tekst do wstawienia '''$nX''' i '''$nY''' - współrzędne początku wprowadzanego tekstu '''$sFont''' - nazwa fontu jak w systemie, np. "arial", "courier" itp '''$fSize''' - wielkość fontu '''$iFormat''' - kod formatu (np. 0 - tekst wpisywany w prawo (domyślne), 1 - tekst wpisywany w lewo, 2 - tekst wpisywany w pionie) Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 400) GUISetState() ;tworzenie zasobów _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;wpisanie tekstu _GDIPlus_GraphicsDrawString($hGraphic, "Witajcie!", 200, 100, "courier", 20) Sleep(1000) _GDIPlus_GraphicsDrawString($hGraphic, "Witajcie!", 200, 100, "arial black", 28, 1) Sleep(1000) _GDIPlus_GraphicsDrawString($hGraphic, "Witajcie!", 200, 100, "arial", 36, 2) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsDrawStringEx=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawStringEx($hGraphics, $sString, $hFont, $tLayout, $hFormat, $hBrush) Funkcja wstawia tekst w obszarze rysowania. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$sString''' - tekst do wstawienia '''$hFont''' - uchwyt do fontu, którym ma być wypisany tekst, zwracany przez '''_GDIPlus_FontCreate''' '''$tLayout''' - struktura z danymi położenia i wielkości pola tekstowego, zwracana przez '''_GDIPlus_RectFCreate''' '''$hFormat''' - uchwyt do formatu stringu, zwracany przez '''_GDIPlus_StringFormatCreate''' '''$hBrush''' - uchwyt do pędzla, którym będzie wpisywany tekst, zwracany przez ''' _GDIPlus_BrushCreateSolid''' Funkcja jest rozszerzoną wersją funkcji '''_GDIPlus_GraphicsDrawString'''. Wymaga wprawdzie zdefiniowania kilku dodatkowych elementów, ale umożliwia o wiele większą kontrolę nad wprowadzanym tekstem. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() ;tworzenie zasobów _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hFormat = _GDIPlus_StringFormatCreate() $hBrush = _GDIPlus_BrushCreateSolid(0xAA0000FF) $hFamily = _GDIPlus_FontFamilyCreate("courier") $hFont = _GDIPlus_FontCreate($hFamily, 24, 0, 0) $tLayout = _GDIPlus_RectFCreate(140, 80, 150, 50) $hBrush1 = _GDIPlus_BrushCreateSolid(0xFFFF0000) $hFamily1 = _GDIPlus_FontFamilyCreate("arial") $hFont1 = _GDIPlus_FontCreate($hFamily1, 40, 7, 0) $tLayout1 = _GDIPlus_RectFCreate(140, 180, 150, 50) ;wpisanie tekstu _GDIPlus_GraphicsDrawStringEx($hGraphic, "Cześć!", $hFont, $tLayout, $hFormat, $hBrush) _GDIPlus_GraphicsDrawStringEx($hGraphic, "Cześć!", $hFont1, $tLayout1, $hFormat, $hBrush1) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush) _GDIPlus_FontDispose($hFont1) _GDIPlus_FontFamilyDispose($hFamily1) _GDIPlus_BrushDispose($hBrush1) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ==Rysowanie== Zbiór funkcji rysujących różne figury geometryczne. ===_GDIPlus_GraphicsDrawArc=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawArc($hGraphics, $iX, $iY, $iWidth, $iHeight, $fStartAngle, $fSweepAngle [, $hPen = 0]) Funkcja rysuje łuk elipsy. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$iX''', '''$iY''' - współrzędna lewego górnego rogu prostokąta ograniczającego elipsę, której łuk ma być narysowany ''''$iWidth''', '''$iHeight''' - długość i wysokość prostokąta ograniczającego elipsę '''$fStartAngle''' - kąt pomiędzy osią X i punkt początkowy łuku, wierzchołek kąta w środku elipsy '''$fSweepAngle''' - kąt pomiędzy punktem początkowym i końcowym łuku '''$hPen''' - uchwyt do pióra, którym będzie rysowany łuk, domyślna wartość 0 oznacza ciągłą linię o grubości 1 i kolorze czarnym Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie łuku domyślnym piórem ;przy takich parametrach, łuk będzie pełnym okręgiem _GDIPlus_GraphicsDrawArc($hGraphic, 160, 100, 100, 100, 0, 360) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) ;tworzenie pióra _GDIPlus_GraphicsDrawArc($hGraphic, 110, 160, 200, 100, 120, 90, $hPen) _GDIPlus_PenSetColor($hPen, 0xFF0000FF) ;zmiana koloru pióra _GDIPlus_GraphicsDrawArc($hGraphic, 210, 30, 120, 250, 220, 290, $hPen) _GDIPlus_PenSetDashStyle($hPen, 4) ;zmiana rodzaju linii na przerywaną _GDIPlus_GraphicsDrawArc($hGraphic, 50, 20, 80, 100, 200, 190, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsDrawBezier=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawBezier($hGraphics, $iX1, $iY1, $iX2, $iY2, $iX3, $iY3, $iX4, $iY4 [, $hPen = 0]) Funkcja rysuje krzywą Beziera. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$iX1''', '''$iY1''' - współrzędne początku krzywej '''$iX2''', '''$iY2''' - współrzędne pierwszego punktu kontrolnego '''$iX3''', '''$iY3''' - współrzędne drugiego punktu kontrolnego '''$iX4''', '''$iY4''' - współrzędne końca krzywej '''$hPen''' - uchwyt do pióra, którym będzie rysowana krzywa, domyślna wartość 0 oznacza ciągłą linię o grubości 1 i kolorze czarnym Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie krzywej Beziera _GDIPlus_GraphicsDrawBezier($hGraphic, 50, 150, 100, 5, 125, 325, 350, 130) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsDrawCurve=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawCurve($hGraphics, $aPoints [, $hPen = 0]) Funkcja rysuje krzywą. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$aPoints''' - dwuwymiarowa tablica z danymi punktów, przez które ma przejść krzywa [0][0] - ilość punktów [1][0] - punkt 1, współrzędna X [1][1] - punkt 1, współrzędna Y [2][0] - punkt 2, współrzędna X [2][1] - punkt 2, współrzędna y ... [n][0] - punkt n-ty, współrzędna X [n][1] - punkt n-ty, współrzędna y '''$hPen''' - uchwyt do pióra, którym będzie rysowana krzywa, domyślna wartość 0 oznacza ciągłą linię o grubości 1 i kolorze czarnym Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie krzywej Dim $aPoints[5][2] = [[4, 0],[10, 50],[100, 100],[190, 50],[280, 120]] _GDIPlus_GraphicsDrawCurve($hGraphic, $aPoints) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsDrawClosedCurve=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawClosedCurve($hGraphics, $aPoints [, $hPen = 0]) Funkcja rysuje krzywą zamkniętą. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$aPoints''' - dwuwymiarowa tablica z danymi punktów, przez które ma przejść krzywa [0][0] - ilość punktów [1][0] - punkt 1, współrzędna X [1][1] - punkt 1, współrzędna Y [2][0] - punkt 2, współrzędna X [2][1] - punkt 2, współrzędna y ... [n][0] - punkt n-ty, współrzędna X [n][1] - punkt n-ty, współrzędna y '''$hPen''' - uchwyt do pióra, którym będzie rysowana krzywa, domyślna wartość 0 oznacza ciągłą linię o grubości 1 i kolorze czarnym Od '''_GDIPlus_GraphicsDrawCurve''' różni się tym, że ostatni punkt krzywej zostaje połączony z pierwszym. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie krzywej Dim $aPoints[5][2] = [[4, 0],[10, 50],[100, 100],[190, 50],[280, 120]] _GDIPlus_GraphicsDrawClosedCurve($hGraphic, $aPoints) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsDrawEllipse=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawEllipse($hGraphics, $iX, $iY, $iWidth, $iHeight [, $hPen = 0]) Funkcja rysuje elipsę. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$iX''', '''$iY''' - współrzędna lewego górnego rogu prostokąta ograniczającego elipsę, której łuk ma być narysowany '''$iWidth''', '''$iHeight''' - długość i wysokość prostokąta ograniczającego elipsę, dla $iWidth = $iHeight zostanie narysowany okrąg '''$hPen''' - uchwyt do pióra, którym będzie rysowana elipsa, domyślna wartość 0 oznacza ciągłą linię o grubości 1 i kolorze czarnym Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie elipsy domyślnym piórem ;przy takich parametrach elipsa jest okręgiem _GDIPlus_GraphicsDrawEllipse($hGraphic, 160, 100, 100, 100) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) ;tworzenie pióra _GDIPlus_GraphicsDrawEllipse($hGraphic, 210, 30, 120, 250, $hPen) _GDIPlus_PenSetDashStyle($hPen, 2) ;zmiana rodzaju linii na przerywaną _GDIPlus_GraphicsDrawEllipse($hGraphic, 50, 20, 100, 70, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsDrawLine=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawLine($hGraphics, $iX1, $iY1, $iX2, $iY2 [, $hPen = 0]) Funkcja rysuje odcinek linii prostej. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$iX1''', '''$iY1''', '''$iX2''', '''$iY2''' - współrzędne początku i końca rysowanego odcinka '''$hPen''' - uchwyt do pióra, którym będzie rysowany odcinek, domyślna wartość 0 oznacza ciągłą linię o grubości 1 i kolorze czarnym Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie linii domyślnym piórem _GDIPlus_GraphicsDrawLine($hGraphic, 10, 150, 390, 150) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 3) ;tworzenie pióra _GDIPlus_GraphicsDrawLine($hGraphic, 10, 150, 390, 250, $hPen) _GDIPlus_PenSetColor($hPen, 0xFF0000FF) ;zmiana koloru pióra _GDIPlus_GraphicsDrawLine($hGraphic, 100, 50, 390, 250, $hPen) _GDIPlus_PenSetDashStyle($hPen, 1) ;zmiana rodzaju linii na przerywaną _GDIPlus_GraphicsDrawLine($hGraphic, 100, 50, 390, 150, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsDrawPath=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawPath ( $hGraphics, $hPath [, $hPen = 0] ) Funkcja rysuje ścieżkę. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$hPath''' - uchwyt do ścieżki '''$hPen''' - uchwyt do pióra, którym będzie rysowana ścieżka, domyślna wartość 0 oznacza ciągłą linię o grubości 1 i kolorze czarnym Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 280, 190) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) $hPen = _GDIPlus_PenCreate(0xFFFFFFFF, 2) $hPath = _GDIPlus_PathCreate() ;tworzenie i rysowanie ścieżki _GDIPlus_PathAddEllipse($hPath, 10,10, 100, 100) _GDIPlus_PathAddEllipse($hPath, 90,10, 100, 100) _GDIPlus_PathAddEllipse($hPath, 170,10, 100, 100) _GDIPlus_PathAddEllipse($hPath, 50,80, 100, 100) _GDIPlus_PathAddEllipse($hPath, 130,80, 100, 100) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsDrawPie=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawPie($hGraphics, $iX, $iY, $iWidth, $iHeight, $fStartAngle, $fSweepAngle [, $hPen = 0]) Funkcja rysuje wycinek elipsy (bez wypełnienia). Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$iX''', '''$iY''' - współrzędna lewego górnego rogu prostokąta ograniczającego elipsę, której łuk ma być narysowany ''''$iWidth''', '''$iHeight''' - długość i wysokość prostokąta ograniczającego elipsę '''$fStartAngle''' - kąt pomiędzy osią X i punkt początkowy łuku, wierzchołek kąta w środku elipsy '''$fSweepAngle''' - kąt pomiędzy punktem początkowym i końcowym łuku '''$hPen''' - uchwyt do pióra, którym będzie rysowany wycinek, domyślna wartość 0 oznacza ciągłą linię o grubości 1 i kolorze czarnym Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie wycinka elipsy domyślnym piórem _GDIPlus_GraphicsDrawPie($hGraphic, 80, 10, 100, 180, 45, 150) $hPen = _GDIPlus_PenCreate(0xFFFF0000, 2) ;tworzenie pióra _GDIPlus_GraphicsDrawPie($hGraphic, 110, 30, 250, 100, 0, 120, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsDrawPolygon=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawPolygon($hGraphics, $aPoints [, $hPen = 0]) Funkcja rysuje wielokąt (bez wypełnienia). Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$aPoints''' - dwuwymiarowa tablica z danymi punktów, będących wierzchołkami wielokąta [0][0] - ilość punktów [1][0] - punkt 1, współrzędna X [1][1] - punkt 1, współrzędna Y [2][0] - punkt 2, współrzędna X [2][1] - punkt 2, współrzędna y ... [n][0] - punkt n-ty, współrzędna X [n][1] - punkt n-ty, współrzędna y '''$hPen''' - uchwyt do pióra, którym będzie rysowany wielokąt, domyślna wartość 0 oznacza ciągłą linię o grubości 1 i kolorze czarnym Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie wielokąta Dim $aPoints[5][2] = [[4, 0],[10, 50],[100, 100],[190, 250],[280, 120]] _GDIPlus_GraphicsDrawPolygon($hGraphic, $aPoints) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsDrawRect=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawRect($hGraphics, $iX, $iY, $iWidth, $iHeight [, $hPen = 0]) Funkcja rysuje prostokąt. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$iX''', '''$iY''' - współrzędna lewego górnego rogu prostokąta ograniczającego elipsę, której łuk ma być narysowany ''''$iWidth''', '''$iHeight''' - długość i wysokość prostokąta '''$hPen''' - uchwyt do pióra, którym będzie rysowany prostokąt, domyślna wartość 0 oznacza ciągłą linię o grubości 1 i kolorze czarnym Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie prostokąta _GDIPlus_GraphicsDrawRect($hGraphic, 100, 100, 100, 150) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsFillClosedCurve=== #include <GDIPlus.au3> _GDIPlus_GraphicsFillClosedCurve($hGraphics, $aPoints [, $hBrush = 0]) Funkcja rysuje krzywą zamkniętą z wypełnieniem. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$aPoints''' - dwuwymiarowa tablica z danymi punktów, przez które ma przejść krzywa [0][0] - ilość punktów [1][0] - punkt 1, współrzędna X [1][1] - punkt 1, współrzędna Y [2][0] - punkt 2, współrzędna X [2][1] - punkt 2, współrzędna y ... [n][0] - punkt n-ty, współrzędna X [n][1] - punkt n-ty, współrzędna y '''$hBrush''' - uchwyt do pędzla, którym będzie zamalowane wnętrze krzywej, domyślna wartość 0 kolor czarny Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie krzywej z wypełnieniem Dim $aPoints[5][2] = [[4, 0],[10, 50],[100, 100],[190, 50],[280, 120]] _GDIPlus_GraphicsFillclosedCurve($hGraphic, $aPoints) ;tworzenie pędzla z przezroczystym kolorem $hbrush = _GDIPlus_BrushCreateSolid(0xC0FF0000) Dim $aPoints1[5][2] = [[4, 0],[10, 20],[100, 100],[190, 250],[280, 120]] _GDIPlus_GraphicsFillclosedCurve($hGraphic, $aPoints1, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsFillEllipse=== #include <GDIPlus.au3> _GDIPlus_GraphicsFillEllipse($hGraphics, $iX, $iY, $iWidth, $iHeight [, $hBrush = 0]) Funkcja rysuje elipsę z wypełnieniem. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$iX''', '''$iY''' - współrzędna lewego górnego rogu prostokąta ograniczającego elipsę, której łuk ma być narysowany '''$iWidth''', '''$iHeight''' - długość i wysokość prostokąta ograniczającego elipsę, dla $iWidth = $iHeight zostanie narysowane koło '''$hBrush''' - uchwyt do pędzla, którym będzie zamalowana elipsa, domyślna wartość 0 oznacza kolor czarny Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie elipsy domyślnym pędzlem _GDIPlus_GraphicsfillEllipse($hGraphic, 160, 100, 150, 100) $hBrush = _GDIPlus_BrushCreateSolid(0xB0FF0000) ;tworzenie pędzla _GDIPlus_GraphicsFillEllipse($hGraphic, 210, 30, 120, 250, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsFillPath=== #include <GDIPlus.au3> _GDIPlus_GraphicsFillPath ( $hGraphics, $hPath [, $hBrush = 0] ) Funkcja zamalowuje ścieżkę. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$hPath''' - uchwyt do ścieżki '''$hBrush''' - uchwyt do pędzla, którym będzie zamalowana ścieżka, domyślna wartość 0 oznacza kolor czarny Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("_GDIPlus_PathAddRectangle", 400, 340) GUISetState(@SW_SHOW) _GDIPlus_Startup() ;tworzenie obiektu graficznego i zasobów $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_BrushCreateSolid(0xFFFF0000) ;tworzenie i definiowanie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddRectangle($hPath, 50, 140, 300, 50) _GDIPlus_PathAddEllipse($hPath, 160, 50, 80, 80) _GDIPlus_PathAddEllipse($hPath, 160, 200, 80, 80) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;wypełnienie ścieżki Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsFillPie=== #include <GDIPlus.au3> _GDIPlus_GraphicsFillPie($hGraphics, $iX, $iY, $iWidth, $iHeight, $fStartAngle, $fSweepAngle [, $hBrush = 0]) Funkcja rysuje wycinek elipsy z wypełnieniem. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$iX''', '''$iY''' - współrzędna lewego górnego rogu prostokąta ograniczającego elipsę, której łuk ma być narysowany ''''$iWidth''', '''$iHeight''' - długość i wysokość prostokąta ograniczającego elipsę '''$fStartAngle''' - kąt pomiędzy osią X i punkt początkowy łuku, wierzchołek kąta w środku elipsy '''$fSweepAngle''' - kąt pomiędzy punktem początkowym i końcowym łuku '''$hBrush''' - uchwyt do pędzla, którym będzie zamalowana elipsa, domyślna wartość 0 oznacza kolor czarny Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie wycinka elipsy domyślnym pędzlem _GDIPlus_GraphicsFillPie($hGraphic, 80, 10, 100, 180, 45, 150) $hBrush = _GDIPlus_BrushCreateSolid(0xFF0000FF) ;tworzenie pędzla _GDIPlus_GraphicsFillPie($hGraphic, 110, 30, 250, 100, 0, 120, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsFillPolygon=== #include <GDIPlus.au3> _GDIPlus_GraphicsFillPolygon($hGraphics, $aPoints [, $hBrush = 0]) Funkcja rysuje wielokąt z wypełnieniem. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$aPoints''' - dwuwymiarowa tablica z danymi punktów, będących wierzchołkami wielokąta [0][0] - ilość punktów [1][0] - punkt 1, współrzędna X [1][1] - punkt 1, współrzędna Y [2][0] - punkt 2, współrzędna X [2][1] - punkt 2, współrzędna y ... [n][0] - punkt n-ty, współrzędna X [n][1] - punkt n-ty, współrzędna y '''$hBrush''' - uchwyt do pędzla, którym będzie zamalowany wielokąt, domyślna wartość 0 oznacza kolor czarny Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie wielokąta Dim $aPoints[5][2] = [[4, 0],[10, 50],[100, 100],[190, 250],[280, 120]] _GDIPlus_GraphicsFillPolygon($hGraphic, $aPoints) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsFillRect=== #include <GDIPlus.au3> _GDIPlus_GraphicsFillRect($hGraphics, $iX, $iY, $iWidth, $iHeight [, $hBrush = 0]) Funkcja rysuje prostokąt z wypełnieniem. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$iX''', '''$iY''' - współrzędna lewego górnego rogu prostokąta ''''$iWidth''', '''$iHeight''' - długość i wysokość prostokąta '''$hBrush''' - uchwyt do pędzla, którym będzie zamalowany prostokąt, domyślna wartość 0 oznacza kolor czarny Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;tworzenie pędzli i rysowanie prostokątów $hbrush = _GDIPlus_BrushCreateSolid(0xFFFF0000) _GDIPlus_GraphicsFillRect($hGraphic, 100, 50, 100, 150, $hBrush) $hbrush = _GDIPlus_BrushCreateSolid(0x800000FF) _GDIPlus_GraphicsFillRect($hGraphic, 150, 50, 100, 150, $hBrush) $hbrush = _GDIPlus_BrushCreateSolid(0x8000FF00) _GDIPlus_GraphicsFillRect($hGraphic, 125, 100, 100, 150, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsFillRegion=== #include <GDIPlus.au3> _GDIPlus_GraphicsFillRegion ( $hGraphics, $hRegion [, $hBrush = 0] ) Funkcja zamalowuje obszar wcześniej zdefiniowanego regionu. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC'' '''$hRegion''' - uchwyt do regionu '''$hBrush''' - uchwyt do pędzla, którym region zostanie zamalowany Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <GDIPlus.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState() ;okno normalne Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit _GDIPlus_Startup() $aPos = WinGetPos($hGUI) $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_BrushCreateSolid(0x7F8800AA) ;tworzenie regionów $hRegion1 = _GDIPlus_RegionCreateFromRect(140, 0, 70, $aPos[3]) $hRegion2 = _GDIPlus_RegionCreateFromRect(0, 80, $aPos[2], $aPos[3]-160) ;zamalowanie regionów _GDIPlus_GraphicsFillRegion($hGraphic, $hRegion1, $hBrush) _GDIPlus_GraphicsFillRegion($hGraphic, $hRegion2, $hBrush) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;zwolnienie zasobów _GDIPlus_BitmapDispose($hBrush) _GDIPlus_RegionDispose($hRegion1) _GDIPlus_RegionDispose($hRegion2) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsClear=== #include <GDIPlus.au3> _GDIPlus_GraphicsClear($hGraphics [, $iARGB = 0xFF000000]) Funkcja czyści obszar rysowania zamalowując go podanym kolorem. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$iARGB''' - składowe koloru, po dwa bajty aarrggbb (np. 0xEEFF1055), gdzie: aa - jasność koloru od 00 (najciemniejszy) do FF (najjaśniejszy) rr, gg, bb - składowe poszczególnych kolorów RGB, wartości od 00 do FF Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie elipsy domyślnym pędzlem _GDIPlus_GraphicsfillEllipse($hGraphic, 160, 100, 150, 100) $hBrush = _GDIPlus_BrushCreateSolid(0xB0FF0000) ;tworzenie pędzla _GDIPlus_GraphicsFillEllipse($hGraphic, 210, 30, 120, 250, $hBrush) MsgBox(0,"","Czyszczenie rysunku") _GDIPlus_GraphicsClear($hGraphic, 0xF0FFFFFF) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ==Renderowanie== ===_GDIPlus_GraphicsGetSmoothingMode=== #include <GDIPlus.au3> _GDIPlus_GraphicsGetSmoothingMode($hGraphics) Funkcja zwraca liczę określającą jakość renderowania obiektów graficznych, lub -1 gdy wystąpił błąd. 0 - wygładzanie nie jest stosowane 1 - wygładzanie jest stosowane przy użyciu filtra 8 x 4 2 - wygładzanie jest stosowane przy użyciu filtra 8 x 8 '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' ===_GDIPlus_GraphicsSetSmoothingMode=== #include <GDIPlus.au3> _GDIPlus_GraphicsSetSmoothingMode($hGraphics, $iSmooth) Funkcja ustawia jakość renderowania obiektów graficznych. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$iSmooth''' - jakość renderowania jak dla '''_GDIPlus_GraphicsGetSmoothingMode''' Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> $hWnd = GUICreate("GDI+ SmoothingMode", 600, 400) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd) MsgBox(0,"SmoothingMode:", "SmoothingMode = " _ & _GDIPlus_GraphicsGetSmoothingMode($hGraphics)) ;bez wygładzania (SmoothingMode 0) _GDIPlus_GraphicsSetSmoothingMode($hGraphics, 0) _GDIPlus_GraphicsFillEllipse($hGraphics, 20, 100, 160, 200) _GDIPlus_GraphicsDrawLine($hGraphics, 20, 80, 170, 70) ;z wygładzaniem (SmoothingMode 1) _GDIPlus_GraphicsSetSmoothingMode($hGraphics, 1) _GDIPlus_GraphicsFillEllipse($hGraphics, 220, 100, 160, 200) _GDIPlus_GraphicsDrawLine($hGraphics, 220, 80, 370, 70) ;z wygładzaniem (SmoothingMode 2) _GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2) _GDIPlus_GraphicsFillEllipse($hGraphics, 420, 100, 160, 200) _GDIPlus_GraphicsDrawLine($hGraphics, 420, 80, 570, 70) ;zwolnienie zasobów _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() Do Until GUIGetMsg() = -3 </syntaxhighlight> ==Manipulowanie układem współrzędnych== ===_GDIPlus_GraphicsSetTransform=== #include <GDIPlus.au3> _GDIPlus_GraphicsSetTransform($hGraphics, $hMatrix) Funkcja zmienia układ współrzędnych w obiekcie graphics, na ten zdefiniowany w obiekcie matrix. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu graphics '''$hMatrix''' - uchwyt do obiektu matrix Przykład manipulowania układem współrzędnych: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> Dim $H = 500, $W = 500, $alfa = 30 ;tworzenie GUI $hGUI = GUICreate("GDI+", $H, $W) GUISetState() ;inicjalizacja GDI+ _GDIPlus_Startup() ;tworzenie obiektu graphics w oknie GUI $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;wypisanie tekstu _GDIPlus_GraphicsDrawString($hGraphic, "Tekst prosty", 10, 10) ;tworzenie obiektu matrix (nowy układ współrzędnych) $hMatrix = _GDIPlus_MatrixCreate() ;przesunięcie układu współrzędnych do środka okna (w obiekcie matrix) _GDIPlus_MatrixTranslate($hMatrix, $H/2, $W/2) ;inicjalizacja nowego układu współrzędnych _GDIPlus_GraphicsSetTransform($hGraphic, $hMatrix) For $i = 0 to 360-$alfa Step $alfa ;wpisanie tekstu w nowych współrzędnych _GDIPlus_GraphicsDrawString($hGraphic, "Tekst obrócony w prawo o " & _ $i & " stopni", 20, -10) ;obrócenie układu współrzędnych (w obiekcie matrix) _GDIPlus_MatrixRotate($hMatrix, $alfa) ;przeskalowanie układu współrzędnych (w obiekcie matrix) _GDIPlus_MatrixScale($hMatrix, 0.96, 0.96) ;inicjalizacja nowego układu współrzędnych (w obiekcie graphics) _GDIPlus_GraphicsSetTransform($hGraphic, $hMatrix) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsTranslateTransform=== #include <GDIPlus.au3> _GDIPlus_GraphicsTranslateTransform ( $hGraphics, $fDX, $fDY [, $iOrder = 0] ) Funkcja aktualizuje macierz transformacji obiektu Graphics, co jest równoznaczne z przesunięciem układu współrzędnych. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu graphics '''$fDX''', '''$fDY''' - składowe X i Y transformacji '''$iOrder''' - parametr określa kolejność mnożenia macierzy. I tak 0 -> MD * MP, 1 -> MP * MD. Ponieważ mnożenie macierzy nie jest przemienne, najczęściej efekt działania funkcji dla obu wartości parametru będzie różny. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 800, 300) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) $hBrush = _GDIPlus_BrushCreateSolid(0xFF006600) $hBrush1 = _GDIPlus_BrushCreateSolid(0xFF555555) $hPen = _GDIPlus_PenCreate(0xFF00FF00, 2) $hPath = _GDIPlus_PathCreate() $hFamily = _GDIPlus_FontFamilyCreate("Arial Black") $tLayout = _GDIPlus_RectFCreate(100,10) _GDIPlus_PathAddString($hPath, "AutoIt", $tLayout, $hFamily, 0, 160) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush1) _GDIPlus_GraphicsTranslateTransform($hGraphic, -10, -10) ;przesunięcie układu _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_PathDispose($hPath) _GDIPlus_BrushDispose($hBrush) _GDIPlus_BrushDispose($hBrush1) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsResetTransform=== #include <GDIPlus.au3> _GDIPlus_GraphicsResetTransform ( $hGraphics ) Funkcja resetuje transformacje w obiekcie graphic. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu graphics Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("Walka z cieniem", 600, 250) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;włączenie wygładzania krawędzi ;tworzenie pędzli i pióra Dim $aBrush[5] $aBrush[0] = _GDIPlus_BrushCreateSolid(0xFF006600) $aBrush[1] = _GDIPlus_BrushCreateSolid(0x50909000) $aBrush[2] = _GDIPlus_BrushCreateSolid(0x50FF0000) $aBrush[3] = _GDIPlus_BrushCreateSolid(0x5000FF00) $aBrush[4] = _GDIPlus_BrushCreateSolid(0x500000FF) $hPen = _GDIPlus_PenCreate(0xFF000000, 2) ;tworzenie ścieżki $hPath = _GDIPlus_PathCreate() $hFamily = _GDIPlus_FontFamilyCreate("Arial Black") $tLayout = _GDIPlus_RectFCreate(70,5) _GDIPlus_PathAddString($hPath, "Cień", $tLayout, $hFamily, 0, 160) ;dane przesunięcia cieni Dim $aXY[][] = [[20,20],[-20,20],[20,-20],[-20,-20]] ;rysowanie cieni For $i = 0 To 3 _GDIPlus_GraphicsTranslateTransform($hGraphic, $aXY[$i][0], $aXY[$i][1]) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $aBrush[$i+1]) _GDIPlus_GraphicsResetTransform($hGraphic) ;reset transformacji Next ;napis główny _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $aBrush[0]) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów For $i = 0 To 4 _GDIPlus_BrushDispose($aBrush[$i]) Next _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> =Operowanie bitmapami i obrazami= '''Bitmapa''' (''ang. bitmap'') to zbiór danych, w których zapisana jest grafika rastrowa. Każdemu pikslowi obrazu odpowiada pewna ilość bitów informacji określających jego kolor. Należy odróżnić '''bitmapę''' od '''obiektu bitmap'''. '''Obiekt bitmap''' to coś więcej oprócz danych o obrazie zawiera także pewien zbór funkcji, które mogą wykonywać operacje na tych danych. Funkcje te nazywamy metodami. AutoiIt nie jest językiem obiektowym, więc do metod można mieć dostęp tylko poprzez funkcje zdefiniowane w bibliotece (chyba że chcielibyśmy bezpośrednio grzebać się w bibliotekach DLL i obiektach, ale to zadanie dla ambitnych i zaawansowanych). Pod określeniem '''obraz''' (''ang. image'') będziemy rozumieli tylko dane o grafice, zakodowane w jednym z formatów grafiki rastrowej (BMP, JPG, GIF, PNG, TIF ...). Ponieważ '''obiekt bitmap''' dziedzicz po '''obiekcie image''' (ma wszystkie jego cechy i metody), w zakresie używanym w UDF'e można je używać zamiennie. ==Tworzenie i przetwarzanie bitmap == ===_GDIPlus_BitmapCreateFromFile=== #include <GDIPlus.au3> _GDIPlus_BitmapCreateFromFile($sFileName) Funkcja tworzy obiekt bitmap z wczytanego pliku obrazu. Zwraca uchwyt do utworzonego obiektu, lub 0 gdy wystąpił błąd. '''$sFileName''' - nazwa pliku obrazu, z którego zostanie utworzony obiekt. Dostępne formaty BMP, JPG, GIF, PNG i TIF. Likwidacja obiektu za pomocą '''_GDIPlus_BitmapDispose'''. ===_GDIPlus_BitmapCreateFromGraphics=== #include <GDIPlus.au3> _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics) Funkcja tworzy obiekt bitmap na podstawie obiektu graficznego (np. utworzonego przez '''_GDIPlus_GraphicsCreateFromHWND'''). Zwraca uchwyt do utworzonego obiektu, lub 0 gdy wystąpił błąd. '''$iWidth''' - rozdzielczość bitmapy w poziomie '''$iHeight''' - rozdzielczość bitmapy w pionie '''$hGraphics''' - uchwyt do obiektu graficznego '''UWAGA:''' Funkcja nie kopiuje obrazu z obiektu graficznego, utworzona bitmapa jest jednokolorowa (w kolorze czarnym). Likwidacja obiektu za pomocą '''_GDIPlus_BitmapDispose'''. ===_GDIPlus_BitmapCreateFromHICON=== #include <GDIPlus.au3> _GDIPlus_BitmapCreateFromHICON ( $hIcon ) Funkcja tworzy obiekt bitmap na bazie ikony o podanym uchwycie. Zwraca uchwyt do utworzonego obiektu, lub 0 gdy wystąpił błąd. '''$hIcon''' uchwyt do ikony Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <WinAPIShellEx.au3> $hGUI = GUICreate("GDI+", 168, 168) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hIcon = _WinAPI_ShellExtractIcon(@SystemDir & '\shell32.dll', 32, 96, 96) $hBitmap = _GDIPlus_BitmapCreateFromHICON($hIcon) _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 30, 30) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _WinAPI_DestroyIcon($hIcon) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_BitmapCreateFromHICON32=== #include <GDIPlus.au3> _GDIPlus_BitmapCreateFromHICON32 ( $hIcon ) Funkcja tworzy obiekt bitmap na bazie 32 bitowej ikony o podanym uchwycie. Zwraca uchwyt do utworzonego obiektu, lub 0 gdy wystąpił błąd. '''$hIcon''' uchwyt do ikony Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <WinAPIShellEx.au3> $hGUI = GUICreate("GDI+", 168, 168) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hIcon = _WinAPI_ShellExtractIcon(@SystemDir & '\shell32.dll', 32, 96, 96) $hBitmap = _GDIPlus_BitmapCreateFromHICON32($hIcon) _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 30, 30) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _WinAPI_DestroyIcon($hIcon) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_BitmapCreateFromHBITMAP=== #include <GDIPlus.au3> _GDIPlus_BitmapCreateFromHBITMAP($hBmp [, $hPal = 0]) Funkcja tworzy obiekt bitmap z bitmapy o danym uchwycie HBITMAP. Zwraca uchwyt do utworzonego obiektu, lub 0 gdy wystąpił błąd. '''$hBmp''' - uchwyt HBITMAP do bitmapy '''$hPal''' - uchwyt do palety kolorów, wartość domyślna 0 oznacza paletę domyślną Likwidacja obiektu za pomocą '''_GDIPlus_BitmapDispose'''. ===_GDIPlus_BitmapCreateHBITMAPFromBitmap=== #include <GDIPlus.au3> _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap [, $iARGB = 0xFF000000]) Funkcja tworzy bitmapę z obiektu bitmap. Zwraca uchwyt HBITMAP do bitmapy, lub 0 gdy wystąpił błąd. '''$hBitmap''' - uchwyt do obiektu bitmap '''$iARGB''' - składowe koloru tła, po dwa bajty aarrggbb (np. 0xEEFF1055), gdzie: aa - przezroczystość (kanał alfa) od 00 (całkowicie przezroczysty) do FF (całkowicie nieprzezroczysty) rr, gg, bb - składowe poszczególnych kolorów RGB, wartości od 00 do FF Wartość domyślna (0xFF000000) to całkowicie nieprzezroczysty kolor czarny. Likwidacja obiektu za pomocą '''_GDIPlus_BitmapDispose'''. ===_GDIPlus_BitmapCloneArea=== #include <GDIPlus.au3> _GDIPlus_BitmapCloneArea($hBmp, $iLeft, $iTop, $iWidth, $iHeight [, $iFormat = 0x00021808]) Funkcja tworzy klon obiektu bitmap z podanego zakresu współrzędnych i w określonym formacie. Zwraca uchwyt do nowego obiektu, lub 0 gdy wystąpił błąd. '''$hBitmap''' - uchwyt do obiektu bitmap '''$nX''' i '''$nY''' - współrzędne lewego górnego narożnika '''$nWidth''' i '''$nHeight''' - długość i szerokość obszaru '''$iFormat''' - kod formatu, domyślna wartość 0x00021808 ($GDIP_PXF24RGB) $GDIP_PXF01INDEXED = 1 bit na piksel, indeksowane $GDIP_PXF04INDEXED = 4 bity na piksel, indeksowane $GDIP_PXF08INDEXED = 8 bitów na piksel, indeksowane $GDIP_PXF16GRAYSCALE = 16 bity na piksel, w skali szarości $GDIP_PXF16RGB555 = 16 bity na piksel; 5 bitów dla każdej składowej RGB $GDIP_PXF16RGB565 = 16 bity na piksel; 5 bitów dla czerwonego, 6 dla zielonego i 5 dla niebieskiego $GDIP_PXF16ARGB1555 = 16 bity na piksel; 1 bit na alfa i 5 bitów dla każdej składowej RGB $GDIP_PXF24RGB = 24 bity na piksel; 8 bitów dla każdej składowej RGB $GDIP_PXF32RGB = 32 bity na piksel; 8 bitów dla każdej składowej RGB, bez alfa $GDIP_PXF32ARGB = 32 bity na piksel; 8 bitów dla każdej składowej RGB i alfa $GDIP_PXF32PARGB = 32 bity na piksel; 8 bitów dla każdej składowej RGB i alfa, pre-mulitiplied $GDIP_PXF48RGB = 48 bity na piksel; 16 bitów dla każdej składowej RGB $GDIP_PXF64ARGB = 64 bity na piksel; 16 bitów dla każdej składowej RGB i alfa $GDIP_PXF64PARGB = 64 bity na piksel; 16 bitów dla każdej składowej RGB i alfa Likwidacja obiektu za pomocą '''_GDIPlus_BitmapDispose'''. ===_GDIPlus_BitmapDispose=== #include <GDIPlus.au3> _GDIPlus_BitmapDispose($hBitmap) Funkcja likwiduje obiekt bitmap. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hBitmap''' - uchwyt do obiektu bitmap ===_GDIPlus_BitmapGetPixel=== #include <GDIPlus.au3> _GDIPlus_BitmapGetPixel ( $hBitmap, $iX, $iY ) Funkcja odczytuje kolor punktu bitmapy. Zwraca kod koloru w formacie AARRGGBB. Gdy wystąpi błąd zwraca 0, a makro @error przyjmuje wartość różną od 0. '''$hBitmap''' - uchwyt do obiektu bitmap '''$iX''', '''$iY''' - współrzędne punktu ===_GDIPlus_BitmapSetPixel=== #include <GDIPlus.au3> _GDIPlus_BitmapSetPixel ( $hBitmap, $iX, $iY, $iARGB ) Funkcja ustawia kolor punktu bitmapy. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hBitmap''' - uchwyt do obiektu bitmap '''$iX''', '''$iY''' - współrzędne punktu '''$iARGB''' - nowy kolor punktu w formacie AARRGGBB Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <ScreenCapture.au3> _GDIPlus_Startup() Const $iWidth = 300, $iHeight = 300 $hHBmp = _ScreenCapture_Capture("", 0, 0, $iWidth, $iHeight) ;zrzut fragmentu ekranu $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBmp) ;przetwarzanie kolorów fragmentu pitmapy For $iY = 30 To $iHeight - 31 For $iX = 30 To $iWidth - 31 $iColor = _GDIPlus_BitmapGetPixel($hBitmap, $iX, $iY) ;odczyt koloru poksela _GDIPlus_BitmapSetPixel($hBitmap, $iX, $iY, BitXOR(0xFFFFFFFF, $iColor)) ;zmiana koloru piksela Next Next $hGUI = GUICreate("GDI+", $iWidth, $iHeight) GUISetState() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hHBmp) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() GUIDelete($hGUI) </syntaxhighlight> ===_GDIPlus_HICONCreateFromBitmap=== #include <GDIPlus.au3> _GDIPlus_HICONCreateFromBitmap ( $hBitmap ) Funkcja tworzy ikonę z bitmapy. Zwraca uchwyt do ikony, lub 0 gdy wystąpił błąd. '''$hBitmap''' - uchwyt do obiektu bitmap Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> Opt('TrayMenuMode', 3) _GDIPlus_Startup() $sFile = FileOpenDialog("Wybierz obrazek", "", "Obrazy (*.bmp;*.png;*.jpg;*.gif;*.tif)") $hBitmap = _GDIPlus_ImageLoadFromFile($sFile) ;wczytanie bitmapy z dysku $hIcon = _GDIPlus_HICONCreateFromBitmap($hBitmap) ;tworzenie ikony z bitmapy _WinAPI_SaveHICONToFile('MyIcon.ico', $hIcon) ;zapisanie ikony na dysku ;zwolnienie zasobów _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() ;tworzenie menu w tray'u $hMenu = TrayItemGetHandle(0) $idView = TrayCreateItem('Wyświetlenie obrazu ikony') TrayCreateItem('') $idExit = TrayCreateItem('Koniec') TraySetIcon('MyIcon.ico') ;zmiana ikony w tray'u TraySetState() TrayTip("Uwaga", 'Zmiana ikony w tray', 30) Do $idMsg = TrayGetMsg() If $idMsg = $idExit Then Exit if $idMsg = $idView Then SplashImageOn('', $sFile) Sleep(3000) SplashOff() EndIf Until 0 </syntaxhighlight> ==Tworzenie, zapisywanie i manipulowanie obrazami== ===_GDIPlus_ImageLoadFromFile=== #include <GDIPlus.au3> _GDIPlus_ImageLoadFromFile($sFileName) Funkcja tworzy obiekt image z wczytanego pliku obrazu. Zwraca uchwyt do utworzonego obiektu, lub 0 gdy wystąpił błąd. '''$sFileName''' - nazwa pliku obrazu, z którego zostanie utworzony obiekt. Dostępne formaty BMP, JPG, GIF, PNG i TIF. Likwidacja obiektu za pomocą '''_GDIPlus_ImageDispose'''. ===_GDIPlus_ImageDispose=== #include <GDIPlus.au3> _GDIPlus_ImageDispose($hImage) Funkcja likwiduje obiekt image. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hImage''' - uchwyt do obiektu image ===_GDIPlus_ImageSaveToFile=== #include <GDIPlus.au3> _GDIPlus_ImageSaveToFile($hImage, $sFileName) Funkcja zapisuje obraz na dysku. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hImage''' - uchwyt do obiektu image '''$sFileName''' - nazwa pliku obrazu z pełną ścieżką i rozszerzeniem ===_GDIPlus_ImageSaveToFileEx=== #include <GDIPlus.au3> _GDIPlus_ImageSaveToFileEx($hImage, $sFileName, $sEncoder [, $pParams = 0]) Funkcja zapisuje obraz na dysku. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hImage''' - uchwyt do obiektu image '''$sFileName''' - nazwa pliku obrazu z pełną ścieżką i rozszerzeniem '''$sEncoder''' - string identyfikatora enkoder (CLSID), np. zwracany przez '''_GDIPlus_EncodersGetCLSID''' '''$pParams''' - wskaźnik do struktury $tagGDIPPENCODERPARAMS ===_GDIPlus_ImageGetGraphicsContext=== #include <GDIPlus.au3> _GDIPlus_ImageGetGraphicsContext($hImage) Funkcja tworzy obiekt graphics powiązany z obiektem image. Zwraca uchwyt do obiektu graphics, lub 0 gdy wystąpił błąd. '''$hImage''' - uchwyt do obiektu image '''UWAGA:''' Funkcja powoduje, że operacje graficzne na obiekcie graphics, będą wykonane nie na ekranie lecz na znajdującym się w pamięci obrazie. Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> Dim $iWidth = 400, $iHeight = 400 $hWnd = GUICreate("GDI+ operowanie obrazami", 400, 400) GUISetState() _GDIPlus_Startup() ;tworzenie obiektu graphics w GUI $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd) ;tworzenie obiektu bitmap na podstawie obiektu graphics $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics) ;tworzenie nowego obiektu graphics powiązanego z obiektem bitmap $hBitmapContext = _GDIPlus_ImageGetGraphicsContext($hBitmap) ;tworzenie pędzli żółtego i niebieskiego $hBrush_Yellow = _GDIPlus_BrushCreateSolid(0xFFFFFF00) $hBrush_Blue = _GDIPlus_BrushCreateSolid(0xFF0000FF) ;zamalowanie bitmapy kolorem białym _GDIPlus_GraphicsClear($hBitmapContext, 0xFFFFFFFF) ;rysowanie prostokąta i elipsy _GDIPlus_GraphicsFillRect($hBitmapContext, 50, 50, 200, 200, $hBrush_Blue) _GDIPlus_GraphicsFillEllipse($hBitmapContext, 150, 150, 200, 300, $hBrush_Yellow) MsgBox(0,"","Rysunek tworzony był w pamięci," & @LF & _ "ale teraz pojawi się na ekranie" & @LF & _ "i zostanie zapisany na dysku.") ;wrysowanie bitmapy w obiekcie graphics w oknie GUI _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight) ;zapis bitmapy do pliku na dysku _GDIPlus_ImageSaveToFile($hBitmap, "GDIPlus_Image.jpg") ;zwolnienie zasobów _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_GraphicsDispose($hBitmapContext) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_BrushDispose($hBrush_Yellow) _GDIPlus_BrushDispose($hBrush_Blue) _GDIPlus_Shutdown() Do Until GUIGetMsg() = -3 </syntaxhighlight> ===_GDIPlus_ImageGetFlags=== #include <GDIPlus.au3> _GDIPlus_ImageGetFlags ( $hImage ) Funkcja zwraca dwuelementową tablicę z flagą i opisem atrybutów pikseli obrazu. Jeżeli wystąpił błąd makro @error zawiera kod błędu. Zwracana tablica: [0] - liczba całkowita określająca flagę atrybutów pikseli [1] - string z opisem atrybutów pikseli Makro @error: 10 - flaga nie może być odczytana 11 - nieprawidłowy uchwyt obrazu 12 - brak danych pikseli '''$hImage''' - uchwyt do obiektu image ===_GDIPlus_ImageGetHeight=== #include <GDIPlus.au3> _GDIPlus_ImageGetHeight ( $hImage ) Funkcja zwraca wysokość obrazu w pikselach, lub -1 gdy wystąpi błąd. '''$hImage''' - uchwyt do obiektu image ===_GDIPlus_ImageGetWidth=== #include <GDIPlus.au3> _GDIPlus_ImageGetWidth ( $hImage ) Funkcja zwraca szerokość obrazu w pikselach, lub -1 gdy wystąpi błąd. '''$hImage''' - uchwyt do obiektu image ===_GDIPlus_ImageGetHorizontalResolution=== #include <GDIPlus.au3> _GDIPlus_ImageGetHorizontalResolution ( $hImage ) Funkcja zwraca poziomą rozdzielczość obrazu (w DPI), lub -1 gdy wystąpi błąd. '''$hImage''' - uchwyt do obiektu image ===_GDIPlus_ImageGetVerticalResolution=== #include <GDIPlus.au3> _GDIPlus_ImageGetVerticalResolution ( $hImage ) Funkcja zwraca pionową rozdzielczość obrazu (w DPI), lub -1 gdy wystąpi błąd. '''$hImage''' - uchwyt do obiektu image ===_GDIPlus_ImageGetPixelFormat=== #include <GDIPlus.au3> _GDIPlus_ImageGetPixelFormat ( $hImage ) Funkcja zwraca dwuelementową tablicę z opisem formatu pikseli obrazu. Jeżeli wystąpił błąd makro @error zawiera kod błędu. Zwracana tablica: [0] - liczba całkowita określająca format pikseli [1] - string z opisem formatu pikseli Makro @error: 11 - nieprawidłowy format pikseli 12 - nieprawidłowy uchwyt obrazu 13 - nieznany format pikseli '''$hImage''' - uchwyt do obiektu image ===_GDIPlus_ImageGetRawFormat=== #include <GDIPlus.au3> _GDIPlus_ImageGetRawFormat ( $hImage ) Funkcja zwraca dwuelementową tablicę z identyfikatorem GUID formatu pliku i nazwą formatu obrazu. Jeżeli wystąpił błąd makro @error zawiera kod błędu. Zwracana tablica: [0] - string identyfikatora GUID formatu pliku [1] - string z nazwą formatu obrazu Makro @error: 11 - nieprawidłowy uchwyt obrazu 12 - nieprawidłowy GUID formatu pliku 13 - nieznany GUID formatu pliku '''$hImage''' - uchwyt do obiektu image ===_GDIPlus_ImageGetType=== #include <GDIPlus.au3> _GDIPlus_ImageGetType ( $hImage ) Funkcja zwraca kod typu obrazu, lub -1 gdy wystąpił błąd. $GDIP_IMAGETYPE_UNKNOWN | 0 | typ nieznany $GDIP_IMAGETYPE_BITMAP | 1 | bitmapa BMP, PNG, GIF, JPEG, TIFF, ICO, EXIF $GDIP_IMAGETYPE_METAFILE | 2 | metafile EMF, WMF '''$hImage''' - uchwyt do obiektu image Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <ScreenCapture.au3> _GDIPlus_Startup() ;tworzenie obrazka testowego $hBitmap = _ScreenCapture_Capture("", 100, 50, 800, 550) $hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap) ;odczyt danych obrazu $iX = _GDIPlus_ImageGetWidth($hImage) $iY = _GDIPlus_ImageGetHeight($hImage) $iXRes = _GDIPlus_ImageGetHorizontalResolution($hImage) $iYRes = _GDIPlus_ImageGetVerticalResolution($hImage) $iImageType = _GDIPlus_ImageGetType($hImage) $iPixelFormat = _GDIPlus_ImageGetPixelFormat($hImage) $iRAWFormat = _GDIPlus_ImageGetRawFormat($hImage) $iFlags = _GDIPlus_ImageGetFlags($hImage) MsgBox(0, "DANE OBRAZU", "Szerokość obrazu = " & $iX & @LF & _ "Wysokość obrazu = " & $iY & @LF & _ "Rozdzielczość pozioma = " & $iXRes & @LF & _ "Rozdzielczość pionowa = " & $iYRes & @LF & _ "Typ obrazu = " & $iImageType & @LF & _ "Format pikseli = " & $iPixelFormat[1] & @LF & _ "Format RAW = " & $iRAWFormat[1] & @LF & _ "Flaga = " & $iFlags[1]) ;zwolnienie zasobów _GDIPlus_ImageDispose($hImage) _WinAPI_DeleteObject($hBitmap) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ImageResize=== #include <GDIPlus.au3> _GDIPlus_ImageResize ( $hImage, $iNewWidth, $iNewHeight [, $iInterpolationMode = $GDIP_INTERPOLATIONMODE_HIGHQUALITYBICUBIC] ) Funkcja powoduje zmianę wielkości obrazu do rozmiarów podanych jako parametr. Zwraca uchwyt do nowego obrazu, lub 0 gdy wystąpił błąd (w tym przypadku makro @error zwraca kod błędu). @error: 1 - nie można utworzyć nowej bitmapy 2 - nie można utworzyć kontekstu grafiki 3 - nie można ustawić trybu interpolacji od kontekstu graficznego 4 - nie można skopiować obraz do skalowanj bitmapy '''$hImage''' - uchwyt do obiektu image '''$iNewWidth''', '''$iNewHeight''' - nowa szerokość i wysokość obrazu '''$iInterpolationMode''' - tryb interpolacji, domyślnie $GDIP_INTERPOLATIONMODE_HIGHQUALITYBICUBIC Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <ScreenCapture.au3> _GDIPlus_Startup() ;tworzenie obrazka testowego $hHBitmap = _ScreenCapture_Capture("") $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBitmap) $hGUI = GUICreate("GDI+ test", 1000, 600) ;tworzenie okna GUI $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) GUISetState() For $i = 10 To 0.5 Step -0.05 $hBitmap_Scaled = _GDIPlus_ImageResize($hBitmap, @DesktopWidth/$i, @DesktopHeight/$i) ;zmiana wymiarów obrazu _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap_Scaled, 0, 0) ;wyświetlenie obrazu _GDIPlus_BitmapDispose($hBitmap_Scaled) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hHBitmap) _WinAPI_DeleteObject($hBitmap) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ImageRotateFlip=== #include <GDIPlus.au3> _GDIPlus_ImageRotateFlip ( $hImage, $iRotateFlipType ) Funkcja powoduje obracanie i odwracanie obrazu. Zwraca True gdy sukces, lub False gdy wystąpił błąd ((w tym przypadku makro @error > 0). '''$hImage''' - uchwyt do obiektu image '''$iRotateFlipType''' - kod przekształcenia: 0 - brak transformacji obrazu 1 - obrót o 90 stopni w prawo 2 - obrót o 180 stopni 3 - obrót o 270 stopni (90 stopni w lewo) 4 - bez obrotu, odwrócenie (symetria) względem osi pionowej 5 - obrót o 90 stopni, a następnie odwrócenie (symetria) względem osi pionowej 6 - bez obrotu, odwrócenie (symetria) względem osi poziomej 7 - obrót o 270 stopni (90 stopni w lewo), a następnie odwrócenie (symetria) względem osi pionowej Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <ScreenCapture.au3> _GDIPlus_Startup() ;tworzenie obrazka testowego $hHBitmap = _ScreenCapture_Capture("", 0, 0, 400,300) $hGUI = GUICreate("GDI+ test", 600, 600) ;tworzenie okna GUI $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) GUISetState() $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBitmap) _GDIPlus_ImageRotateFlip($hBitmap, 7) ;przekształcenie obrazu _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0) ;wyświetlenie obrazu Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hHBitmap) _WinAPI_DeleteObject($hBitmap) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ImageScale=== #include <GDIPlus.au3> _GDIPlus_ImageScale ( $hImage, $iScaleW, $iScaleH [, $iInterpolationMode = $GDIP_INTERPOLATIONMODE_HIGHQUALITYBICUBIC] ) Funkcja powoduje przeskalowanie obrazu mnożnik podanych jako parametr. Zwraca uchwyt do nowego obrazu, lub 0 gdy wystąpił błąd (w tym przypadku makro @error zwraca kod błędu). @error: 1 - nie można odczytać szerokości obrazu 2 - nie można odczytać wysokości obrazu 3 - nie można utworzyć nowej bitmapy 4 - nie można utworzyć kontekstu grafiki 5 - nie można ustawić trybu interpolacji od kontekstu graficznego 6 - nie można skopiować obraz do skalowanej bitmapy '''$hImage''' - uchwyt do obiektu image '''$iScaleW''', '''$iScaleH''' - mnożnik skali w poziomie i pionie '''$iInterpolationMode''' - tryb interpolacji, domyślnie $GDIP_INTERPOLATIONMODE_HIGHQUALITYBICUBIC Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <ScreenCapture.au3> _GDIPlus_Startup() ;tworzenie obrazka testowego $hHBitmap = _ScreenCapture_Capture("") $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBitmap) $hGUI = GUICreate("GDI+ test", 1000, 600) ;tworzenie okna GUI $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) GUISetState() For $i = 0.1 To 2 Step 0.05 $hBitmap_Scaled = _GDIPlus_ImageScale($hBitmap, $i, $i) ;zmiana wymiarów obrazu _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap_Scaled, 0, 0) ;wyświetlenie obrazu _GDIPlus_BitmapDispose($hBitmap_Scaled) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hHBitmap) _WinAPI_DeleteObject($hBitmap) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_GraphicsDrawImage=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawImage($hGraphics, $hImage, $iX, $iY) Funkcja wstawia obrazek w obiekt graphics. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$hImage''' - uchwyt do obiektu image '''$iX''' i '''$iY''' - współrzędne lewego górnego narożnika obrazka we współrzędnych obiektu graphics Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <ScreenCapture.au3> ; Initialize GDI+ library _GDIPlus_Startup() ;tworzenie obrazków testowych _ScreenCapture_Capture("pic1.jpg") _ScreenCapture_Capture("pic2.jpg", 0, 0, 400, 300) ;wczytanie obrazków testowych $hImage1 = _GDIPlus_BitmapCreateFromFile("pic1.jpg") $hImage2 = _GDIPlus_BitmapCreateFromFile("pic2.jpg") ;tworzenie kontekstu $hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage1) ;wrysowanie jednego obrazu w drugi _GDIPlus_GraphicsDrawImage($hGraphic, $hImage2, 500, 300) ;zapis na dysk obrazu wynikowego _GDIPlus_ImageSaveToFile($hImage1, "GDIPlus_GraphicsDrawImage.jpg") ;zwolnienie zasobów _GDIPlus_ImageDispose($hImage1) _GDIPlus_ImageDispose($hImage2) _GDIPlus_Shutdown() SplashImageOn("GDIPlus_GraphicsDrawImage","GDIPlus_GraphicsDrawImage.jpg", _ @DesktopWidth*0.8, @DesktopHeight*0.8) Sleep(5000) </syntaxhighlight> ===_GDIPlus_GraphicsDrawImageRect=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, $iX, $iY, $iW, $iH) Funkcja wstawia obrazek w obiekt graphics. Zwraca True gdy sukces, lub False gdy wystąpił błąd. Od '''_GDIPlus_GraphicsDrawImage''' różni się tym, że dodatkowo trzeba określić wielkość pola, w które ma być wstawiony obrazek. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$hImage''' - uchwyt do obiektu image '''$iX''' i '''$iY''' - współrzędne lewego górnego narożnika obrazka wstawianego we współrzędnych obiektu graphics '''$iW''' i '''$iH''' - szerokość i wysokość pola, w które będzie wstawiony obrazek (jest on skalowany do tego pola) Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <ScreenCapture.au3> ; Initialize GDI+ library _GDIPlus_Startup() ;tworzenie obrazków testowych _ScreenCapture_Capture("pic1.jpg") _ScreenCapture_Capture("pic2.jpg", 0, 0, 400, 300) ;wczytanie obrazków testowych $hImage1 = _GDIPlus_BitmapCreateFromFile("pic1.jpg") $hImage2 = _GDIPlus_BitmapCreateFromFile("pic2.jpg") ;tworzenie kontekstu $hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage1) ;wrysowanie jednego obrazu w drugi _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage2, 500, 300, 300, 700) ;zapis na dysk obrazu wynikowego _GDIPlus_ImageSaveToFile($hImage1, "GDIPlus_GraphicsDrawImage.jpg") ;zwolnienie zasobów _GDIPlus_ImageDispose($hImage1) _GDIPlus_ImageDispose($hImage2) _GDIPlus_Shutdown() SplashImageOn("GDIPlus_GraphicsDrawImageRect","GDIPlus_GraphicsDrawImage.jpg", _ @DesktopWidth*0.8, @DesktopHeight*0.8) Sleep(5000) </syntaxhighlight> ===_GDIPlus_GraphicsDrawImageRectRect=== #include <GDIPlus.au3> _GDIPlus_GraphicsDrawImageRectRect($hGraphics, $hImage, $iSrcX, $iSrcY, $iSrcWidth, $iSrcHeight, $iDstX, $iDstY, $iDstWidth, $iDstHeight [, $iUnit=2]) Funkcja wstawia obrazek w obiekt graphics. Zwraca True gdy sukces, lub False gdy wystąpił błąd. Od '''_GDIPlus_GraphicsDrawImageRect''' różni się tym, że dodatkowo trzeba określić położenie i wielkość fragmentu obrazka źródłowego, który będzie wstawiony w obrazek docelowy. '''$hGraphics''' - uchwyt do obiektu zwracany przez '''_GDIPlus_GraphicsCreateFromHWND''' lub '''_GDIPlus_GraphicsCreateFromHWDC''' '''$hImage''' - uchwyt do obiektu image '''$iSrcX''' i '''$iSrcY''' - współrzędne lewego górnego narożnika obszaru obrazka źródłowego, który będzie wklejony do obrazka docelowego '''$iSrcWidth''' i '''$iSrcHeight''' - długość i wysokość obszaru obrazka źródłowego, który będzie wklejony do obrazka docelowego '''$iDestX''' i '''$iDestY''' - współrzędne lewego górnego narożnika obrazka wstawianego we współrzędnych obiektu graphics '''$iDstWidth''' i '''$iDstHeight''' - szerokość i wysokość pola, w które będzie wstawiony obrazek (jest on skalowany do tego pola) '''$iUnit''' - określa jednostkę miary dla obrazu, domyślna wartość 2 oznacza, że jednostką jest piksel Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <ScreenCapture.au3> ; Initialize GDI+ library _GDIPlus_Startup() ;tworzenie obrazków testowych _ScreenCapture_Capture("pic1.jpg") _ScreenCapture_Capture("pic2.jpg", 0, 0, 400, 300) ;wczytanie obrazków testowych $hImage1 = _GDIPlus_BitmapCreateFromFile("pic1.jpg") $hImage2 = _GDIPlus_BitmapCreateFromFile("pic2.jpg") ;tworzenie kontekstu $hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage1) ;wrysowanie jednego obrazu w drugi _GDIPlus_GraphicsDrawImageRectRect($hGraphic, $hImage2, 100, 0, 300, 100, 500, 200, 600, 300) ;zapis na dysk obrazu wynikowego _GDIPlus_ImageSaveToFile($hImage1, "GDIPlus_GraphicsDrawImage.jpg") ;zwolnienie zasobów _GDIPlus_ImageDispose($hImage1) _GDIPlus_ImageDispose($hImage2) _GDIPlus_Shutdown() SplashImageOn("GDIPlus_GraphicsDrawImageRectRect","GDIPlus_GraphicsDrawImage.jpg", _ @DesktopWidth*0.6, @DesktopHeight*0.6) Sleep(3000) </syntaxhighlight> ===_GDIPlus_DrawImagePoints=== #include <GDIPlus.au3> _GDIPlus_DrawImagePoints($hGraphics, $hImage, $nULX, $nULY, $nURX, $nURY, $nLLX, $nLLY) Funkcja rysuje obraz w określonym miejscu. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hGraphics''' - uchwyt do obiektu graphics '''$hImage''' - uchwyt do obiektu image '''$nULX''', '''$nULY''' - współrzędne lewego górnego narożnika obrazu '''$nURX''', '''$nURY''' - współrzędne prawego górnego narożnika obrazu '''$nLLX''', '''$nLLY''' - współrzędne lewego dolnego narożnika obrazu Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <ScreenCapture.au3> ;tworzenie obrazka testowego _ScreenCapture_Capture("test.jpg", 0, 0, 200, 200) ;tworzenie GUI $hWnd = GUICreate("",500,500) GUISetState() ;inicjalizacja GDI+ _GDIPlus_Startup() ;wczytanie obrazka $hImage = _GDIPlus_ImageLoadFromFile("test.jpg") ;tworzenie obszaru rysowania $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd) ;wstawienie obrazka _GDIPlus_DrawImagePoints($hGraphic, $hImage, 50, 10, 350, 70, 100, 300) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_ImageDispose($hImage) _GDIPlus_Shutdown() </syntaxhighlight> ==Manipulowanie atrybutami obrazu== Obiekt ImageAttributes, zawiera dane o atrybutach obrazu i kilka metod do manipulowania nimi. ===_GDIPlus_ImageAttributesCreate=== #include <GDIPlus.au3> _GDIPlus_ImageAttributesCreate ( ) Funkcja tworzy obiekt ImageAttributes. Zwraca uchwyt do niego, lub 0 gdy wystąpił błąd. W tym wypadku makro @error przyjmuje wartość różną od 0. ===_GDIPlus_ImageAttributesDispose=== #include <GDIPlus.au3> _GDIPlus_ImageAttributesDispose ( $hImageAttributes ) Funkcja likwiduje obiekt ImageAttributes. Zwraca True gdy sukces, lub False gdy wystąpił błąd. W tym wypadku makro @error przyjmuje wartość różną od 0. ===_GDIPlus_ImageAttributesSetColorKeys=== #include <GDIPlus.au3> _GDIPlus_ImageAttributesSetColorKeys ( $hImageAttributes [, $iColorAdjustType = 0 [, $bEnable = False [, $iARGBLow = 0 [, $iARGBHigh = 0]]]] ) Funkcja ustawia lub usuwa klucz kolorów (zakres przezroczystość) dla określonej kategorii. Zwraca True gdy sukces, lub False gdy wystąpił błąd. W tym wypadku makro @error przyjmuje wartość różną od 0. '''$hImageAttributes''' - uchwyt do obiektu ImageAttributes '''$iColorAdjustType''' - kategorie, dla których klucz kolorów jest ustawiony lub wyczyszczony: 0 - korekta kolorów odnosi się do wszystkich kategorii, które nie mają regulacji ustawień własnych 1 - stosuje się do regulacji kolorów obrazów bitmapowych 2 - regulacja kolorów dotyczy operacji pędzla w metaplikach 3 - regulacja kolor dotyczy operacji na piórach w metaplikach 4 - regulacja kolorów dotyczy tekstów sporządzony w metaplikach '''$bEnable''' - True oznacza, że stosowany jest zakres pełnej przejrzystości, zdefiniowany dwoma następnymi parametrami '''$iARGBLow''', '''$iARGBHigh''' - najmniejsza i największa wartość ARGB kolorów, które są całkowicie przezroczyste (gdy $bEnable = True) ===_GDIPlus_ImageAttributesSetColorMatrix=== #include <GDIPlus.au3> _GDIPlus_ImageAttributesSetColorMatrix ( $hImageAttributes [, $iColorAdjustType = 0 [, $bEnable = False [, $tClrMatrix = 0 [, $tClrMatrix = 0 [, $iColorMatrixFlags = 0]]]]] ) Funkcja ustawia lub usuwa klucz kolorów za pomocą macierzy ColorMatrix, dla określonej kategorii. Zwraca True gdy sukces, lub False gdy wystąpił błąd. W tym wypadku makro @error przyjmuje wartość różną od 0. '''$hImageAttributes''' - uchwyt do obiektu ImageAttributes '''$iColorAdjustType''' - kategorie, dla których klucz kolorów jest ustawiony lub wyczyszczony: 0 - korekta kolorów odnosi się do wszystkich kategorii, które nie mają regulacji ustawień własnych 1 - stosuje się do regulacji kolorów obrazów bitmapowych 2 - regulacja kolorów dotyczy operacji pędzla w metaplikach 3 - regulacja kolor dotyczy operacji na piórach w metaplikach 4 - regulacja kolorów dotyczy tekstów sporządzony w metaplikach '''$bEnable''' - True oznacza, że stosowany jest transformacja, zdefiniowana w macierzy ColorMatrix '''$tClrMatrix''' - struktura $tagGDIPCOLORMATRIX zawierająca dane matrycy transformacji kolorów '''$tClrMatrix''' - struktura $tagGDIPCOLORMATRIX zawierająca dane matrycy transformacji w odcienie szarości '''$iColorMatrixFlags''' - typ kolorów, na które będą miały wpływ macierze transformacji: 0 - wszystkie wartości kolorów (w tym szarości) są regulowane przez tą samą macierz 1 - kolory są korygowane, ale szare odcienie nie 2 - kolory są regulowane przez jedną macierz, a odcienie szarości przez drugą Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <ScreenCapture.au3> Const $iWidth = 500, $iHeight = 500 draw(0, "Kolory normalne") $tMatrix = _GDIPlus_ColorMatrixCreateSaturation (10) ;tworzenie macierzy ColorMatrix draw($tMatrix, "Zwiększone nasycenie kolorów") $tMatrix = _GDIPlus_ColorMatrixCreateTranslate ( 0.1, -0.1, 0.1) draw($tMatrix, "Zmiana intensywności kolorów") $tMatrix = _GDIPlus_ColorMatrixCreateTranslate(-0.2, -0.2, -0.2) draw($tMatrix, "Kolory przyciemnione") $tMatrix = _GDIPlus_ColorMatrixCreateGrayScale ( ) draw($tMatrix, "Odcienie szarości") Func draw($tColorMatrix, $sTxt) $hGUI = GUICreate($sTxt, $iWidth, $iHeight) GUISetState() _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hIA = _GDIPlus_ImageAttributesCreate() ;tworzenie obiektu ImageAttributes ;zmiana atrybutów za pomocą macierzy ColorMatrix _GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $tColorMatrix, 0, 0) $hHBmp = _ScreenCapture_Capture("", 0, 0, $iWidth, $iHeight) ;zrzut fragmentu desktopu $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBmp) ;rysowanie obrazka _GDIPlus_GraphicsDrawImageRectRect($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight, 0, 0, $iWidth, $iHeight, $hIA) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete($hGUI) ;zwolnienie zasobów _WinAPI_DeleteObject($hHBmp) _GDIPlus_ImageAttributesDispose($hIA) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() EndFunc </syntaxhighlight> ==Obiekt matrix - przekształcenia obiektów graficznych== Obiekt '''matrix''' umożliwia dokonywanie transformacji obiektów graficznych (np. skalowanie, przesuwania i obroty). Za pomocą metod obiektu matrix możemy zdefiniować macierz transformacji. Sam proces transformacji odbywa się poprzez wymnożenie macierzy położeń przez macierz transformacji. ===_GDIPlus_MatrixCreate=== #include <GDIPlus.au3> _GDIPlus_MatrixCreate() Funkcja tworzy obiekt matrix. Zwraca uchwyt do obiektu, lub 0 gdy wystąpił błąd. Likwidacja obiektu za pomocą '''_GDIPlus_MatrixDispose'''. Przykład jak dla _GDIPlus_MatrixTranslate. ===_GDIPlus_MatrixClone=== #include <GDIPlus.au3> _GDIPlus_MatrixClone ( $hMatrix ) Funkcja klonuje obiekt matrix. Zwraca uchwyt do utworzonego duplikatu obiektu, lub 0 gdy wystąpił błąd. ''$hMatrix'' - uchwyt do klonowanego obiektu ===_GDIPlus_MatrixDispose=== #include <GDIPlus.au3> _GDIPlus_MatrixDispose($hMatrix) Funkcja likwiduje obiekt matrix utworzony przez _GDIPlus_MatrixCreate. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hMatrix''' - uchwyt do obiektu matrix ===_GDIPlus_MatrixRotate=== #include <GDIPlus.au3> _GDIPlus_MatrixRotate($hMatrix, $fAngle) Funkcja definiuje w obiekcie matrix przekształcenie będące obrotem o zadany kąt. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hMatrix''' - uchwyt do obiektu matrix '''$fAngle''' - kąt obrotu w stopniach, wartość dodatnia to obrót w prawo, ujemna w lewo Przykład jak dla _GDIPlus_MatrixTranslate. ===_GDIPlus_MatrixScale=== #include <GDIPlus.au3> _GDIPlus_MatrixScale($hMatrix, $fScaleX, $fScaleY) Funkcja definiuje w obiekcie matrix przekształcenie będące skalowaniem o określony mnożnik. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hMatrix''' - uchwyt do obiektu matrix '''$fOffsetX''', '''$fOffsetY''' - mnożnik skali w osi X i Y Przykład jak dla _GDIPlus_MatrixTranslate. ===_GDIPlus_MatrixShear=== #include <GDIPlus.au3> _GDIPlus_MatrixShear ( $hMatrix, $fShearX, $fShearY [, $iOrder = 0] ) Funkcja definiuje w obiekcie matrix przekształcenie poprzez tzw. ścinanie (tworzona jest macierz ścinania). Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. Przekształcenie jest realizowane poprzez wymnożenie macierzy położeń przez macierz ścinania. '''$hMatrix''' - uchwyt do obiektu matrix '''$fShearX''', '''$fShearY''' - współczynnik ścinania w osi X i Y '''$iOrder''' - określa kolejność mnożenia macierzy, 0 - macierz pierwsza z lewej, 1 - macierz pierwsza z prawej, inna wartość powoduje, że mnożenie nie zostanie zrealizowane. Ponieważ mnożenie macierzy nie jest przemienne, najczęściej wynik transformacji będzie różny dla różnych wartości parametru. '''UWAGA:''' Przekształcenie powoduje, że prostokątny obszar jest deformowany do kształtu równoległoboku. Zostają zachowane długości boków, natomiast same boki są skręcone o wartość zależną od parametrów $fShearX i $fShearY. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 450, 200) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) $hBrush = _GDIPlus_BrushCreateSolid(0xFFFFFF00) $hPen = _GDIPlus_PenCreate(0xFF0000FF, 2) ;definiowanie ścieżki graficznej $hPath = _GDIPlus_PathCreate() $hFamily = _GDIPlus_FontFamilyCreate("Arial") $tLayout = _GDIPlus_RectFCreate() _GDIPlus_PathAddString($hPath, "AutoIt!", $tLayout, $hFamily, 0, 120, 0) $aRect = _GDIPlus_PathGetWorldBounds($hPath) _GDIPlus_PathAddRectangle( $hPath, $aRect[0], $aRect[1], $aRect[2], $aRect[3]) ;definiowanie obiektu matrix $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixShear($hMatrix, 0.3, 0.15) ;definiowanie ścinania _GDIPlus_PathTransform($hPath, $hMatrix) ;rysowanie ścieżki po transformacji _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;rysowanie wyjściowego prostokąta $hPen1 = _GDIPlus_PenCreate(0xFF000000, 1) _GDIPlus_GraphicsDrawRect($hGraphic, $aRect[0], $aRect[1], $aRect[2], $aRect[3], $hPen1) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_PenDispose($hPen1) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_MatrixTranslate=== #include <GDIPlus.au3> _GDIPlus_MatrixTranslate($hMatrix, $fOffsetX, $fOffsetY) Funkcja definiuje w obiekcie matrix przekształcenie będące przesunięciem o określony offset. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hMatrix''' - uchwyt do obiektu matrix '''$fOffsetX''', '''$fOffsetY''' - offset w pikselach o jaki będzie przesunięcie w osi X i Y Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> Dim $H = 500, $W = 500, $alfa = 30 ;tworzenie GUI $hGUI = GUICreate("GDI+", $H, $W) GUISetState() ;inicjalizacja GDI+ _GDIPlus_Startup() ;tworzenie obiektu graphics w oknie GUI $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;wypisanie tekstu _GDIPlus_GraphicsDrawString($hGraphic, "Tekst prosty", 10, 10) ;tworzenie obiektu matrix (nowy układ współrzędnych) $hMatrix = _GDIPlus_MatrixCreate() ;zdefiniowanie przesunięcia do środka okna (w obiekcie matrix) _GDIPlus_MatrixTranslate($hMatrix, $H/2, $W/2) ;przesunięcie układu współrzędnych _GDIPlus_GraphicsSetTransform($hGraphic, $hMatrix) For $i = 0 to 360-$alfa Step $alfa ;wpisanie tekstu w nowych współrzędnych _GDIPlus_GraphicsDrawString($hGraphic, "Tekst obrócony w prawo o " & _ $i & " stopni", 20, -10) ;obrócenie układu współrzędnych (w obiekcie matrix) _GDIPlus_MatrixRotate($hMatrix, $alfa) ;przeskalowanie układu współrzędnych (w obiekcie matrix) _GDIPlus_MatrixScale($hMatrix, 0.96, 0.96) ;inicjalizacja nowego układu współrzędnych (w obiekcie graphics) _GDIPlus_GraphicsSetTransform($hGraphic, $hMatrix) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_MatrixTransformPoints=== #include <GDIPlus.au3> _GDIPlus_MatrixTransformPoints ( $hMatrix, ByRef $aPoints ) Funkcja mnoży każdy punkt w tablicy przez macierz transformacji. Zwraca True gdy sukces, lub False gdy wystąpił błąd. Wynik transformacji zwracany jest przez referencję w tablicy danych. '''$hMatrix''' - uchwyt do obiektu matrix '''$aPoints''' - dwuwymiarowa tablica ze współrzędnymi punktów do transformacji: [0][0] - Number of points [1][0] - punkt 1, współrzędna X [1][1] - punkt 1, współrzędna Y [2][0] - punkt 2, współrzędna X [2][1] - punkt 2, współrzędna Y ... [n][0] - punkt n, współrzędna X [n][1] - punkt n, współrzędna Y Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> Local $aGui[13], $aPoints[13][2] = [[12]] For $i = 1 To 12 $aPoints[$i][0] = Cos(5 * $i / 15) * @DesktopHeight / 3 + @DesktopWidth / 2 $aPoints[$i][1] = Sin(5 * $i / 15) * @DesktopHeight / 3 + @DesktopHeight / 2 $aGui[$i] = GUICreate($i, 180, 160, $aPoints[$i][0] - 60, $aPoints[$i][1] - 50) GUISetBkColor(0xA0) GUISetState() Next sleep(1000) _GDIPlus_Startup() $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixTranslate($hMatrix, -@DesktopWidth / 2, -@DesktopHeight / 2) _GDIPlus_MatrixRotate($hMatrix, 1, True) _GDIPlus_MatrixTranslate($hMatrix, @DesktopWidth / 2, @DesktopHeight / 2, True) Do Sleep(40) _GDIPlus_MatrixTransformPoints($hMatrix, $aPoints) For $i = 1 To 12 WinMove($aGui[$i], "", $aPoints[$i][0] - 60, $aPoints[$i][1] - 50) Next Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_MatrixInvert=== #include <GDIPlus.au3> _GDIPlus_MatrixInvert ( $hMatrix ) Funkcja zastępuje elementy macierzy przekształceń, elementami przeciwnymi. Powoduje to zmianę przekształceń zdefiniowanych w obiekcie matrix na odwrotne. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hMatrix''' - uchwyt do obiektu matrix Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> AutoItSetOption("MouseCoordMode", 2) ;współrzędne myszy względem obszaru roboczego okna $hGUI = GUICreate("GDI+", 500, 600) GUISetState() _GDIPlus_Startup() ;tworzenie dwu obiektów Graphics $hGraphics1 = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hGraphics2 = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;tworzenie ścieżki $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddRectangle($hPath, 100, 100, 170, 70) ;tworzenie obiektu Matrix $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixScale($hMatrix, 2, 2) _GDIPlus_MatrixRotate($hMatrix, 40) _GDIPlus_MatrixTranslate($hMatrix, 50, -60) ;zmiana układu współrzędnych w drugim obiekcie Graphics _GDIPlus_GraphicsSetTransform($hGraphics2, $hMatrix) ;odwrócenie przekształceń w obiekcie Matrix _GDIPlus_MatrixInvert($hMatrix) $hPen = _GDIPlus_PenCreate(0xFFF00000, 2) Dim $aMouse[2][2] = [[1]] $iTimer = TimerInit() Do If TimerDiff($iTimer) > 10 Then $aMouse[1][0] = MouseGetPos(0) $aMouse[1][1] = MouseGetPos(1) ;czyszczenie okna, gdy lewy przycisk myszy nie jest wciśnięty If Not GUIGetCursorInfo($hGUI)[2] Then _GDIPlus_GraphicsClear($hGraphics1, 0xFFFFFFFF) _GDIPlus_GraphicsDrawPath($hGraphics1, $hPath) _GDIPlus_GraphicsDrawPath($hGraphics2, $hPath) _GDIPlus_MatrixTransformPoints($hMatrix, $aMouse) ;transformacja współrzędnych punktu _GDIPlus_GraphicsDrawEllipse($hGraphics1, $aMouse[1][0]-3, $aMouse[1][1]-3, 6, 6, $hPen) _GDIPlus_GraphicsDrawEllipse($hGraphics2, $aMouse[1][0]-3, $aMouse[1][1]-3, 6, 6, $hPen) $iTimer = TimerInit() EndIf Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_PenDispose($hPen) _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_GraphicsDispose($hGraphics1) _GDIPlus_GraphicsDispose($hGraphics1) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_MatrixMultiply=== #include <GDIPlus.au3> _GDIPlus_MatrixMultiply ( $hMatrix1, $hMatrix2 [, $iOrder = 0] ) Funkcja powoduje wymnożenie macierzy transformacji dwóch obiektów matrix. Jest to równoznaczne ze złożeniem przekształceń opisanych tymi macierzami. Rezultat złożenia zostanie przez referencję zapisany w macierzy transformacji pierwszego obiektu matrix. Funkcja zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hMatrix1''' - uchwyt do pierwszego obiektu matrix, macierz przekształceń tego obiektu zostanie zaktualizowana '''$hMatrix2''' - uchwyt do drugiego obiektu matrix, macierz przekształceń tego obiektu zostanie bez zmian '''$iOrder''' - określa kolejność mnożenia macierzy, 0 - macierz pierwsza z lewej, 1 - macierz pierwsza z prawej, inna wartość powoduje, że mnożenie nie zostanie zrealizowane. Ponieważ mnożenie macierzy nie jest przemienne, najczęściej wynik transformacji będzie różny dla różnych wartości parametru. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> ;tworzenie GUI $hGUI = GUICreate("GDI+", 900, 900) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;tworzenie zasobów $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath, 20, 80, 200, 90) $hFamily = _GDIPlus_FontFamilyCreate("Arial") $tLayout = _GDIPlus_RectFCreate(30,90) _GDIPlus_PathAddString($hPath, "AutoIt", $tLayout, $hFamily, 0, 60) $hPen = _GDIPlus_PenCreate(0xFF0000A0, 2) ;rysowanie wyjściowej grafiki _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;tworzenie obiektów matrix $hMatrix_Scale = _GDIPlus_MatrixCreate() _GDIPlus_MatrixTranslate($hMatrix_Scale, -400, -550) _GDIPlus_MatrixScale($hMatrix_Scale, .95, .95, True) $hMatrix_Rotate = _GDIPlus_MatrixCreate() _GDIPlus_MatrixRotate($hMatrix_Rotate, 20, True) ;pętla rysująca, w której następuje złożenie przkształceń opisanych ;w dwóch obiektach matrix, skalowania i obrotu For $i = 1 To 40 $hMatrix_Clone = _GDIPlus_MatrixClone($hMatrix_Rotate) _GDIPlus_MatrixMultiply($hMatrix_Clone, $hMatrix_Scale) _GDIPlus_MatrixTranslate($hMatrix_Clone, 400, 550, True) _GDIPlus_PathTransform($hPath, $hMatrix_Clone) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) _GDIPlus_MatrixDispose($hMatrix_Clone) Next Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_MatrixDispose($hMatrix_Rotate) _GDIPlus_MatrixDispose($hMatrix_Scale) _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() </syntaxhighlight> ==ColorMatrix - macierz transformacji kolorów== Obiekt ColorMatrix zawiera macierz kolorów i kilka metod (funkcji), za pomocą których można dokonywać transformacji kolorów obrazu w oparci o dane zawarte w tej macierzy. Poniżej opisano kilka funkcji służących do tworzenia tego typu macierzy. Wszystkie zwracają dane macierzy w postaci struktury typu $tagGDIPCOLORMATRIX. Same funkcje nie powodują żadnych zmian w obrazie. Tworzą tylko macierze, których można użyć do transformacji barwnej obrazów funkcją '''_GDIPlus_ImageAttributesSetColorMatrix'''. Przykład użycia macierzy w podrozdziale [[AutoIt/Funkcje interfejsu GDI+#Manipulowanie atrybutami obrazu | Manipulowanie atrybutami obrazu]]. ===_GDIPlus_ColorMatrixCreate=== #include <GDIPlus.au3> _GDIPlus_ColorMatrixCreate ( ) Funkcja tworzy i inicjuje macierz transformacji kolorów. Zwraca strukturę $tagGDIPCOLORMATRIX zawierającą dane macierzy. Zainicjowana macierz zawiera dane, które nie powodują żadnej transformacji. ===_GDIPlus_ColorMatrixCreateGrayScale=== #include <GDIPlus.au3> _GDIPlus_ColorMatrixCreateGrayScale ( ) Funkcja tworzy i inicjuje macierz transformacji kolorów. Zwraca strukturę $tagGDIPCOLORMATRIX zawierającą dane macierzy. Zainicjowana macierz zawiera dane, które powodują przekształcenie kolorów w odcienie szarości. ===_GDIPlus_ColorMatrixCreateNegative=== #include <GDIPlus.au3> _GDIPlus_ColorMatrixCreateNegative ( ) Funkcja tworzy i inicjuje macierz transformacji kolorów. Zwraca strukturę $tagGDIPCOLORMATRIX zawierającą dane macierzy. Zainicjowana macierz zawiera dane, które powodują przekształcenie kolorów w negatyw. ===_GDIPlus_ColorMatrixCreateSaturation=== #include <GDIPlus.au3> _GDIPlus_ColorMatrixCreateSaturation ( $fSat ) Funkcja tworzy i inicjuje macierz transformacji kolorów. Zwraca strukturę $tagGDIPCOLORMATRIX zawierającą dane macierzy. Zainicjowana macierz zawiera dane, które powodują przekształcenie ze zmianą nasycenia kolorów. '''$fSat''' - współczynnik nasycenia kolorów, 0 - odcienie szarości ===_GDIPlus_ColorMatrixCreateScale=== #include <GDIPlus.au3> _GDIPlus_ColorMatrixCreateScale ( $fRed, $fGreen, $fBlue [, $fAlpha = 1] ) Funkcja tworzy i inicjuje macierz transformacji kolorów. Zwraca strukturę $tagGDIPCOLORMATRIX zawierającą dane macierzy. Zainicjowana macierz zawiera dane, które powodują przekształcenie ze zmianą intensywności składowych kolorów i stopnia przezroczystości. Odbywa się to poprzez wymnożenie składowej przez podany współczynnik. '''$fRed''', '''$fGreen''', '''$fBlue''' - mnożniki zmiany intensywności kolorów składowych RGB, 1 - bez zmiany intensywności '''$fAlpha''' - mnożnik współczynnika przezroczystości, 1 (domyślnie) - bez zmiany przezroczystości ===_GDIPlus_ColorMatrixCreateTranslate=== #include <GDIPlus.au3> _GDIPlus_ColorMatrixCreateTranslate ( $fRed, $fGreen, $fBlue [, $fAlpha = 0] ) Funkcja tworzy i inicjuje macierz transformacji kolorów. Zwraca strukturę $tagGDIPCOLORMATRIX zawierającą dane macierzy. Zainicjowana macierz zawiera dane, które powodują przekształcenie ze zmianą intensywności składowych kolorów i stopnia przezroczystości. '''$fRed''', '''$fGreen''', '''$fBlue''' - zmiany intensywności kolorów składowych RGB, -1 - brak koloru, 0 - bez zmiany intensywności, 1 - intensywność maksymalna '''$fAlpha''' - zmiana współczynnika przezroczystości, -1 - przezroczystość całkowita, 0 - bez zmiany przezroczystości, 1 - całkowita nieprzezroczystość ==Uzyskanie informacji o obrazie== ===_GDIPlus_ImageGetFlags=== #include <GDIPlus.au3> _GDIPlus_ImageGetFlags($hImage) Funkcja zwraca dwuelementową tablicę z danymi pikseli obrazu, lub pustą tablicę gdy wystąpił błąd. [0] - flaga typu Integer atrybutów pikseli [1] - ciąg atrybutów pikseli oddzielonych separatorem "|" '''$hImage''' - uchwyt do obiektu image Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> ;ścieżka do testowego obrazka $fImage = "c:\Windows\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\watermark.bmp" _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile($fImage) $aFlag = _GDIPlus_ImageGetFlags($hImage) MsgBox(0, "_GDIPlus_ImageGetFlags", $aFlag[0] & @LF & $aFlag[1]) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ImageGetHeight=== #include <GDIPlus.au3> _GDIPlus_ImageGetHeight($hImage) Funkcja zwraca wysokość obrazu w pikselach, lub -1 gdy wystąpił błąd. '''$hImage''' - uchwyt do obiektu image Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> ;ścieżka do testowego obrazka $fImage = "c:\Windows\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\watermark.bmp" _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile($fImage) $nHeight = _GDIPlus_ImageGetHeight($hImage) MsgBox(0, "_GDIPlus_ImageGetHeight", "Wysokość obrazu = " & $nHeight &" pikseli") _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ImageGetWidth=== #include <GDIPlus.au3> _GDIPlus_ImageGetWidth($hImage) Funkcja zwraca wysokość obrazu w pikselach, lub -1 gdy wystąpił błąd. '''$hImage''' - uchwyt do obiektu image Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> ;ścieżka do testowego obrazka $fImage = "c:\Windows\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\watermark.bmp" _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile($fImage) $nWidth = _GDIPlus_ImageGetWidth($hImage) MsgBox(0, "_GDIPlus_ImageGetWidtht", "Szerokość obrazu = " & $nWidth &" pikseli") _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ImageGetHorizontalResolution=== #include <GDIPlus.au3> _GDIPlus_ImageGetHorizontalResolution($hImage) Funkcja zwraca poziomą rozdzielczość obrazu w pikselach na cal (DPI), lub 0 gdy wystąpił błąd. '''$hImage''' - uchwyt do obiektu image Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> ;ścieżka do testowego obrazka $fImage = "c:\Windows\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\watermark.bmp" _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile($fImage) $nHDPI= _GDIPlus_ImageGetHorizontalResolution($hImage) MsgBox(0, "_GDIPlus_ImageGetHorizontalResolution", "Rozdzielczość pozioma = " & $nHDPI &" DPI") _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ImageGetVerticalResolution=== #include <GDIPlus.au3> _GDIPlus_ImageGetVerticalResolution($hImage) Funkcja zwraca pionową rozdzielczość obrazu w pikselach na cal (DPI), lub 0 gdy wystąpił błąd. '''$hImage''' - uchwyt do obiektu image Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> ;ścieżka do testowego obrazka $fImage = "c:\Windows\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\watermark.bmp" _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile($fImage) $nVDPI= _GDIPlus_ImageGetVerticalResolution($hImage) MsgBox(0, "_GDIPlus_ImageGetVerticalResolution", "Rozdzielczość pozioma = " & $nVDPI &" DPI") _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ImageGetPixelFormat=== #include <GDIPlus.au3> _GDIPlus_ImageGetPixelFormat($hImage) Funkcja zwraca jednowymiarową tablicę z informacjami o formacie pikseli obrazu. Jeżeli wystąpił błąd to zwracana tablica jest pusta. [0] - liczbowy kod formatu [1] - string z nazwą formatu, np. 24 Bpp RGB '''$hImage''' - uchwyt do obiektu image Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> ;ścieżka do testowego obrazka $fImage = "c:\Windows\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\watermark.bmp" _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile($fImage) $aFlag = _GDIPlus_ImageGetPixelFormat($hImage) MsgBox(0, "_GDIPlus_ImageGetPixelFormat", "Kod formatu pikseli = " & $aFlag[0] & @LF _ & "Nazwa formatu pikseli = " & $aFlag[1]) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ImageGetRawFormat=== #include <GDIPlus.au3> _GDIPlus_ImageGetRawFormat($hImage) Funkcja zwraca jednowymiarową tablicę z identyfikatorem i nazwą formatu obrazu. Jeżeli wystąpił błąd to zwracana tablica jest pusta. [0] - string identyfikatorem formatu GUID, np. {B96B3CAE-0728-11D3-9D7B-0000F81EF32E} [1] - string z nazwą formatu obrazu, np. JPEG '''$hImage''' - uchwyt do obiektu image Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> ;ścieżka do testowego obrazka $fImage = "c:\Windows\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\watermark.bmp" _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile($fImage) $aFlag = _GDIPlus_ImageGetRawFormat($hImage) MsgBox(0, "_GDIPlus_ImageGetRawFormat", "Identyfikator GUID formatu obrazu = " & $aFlag[0] & @LF _ & "Nazwa formatu obrazu = " & $aFlag[1]) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_ImageGetType=== #include <GDIPlus.au3> _GDIPlus_ImageGetType($hImage) Funkcja zwraca kod typu obrazu (bitmapa lub metaplik), lub -1 gdy wystąpił błąd. 0 - typ nieznany 1 - bitmapa typu: BMP, PNG, GIF, JPEG, TIFF, ICO, EXIF 2 - metaplik typu: EMF, WMF '''$hImage''' - uchwyt do obiektu image Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> ;ścieżka do testowego obrazka $fImage = "c:\Windows\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\watermark.bmp" _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile($fImage) $nType = _GDIPlus_ImageGetType($hImage) If $nType = 0 Then $TypeStr = " (nieznany)" If $nType = 1 Then $TypeStr = " (bitmapa)" If $nType = 2 Then $TypeStr = " (metaplik)" MsgBox(0, "_GDIPlus_ImageGetTypet", "Kod typu obrazu = " & $nType & $TypeStr) _GDIPlus_Shutdown() </syntaxhighlight> =Dekodery i enkodery= ===_GDIPlus_Decoders=== #include <GDIPlus.au3> _GDIPlus_Decoders() Funkcja zwraca tablicę z informacjami o dostępnych dekoderach obrazu. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od 0. [0][0] - liczba dekoderów [1][1] - identyfikator kodeka [1][2] - identyfikator formatu pliku [1][3] - nazwa kodeka [1][4] - dll, w których znajduje się kod [1][5] - nazwa formatu pliku używanego przez kodek [1][6] - rozszerzenia związane z kodekiem [1][7] - MIME (Internet media type) kodeka [1][8] - flaga [1][9] - wersja kodeka [1][10] - liczba podpisów używanych przez format [1][11] - liczba bajtów w każdym podpisie [1][12] - wskaźnik do wzoru dla każdej sygnatury [1][13] - wskaźnik do maski dla każdego podpisu [2][1] - dalej dla następnego dekodera ... Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <EditConstants.au3> #include <WindowsConstants.au3> Dim $txt, $i, $aDecoders ;odczytanie danych kodeków _GDIPlus_Startup() $aDecoders = _GDIPlus_Decoders() _GDIPlus_Shutdown() ;formatowanie danych For $i=1 To $aDecoders[0][0] $txt &= "DEKODER " & $i & @CRLF $txt &= "Identyfikator kodeka: " & $aDecoders[$i][1] & @CRLF $txt &= "Iidentyfikator formatu pliku: " & $aDecoders[$i][2] & @CRLF $txt &= "Nazwa kodeka: " & $aDecoders[$i][3] & @CRLF $txt &= "DLL w których znajduje się kod: " & $aDecoders[$i][4] & @CRLF $txt &= "Nazwa formatu pliku używanego przez kodek: " & $aDecoders[$i][5] & @CRLF $txt &= "Rozszerzenia związane z kodekiem: " & $aDecoders[$i][6] & @CRLF $txt &= "MIME (Internet media type) kodeka: " & $aDecoders[$i][7] & @CRLF $txt &= "Flaga: " & $aDecoders[$i][8] & @CRLF $txt &= "Wersja kodeka: " & $aDecoders[$i][9] & @CRLF $txt &= "Liczba podpisów używanych przez format: " & $aDecoders[$i][10] & @CRLF $txt &= "Liczba bajtów w każdym podpisie: " & $aDecoders[$i][11] & @CRLF $txt &= "Wskaźnik do wzoru dla każdej sygnatury: " & $aDecoders[$i][12] & @CRLF $txt &= "Wskaźnik do maski dla każdego podpisu: " & $aDecoders[$i][13] & @CRLF & @CRLF Next ;wyświetlenie danych na ekranie w kontrolce EDIT GUICreate("Dane dekoderów:", 400, 800, -1, 50) GUICtrlCreateEdit($txt, 10, 10, 380, 750, $WS_VSCROLL + $ES_READONLY) GUISetState() Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_GDIPlus_DecodersGetCount=== #include <GDIPlus.au3> _GDIPlus_DecodersGetCount() Funkcja zwraca ilość dostępnych dekoderów obrazu, lub -1 gdy wystąpił błąd. Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> _GDIPlus_Startup() MsgBox(0, "_GDIPlus_DecodersGetCount", "Ilość dekoderów: " & _GDIPlus_DecodersGetCount()) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_Encoders=== #include <GDIPlus.au3> _GDIPlus_Encoders() Funkcja zwraca tablicę z informacjami o dostępnych enkoderach obrazu. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od 0. [0][0] - liczba dekoderów [1][1] - identyfikator kodeka [1][2] - identyfikator formatu pliku [1][3] - nazwa kodeka [1][4] - dll, w których znajduje się kod [1][5] - nazwa formatu pliku używanego przez kodek [1][6] - rozszerzenia związane z kodekiem [1][7] - MIME (Internet media type) kodeka [1][8] - flaga [1][9] - wersja kodeka [1][10] - liczba podpisów używanych przez format [1][11] - liczba bajtów w każdym podpisie [1][12] - wskaźnik do wzoru dla każdej sygnatury [1][13] - wskaźnik do maski dla każdego podpisu [2][1] - dalej dla następnego dekodera ... Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <EditConstants.au3> #include <WindowsConstants.au3> Dim $txt, $i, $aEncoders ;odczytanie danych kodeków _GDIPlus_Startup() $aEncoders = _GDIPlus_Encoders() _GDIPlus_Shutdown() ;formatowanie danych For $i=1 To $aEncoders[0][0] $txt &= "ENKODER" & $i & @CRLF $txt &= "Identyfikator kodeka: " & $aEncoders[$i][1] & @CRLF $txt &= "Iidentyfikator formatu pliku: " & $aEncoders[$i][2] & @CRLF $txt &= "Nazwa kodeka: " & $aEncoders[$i][3] & @CRLF $txt &= "DLL w których znajduje się kod: " & $aEncoders[$i][4] & @CRLF $txt &= "Nazwa formatu pliku używanego przez kodek: " & $aEncoders[$i][5] & @CRLF $txt &= "Rozszerzenia związane z kodekiem: " & $aEncoders[$i][6] & @CRLF $txt &= "MIME (Internet media type) kodeka: " & $aEncoders[$i][7] & @CRLF $txt &= "Flaga: " & $aEncoders[$i][8] & @CRLF $txt &= "Wersja kodeka: " & $aEncoders[$i][9] & @CRLF $txt &= "Liczba podpisów używanych przez format: " & $aEncoders[$i][10] & @CRLF $txt &= "Liczba bajtów w każdym podpisie: " & $aEncoders[$i][11] & @CRLF $txt &= "Wskaźnik do wzoru dla każdej sygnatury: " & $aEncoders[$i][12] & @CRLF $txt &= "Wskaźnik do maski dla każdego podpisu: " & $aEncoders[$i][13] & @CRLF & @CRLF Next ;wyświetlenie danych na ekranie w kontrolce EDIT GUICreate("Dane dekoderów:", 400, 800, -1, 50) GUICtrlCreateEdit($txt, 10, 10, 380, 750, $WS_VSCROLL + $ES_READONLY) GUISetState() Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_GDIPlus_EncodersGetCount=== #include <GDIPlus.au3> _GDIPlus_EncodersGetCount() Funkcja zwraca ilość dostępnych dekoderów obrazu, lub -1 gdy wystąpił błąd. Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> _GDIPlus_Startup() MsgBox(0, "_GDIPlus_EncodersGetCount", "Ilość enkoderów: " & _GDIPlus_EncodersGetCount()) _GDIPlus_Shutdown() </syntaxhighlight> ===_GDIPlus_EncodersGetCLSID=== #include <GDIPlus.au3> _GDIPlus_EncodersGetCLSID($sFileExt) Funkcja zwraca identyfikator CLSID enkodera, lub pusty string gdy wystąpił błąd. '''$sFileExt''' - rozszerzenie formatu, dla którego enkodera chcemy uzyskać identyfikator CLSID Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> _GDIPlus_Startup() MsgBox(0, "_GDIPlus_EncodersGetCLSID", "CLSID dla enkodera BMP: " & _GDIPlus_EncodersGetCLSID("BMP") _ & @LF & "CLSID dla enkodera JPG: " & _GDIPlus_EncodersGetCLSID("JPG") _ & @LF & "CLSID dla enkodera GIF: " & _GDIPlus_EncodersGetCLSID("GIF") _ & @LF & "CLSID dla enkodera TIF: " & _GDIPlus_EncodersGetCLSID("TIF") _ & @LF & "CLSID dla enkodera PCX: " & _GDIPlus_EncodersGetCLSID("PCX")) _GDIPlus_Shutdown() </syntaxhighlight> =Pędzle (Brush) - uzupełnienie= '''''Poniższa uwaga od wersji 3.3.10.2 AutoIt'a nie jest już prawdziwa. Twórcy języka uzupełnili UDF o obsługę pędzli wszystkich rodzajów. Pozostawiłem jednak podrozdział w celach edukacyjnych (Wasta).''''' Autor UDF'u "GDIPlus.au3" ograniczył się tylko do jednego rodzaju pędzla typu solid. Interfejs GDI+ zawiera jeszcze trzy inne rodzaje pędzli. W bardzo prosty sposób można użyć także ich w swoich skryptach. Poniżej przedstawiam trzy proste funkcje do tworzenie pędzli typu: Hatch, Gradient, Texture. Wszystkie wykorzystują procedury biblioteki "gdiplus.dll". ==Pędzel typu Hatch (kreskowanie)== === _GDIPlus_BrushCreateHatch=== _GDIPlus_BrushCreateHatch($iHatchStyle, $iArgbFore = 0xFF000000, $iArgbBack = 0xFFFFFFFF) Funkcja tworzy pędzel z kreskowaniem. Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. '''$iHatchStyle''' - styl kreskowania (zakres wartości od 0 do 52) '''$iArgbFore''' - kolor wzoru w formacie AARRGGBB, domyślnie kolor czarny '''$iArgbBack''' - kolor tła w formacie AARRGGBB, domyślnie kolor biały Implementacja i przykład użycia: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 580, 320) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush1 = _GDIPlus_BrushCreateHatch(0) _GDIPlus_GraphicsFillEllipse($hGraphic, 20, 30, 120, 250, $hBrush1) $hBrush2 = _GDIPlus_BrushCreateHatch(3,0xFFFF0000, 0xFF00FF00) _GDIPlus_GraphicsFillRect($hGraphic, 220, 30, 120, 250, $hBrush2) $hBrush3 = _GDIPlus_BrushCreateHatch(52,0xFF0000FF, 0xFFFFFF00) _GDIPlus_GraphicsFillRect($hGraphic, 420, 30, 120, 250, $hBrush3) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush1) _GDIPlus_BrushDispose($hBrush2) _GDIPlus_BrushDispose($hBrush3) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() ;implementacja Func _GDIPlus_BrushCreateHatch($iHatchStyle, $ForeColor = 0xFF000000, $BackColor = 0xFFFFFFFF) Local $hHatchBrush If $ForeColor = -1 Or $ForeColor = Default Then $ForeColor = 0xFF000000 If $BackColor = -1 Or $BackColor = Default Then $BackColor = 0xFFFFFFFF $hHatchBrush = DllCall("gdiplus.dll", "int", "GdipCreateHatchBrush", "int", $iHatchStyle, _ "int", $ForeColor, "int", $BackColor, "int*", 0) Return $hHatchBrush[4] EndFunc </syntaxhighlight> ==Pędzel typu Gradient== ===_GDIPlus_BrushCreateGradient=== _GDIPlus_BrushCreateGradient($sRect, $iArgb1 = 0xFF000000, $iArgb2 = 0xFFFFFFFF, $LinearGradientMode = 0, $WrapMode = 0) Funkcja tworzy pędzel typu gradient. Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. '''$sRect''' - struktura ($tagGDIPRECTF) zawierającą dane o położeniu i wielkości prostokątnego obszaru, w którym zawiera się pędzel gradientu. Można ją utworzyć za pomocą '''_GDIPlus_RectFCreate'''. '''$iArgb1''', '''$iArgb2''' - dwa przenikające się kolory w formacie AARRGGBB, domyślnie kolory czarny i biały '''$LinearGradientMode''' - kierunek gradientu: 0 - gradient w poziomie, 1 - w pionie, 2 - skośnie w lewo, 3 - skośnie w prawo '''$WrapMode''' - określa, jak gradient jest rozmieszczany sąsiadująco, gdy jest mniejszy niż obszar wypełniany: 0 - bez symetrii, 1 - symetria w pionie, 2 - symetria w poziomie, 3 - symetria w poziomie i pionie Implementacja i przykład użycia: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("GDI+", 700, 320) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $Rect = _GDIPlus_RectFCreate(100, 30, 120, 250) $hBrush1 = _GDIPlus_BrushCreateGradient($Rect) _GDIPlus_GraphicsFillEllipse($hGraphic, 100, 30, 120, 250, $hBrush1) $Rect = _GDIPlus_RectFCreate(300, 30, 120, 250) $hBrush2 = _GDIPlus_BrushCreateGradient($Rect, 0xFFFF0000, 0xFF0000FF, 1) _GDIPlus_GraphicsFillEllipse($hGraphic, 300, 30, 120, 250, $hBrush2) $Rect = _GDIPlus_RectFCreate(500, 30, 30, 20) $hBrush3 = _GDIPlus_BrushCreateGradient($Rect, 0xFFFF0000, 0xFF00FF00, 3, 3) _GDIPlus_GraphicsFillEllipse($hGraphic, 500, 30, 120, 250, $hBrush3) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush1) _GDIPlus_BrushDispose($hBrush2) _GDIPlus_BrushDispose($hBrush3) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() ;implementacja Func _GDIPlus_BrushCreateGradient($sRect, $iArgb1 = 0xFF000000, $iArgb2 = 0xFFFFFFFF, _ $LinearGradientMode = 0, $WrapMode = 0) Local $aRet If $iArgb1 = -1 Or $iArgb1 = Default Then $iArgb1 = 0xFF000000 If $iArgb2 = -1 Or $iArgb2 = Default Then $iArgb2 = 0xFFFFFFFF If $LinearGradientMode = -1 Or $LinearGradientMode = Default Then $LinearGradientMode = 0 If $WrapMode = -1 Or $WrapMode = Default Then $WrapMode = 0 $aRet = DllCall("gdiplus.dll", "int", "GdipCreateLineBrushFromRect", "struct*", $sRect, "int", $iArgb1, _ "int", $iArgb2, "int", $LinearGradientMode, "int", $WrapMode, "int*", 0) Return $aRet[6] EndFunc </syntaxhighlight> ==Pędzel typu Teksture (tekstura)== ===_GDIPlus_BrushCreateTexture=== _GDIPlus_BrushCreateTexture($Image, $iWrapMode = 0) Funkcja tworzy pędzel z teksturą. Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. '''$Image''' - nazwa pliku obrazu (ze ścieżką dostępu) lub uchwyt do obiektu Image '''$iWrapMode''' - określa, jak tekstura jest rozmieszczana sąsiadująco, gdy jest mniejsza niż obszar wypełniany: 0 - bez symetrii, 1 - symetria w pionie, 2 - symetria w poziomie, 3 - symetria w poziomie i pionie, 4 - pojedynczy obrazek Implementacja i przykład użycia: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> $fImage = "c:\Windows\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\SplashScreen.bmp" ;tworzenie GUI $hGUI = GUICreate("GDI+", 1000, 600) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $Image = _GDIPlus_ImageLoadFromFile($fImage) $hBrush = _GDIPlus_BrushCreateTexture($Image, 3) ;tworzenie pędzla _GDIPlus_GraphicsFillEllipse($hGraphic, 0, 0, 1000, 600, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() ;implementacja Func _GDIPlus_BrushCreateTexture($Image, $iWrapMode = 0) Local $hImage, $aResult Switch VarGetType($Image) Case "String" $hImage = _GDIPlus_ImageLoadFromFile($Image) Case "Ptr" $hImage = $Image Case Else Return 0 EndSwitch $aResult = DllCall("gdiplus.dll", "uint", "GdipCreateTexture", "hwnd", $hImage, "int", $iWrapMode, "int*", 0) Return $aResult[3] EndFunc </syntaxhighlight> =Przykład użycia biblioteki UDF '''GDIPlus.au3'''= Na koniec prosty przykład użycia GDI+. Poniższy skrypt wyświetla na ekranie zegar analogowo-cyfrowy. <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GDIPlus.au3> Dim $H = 400, $V = 400, $alfa = 30, $LS = 165, $LM =165, $LH = 140, $sec = -1 Dim $col_b = 0x666666, $Col_m = 0xFFFF0000, $Col_s = 0xFF00FFFF, $Col_c = 0xFF00FF00 ;tworzenie GUI $hGUI = GUICreate("GDI+: Zegar analogowo-cyfrowy", $H, $V, -1,-1) GUISetBkColor($col_b) GUISetState() ;inicjalizacja GDI+ _GDIPlus_Startup() ;tworzenie obiektu graphics w oknie GUI $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;włączenie wygładzania krawędzi _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;tworzenie piór $hPen = _GDIPlus_PenCreate($Col_m, 6) $hPen1 = _GDIPlus_PenCreate($Col_s, 4) _GDIPlus_PenSetEndCap($hPen1, $GDIP_LINECAPROUNDANCHOR) ;tworzenie atrybutów tekstu (dla zegara cyfrowego) $hFormat = _GDIPlus_StringFormatCreate() _GDIPlus_StringFormatSetAlign($hFormat, 1) $hFamily = _GDIPlus_FontFamilyCreate("Arial") $hFont = _GDIPlus_FontCreate($hFamily, 38, 0, 0) $tLayout = _GDIPlus_RectFCreate(-90, 50, 180, 40) ;tworzenie pędzli $hBrush = _GDIPlus_BrushCreateSolid($Col_c) $Rect = _GDIPlus_RectFCreate(-$H/2+20, -$V/2+20, $H-20, $V-20) $hBrush2 = _GDIPlus_BrushCreateGradient($Rect, 0xFFFEFEFE, 0xFF000000, 3) ;przesunięcie układu współrzędnych do środka okna $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixTranslate($hMatrix, $H/2, $V/2) _GDIPlus_GraphicsSetTransform($hGraphic, $hMatrix) Do If $sec <> @SEC Then $hour = @HOUR $min = @MIN $sec = @SEC _GDIPlus_GraphicsFillEllipse($hGraphic, -170, -170, 340, 340, $hBrush2) _GDIPlus_GraphicsDrawStringEx($hGraphic, $hour & ":" & $min & ":" & _ $sec, $hFont, $tLayout, $hFormat, $hBrush) DrawHand($hGraphic, $LH, $hour*5+$min/12, $hPen) DrawHand($hGraphic, $LM, $min, $hPen) DrawHand($hGraphic, $LS, $sec, $hPen1) For $i = 0 to 360-$alfa Step $alfa _GDIPlus_MatrixRotate($hMatrix, $alfa) _GDIPlus_GraphicsSetTransform($hGraphic, $hMatrix) _GDIPlus_GraphicsFillEllipse($hGraphic, 180, -5, 10, 10, $hBrush) Next EndIf Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_PenDispose($hPen) _GDIPlus_PenDispose($hPen1) _GDIPlus_BrushDispose($hBrush) _GDIPlus_BrushDispose($hBrush2) _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() ;funkcja rysująca wskazówki Func DrawHand($hGraphic, $L, $poz, $hPen) Local $alfa = -3.1415*($poz+15)/30 Local $x = -$L*Cos($alfa), $y = $L*Sin($alfa) _GDIPlus_GraphicsDrawLine($hGraphic, $x, $y, 0, 0, $hPen) EndFunc ;funkcja _GDIPlus_BrushCreateGradient opisana w poprzednim rozdziale Func _GDIPlus_BrushCreateGradient($sRect, $iArgb1 = 0xFF000000, $iArgb2 = 0xFFFFFFFF, _ $LinearGradientMode = 0, $WrapMode = 0) Local $aRet If $iArgb1 = -1 Or $iArgb1 = Default Then $iArgb1 = 0xFF000000 If $iArgb2 = -1 Or $iArgb2 = Default Then $iArgb2 = 0xFFFFFFFF If $LinearGradientMode = -1 Or Default Then $LinearGradientMode = 0 If $WrapMode = -1 Or Default Then $WrapMode = 0 $aRet = DllCall("gdiplus.dll", "int", "GdipCreateLineBrushFromRect", "struct*", $sRect, "int", $iArgb1, _ "int", $iArgb2, "int", $LinearGradientMode, "int", $WrapMode, "int*", 0) Return $aRet[6] EndFunc </syntaxhighlight> 1rv9ovo8owrhrhhukqzjhajzvk4ziyj AutoIt/WinAPI 0 27754 558426 539894 2026-10-03T15:34:02Z Wasta 12503 558426 wikitext text/x-wiki ==Co to jest WinAPI== Wg Wiki: Windows API, lub krócej: WinAPI – interfejs programistyczny systemu Microsoft Windows – jest to zbiór niezbędnych funkcji, stałych i zmiennych umożliwiających działanie programu w systemie operacyjnym Microsoft Windows. Zbiór ten jest bardzo obszerny i zawiera funkcje do tworzenia okien programów, elementów interfejsu graficznego, obsługi zdarzeń oraz umożliwiające dostęp do innych aplikacji, funkcji sieciowych czy sprzętu w komputerze. Mianem WinAPI określamy standardowe funkcje przychodzące wraz z plikami bibliotek DLL dostarczanymi z systemem, np. kernel32.dll, user32.dll, gdi32.dll, wsock32.dll, znajdującymi się w katalogu \Windows\System. Funkcje korzystające z WinAPI zawarte są w UDF'ie '''WinAPI.au3'''. Jest to największy UDF, ale część zawartych w nim funkcji dubluje funkcje wbudowane interpretera lub innych UDF'ów np.: '''GDIPlus.au3'''. W niniejszym opisie skupię się więc na funkcjach udostępniających nowe możliwości. ==Struktury (rekordy)== Niektóre funkcje znajdujące się w UDF'ie wykorzystują struktury jako parametry wywołania lub używają ich do zwracania wyników. Tworzenie takich struktur ułatwia plik '''StructureConstants.au3''', który zawiera predefiniowane stringi z opisem budowy typowych struktur. Nie musimy dołączać go dyrektywą '''#include''', gdyż robi to już sam UDF. Poniżej przykład tworzenia struktury zawierającej dane o wielkości i położeniu prostokątnego obszaru: <syntaxhighlight lang="autoit"> ;tworzenie struktury na podstawie stringu $tagRECT ;z biblioteki StructureConstants.au3 $tRect = DllStructCreate($tagRECT) ;nadanie wartości poszczególnym polom struktury DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) ;jeżeli zamiast samej struktury potrzebny jest wskaźnik do niej ;należy dodatkowo użyć funkcji odczytującej ten wskaźnik $ptrRect = DllStructGetPtr($tRect) ;dalsza część progamu </syntaxhighlight> Można też tak, wykorzystując skrócony sposób nadawania wartości pól struktury: <syntaxhighlight lang="autoit"> ;tworzenie struktury na podstawie stringu $tagRECT ;z biblioteki StructureConstants.au3 $tRect = DllStructCreate($tagRECT) ;nadanie wartości poszczególnym polom struktury (sposób uproszczony) $tRect.Left = 20 $tRect.Top = 50 $tRect.Right = 200 $tRect.Bottom = 200 ;dalsza część progamu </syntaxhighlight> Dokładniejszy opis dotyczący struktur i funkcji na nich operujących, w rozdziale [[AutoIt/Biblioteki DLL|'''Korzystanie z bibliotek DLL''']]. ===_WinAPI_PtInRect=== #include <WinAPI.au3> _WinAPI_PtInRect($tRect, $tPoint) Funkcja zwraca True gdy punkt znajduje się wewnątrz prostokątnego obszaru, lub False w przeciwnym przypadku. '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru '''$tPoint''' - struktura $tagPOINT zawierająca współrzędne sprawdzanego punktu Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> ;opis prostokąta $tRect = DllStructCreate($tagRECT) $tRect.Left = 20 $tRect.Top = 50 $tRect.Right = 200 $tRect.Bottom = 200 ;współrzędne sprawdzanego punktu $tPoint = DllStructCreate($tagPOINT) $tPoint.X = 120 $tPoint.Y = 120 If _WinAPI_PtInRect($tRect, $tPoint) Then $sTxt = "Punkt wewnątrz prostokąta" Else $sTxt = "Punkt na zewewnątrz prostokąta" EndIf MsgBox(4096, 'Test PtInRect', $sTxt) </syntaxhighlight> ===_WinAPI_RectIsEmpty=== #include <WinAPI.au3> _WinAPI_RectIsEmpty($tRect) Funkcja zwraca True gdy struktura opisująca prostokąt zawiera same zera, lub False w przeciwnym przypadku. '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> ;opis prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 0) DllStructSetData($tRect, "Top", 0) DllStructSetData($tRect, "Right", 0) DllStructSetData($tRect, "Bottom", 0) MsgBox(4096, 'RectIsEmpty', _ "Czy prostokąt jest pusty: " & _WinAPI_RectIsEmpty($tRect)) </syntaxhighlight> ===_WinAPI_PointFromRect=== #include <WinAPI.au3> _WinAPI_PointFromRect($tRect [, $fCenter = True]) Funkcja zwraca w postaci struktury $tagPOINT współrzędne środka, lub lewego górnego narożnika prostokątnego obszaru. '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru '''$fCenter''' - jeśli True zwraca punkt środkowy tego prostokąta, jeśli False jego współrzędne lewego górnego narożniku Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> ;opis prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) $tPoint = _WinAPI_PointFromRect($tRect) $iX = DllStructGetData($tPoint, 1) $iY = DllStructGetData($tPoint, 2) MsgBox(4096, "PointFromRect", _ "Punkt środkowy prostokąta:" & @LF & _ "x = " & $iX & @LF & "y = " & $iY) </syntaxhighlight> ===_WinAPI_GetXYFromPoint=== #include <WinAPI.au3> _WinAPI_GetXYFromPoint($tPoint, ByRef $iX, ByRef $iY) Funkcja zwraca przez referencję współrzędne punktu. '''$tPoint''' - struktura $tagPOINT zawierająca współrzędne punktu '''$iX''' i '''$iY''' - zmienne zawierające współrzędne punktu (nadpisywane przez referencję) Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $iX = 10, $iY = 10 ;opis prostokąta $tPoint = DllStructCreate($tagPOINT) DllStructSetData($tPoint, "X", 100) DllStructSetData($tPoint, "Y", 666) ;odczyt współrzędnych (przez referencję) _WinAPI_GetXYFromPoint($tPoint, $iX, $iY) MsgBox(4096, "GetXYFromPoint", _ "Odczytane współrzędne punktu:" & @LF & _ "x = " & $iX & @LF & "y = " & $iY) </syntaxhighlight> ==Funkcje związane z kontekstem urządzenia (DC)== Wszystkie funkcje graficzne WinAPI operują na kontekstach urządzeń. Podstawowe informacje o kontekstach można znaleźć w rozdziale [[AutoIt/Funkcje interfejsu GDI+|'''Funkcje interfejsu GDI+''']]. Teraz postaram się opisać temat nieco dokładniej, gdyż UDF dostarcza dużej ilości funkcji operujących na kontekstach i głębsze zrozumienie problemu będzie bardzo pomoncne w ich efektywnym wykorzystaniu. Twórcy Windows postanowili uprościć i ujednolicić operacje graficzne w systemie operacyjnym. Zamiast całej masy przypadków przesyłania informacji pomiędzy obiektami graficznymi (np. desktop -> okno, okno -> okno, okno -> bitmapa ... itd.) postanowili sprowadzić wszystko do jednego schematu: [Kontekst źródłowy] -> [Kontekst docelowy] Konteksty to jednak abstrakcje, same w sobie nie reprezentujące żadnego rzeczywistego obiektu. Dlatego kontekst musi być powiązany z rzeczywistym obiektem. Powiązanie to oznacza, że operacje wykonywane na kontekście będą jednocześnie wykonywane w tle na rzeczywistym obiekcie, bez konieczności zagłębiania się przez programistę w sam przebieg tego procesu. Wymiana informacji między kontekstami przebiega zawsze w ten sam sposób, natomiast przepływ informacji [obiekt] <-> [kontekst] jest realizowany przez OS bez udziału programisty: [Obiekt źródłowy]-[Kontekst źródłowy] -> [Kontekst docelowy]-[Obiekt docelowy] Oczywiście aby cały proces był możliwy do realizacji, konteksty i obiekty muszą być ze sobą zgodne (kompatybilne), tzn. zdolne do wymiany informacji. Rozpatrzmy dwa przykłady: '''1. Skopiowanie fragmentu desktopu do utworzonego okna GUI:''' Mamy do czynienia z dwoma istniejącymi obiektami, które są ze sobą z natury kompatybilne (wszak okno to nic innego jak część desktopu). Należy więc pobrać z systemu konteksty do obu obiektów (funkcja _WinAPI_GetDC), a następnie przesłać dane z kontekstu desktopu do kontekstu okna. Prosto i bez wnikania w szczegóły procesu. Przykładowy kod dla tego przypadku w opisie funkcji [[AutoIt/WinAPI#WinAPI_BitBlt|_WinAPI_BitBlt]]'''. '''2. Skopiowanie fragmentu desktopu do bitmapy:''' W tym przypadku istnieje tylko jeden obiekt (desktop), drugi obiekt (bitmapa) należy samodzielnie utworzyć. Rozpoczynamy od pobrania kontekstu do desktopu (_WinAPI_GetDC), następnie tworzymy nowy kontekst kompatybilny z kontekstem desktopu (_WinAPI_CreateCompatibleDC). Teraz tworzymy bitmapę kompatybilną z utworzonym kontekstem (_WinAPI_CreateCompatibleBitmap) i tworzymy powiązania pomiędzy kontekstem i bitmapą (_WinAPI_SelectObject). Mamy teraz powiązanie między desktopem, a bitmapą (poprzez kompatybilne konteksty) i możemy przesłać dane obrazu. Przykładowy kod dla tego przypadku w opisie funkcji [[AutoIt/WinAPI#WinAPI_CreateCompatibleBitmap|_WinAPI_CreateCompatibleBitmap]]. ===_WinAPI_GetDC=== #include <WinAPI.au3> _WinAPI_GetDC($hWnd) Funkcja odczytuje i zwraca kontekst do obszaru roboczego okna, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna Zwolnienie kontekstu za pomocą funkcji #_WinAPI_ReleaseDC. Przykład: <syntaxhighlight lang="autoit"> #Include <WinAPI.au3> $hWnd = GUICreate ("Test") $hDC = _WinAPI_GetDC($hWnd) MsgBox (0, "", "Uchwyt DC: " & $hDC) _WinAPI_ReleaseDC ($hWnd, $hDC) </syntaxhighlight> ===_WinAPI_GetWindowDC=== #include <WinAPI.au3> _WinAPI_GetWindowDC($hWnd) Funkcja odczytuje i zwraca kontekst do całego okna, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, jeżeli wstawimy 0 to będzie to oznaczało cały ekran (desktop). Zwolnienie kontekstu za pomocą funkcji '''_WinAPI_ReleaseDC '''. Przykład: <syntaxhighlight lang="autoit"> #Include <WinAPI.au3> $hWnd = GUICreate ("Test") $hDC = _WinAPI_GetWindowDC($hWnd) MsgBox (0, "", "Uchwyt DC: " & $hDC) _WinAPI_ReleaseDC ($hWnd, $hDC) </syntaxhighlight> ===_WinAPI_CreateCompatibleDC=== #include <WinAPI.au3> _WinAPI_CreateCompatibleDC($hDC) Funkcja tworzy kontekst zgodny z istniejącym kontekstem urządzenia. Zwraca uchwyt do tego kontekstu, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do istniejącego kontekstu DC Likwidacja kontekstu za pomocą funkcji '''_WinAPI_DeleteDC '''. ===_WinAPI_DeleteDC=== #include <WinAPI.au3> _WinAPI_DeleteDC($hDC) Funkcja likwiduje kontekst. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu DC Funkcji należy używać do usunięcia kontekstów utworzonych w skrypcie (_WinAPI_CreateCompatibleDC), a już nie wykorzystywanych, celem zwolnienia zasobów. ===_WinAPI_ReleaseDC=== #include <WinAPI.au3> _WinAPI_ReleaseDC($hWnd, $hDC) Funkcja zwalnia wcześniej pobrany kontekst. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna '''$hDC''' - uchwyt do kontekstu DC Funkcji należy używać do zwolnienia kontekstów pobranych w skrypcie (_WinAPI_GetDC lub _WinAPI_GetWindowDC), a już nie wykorzystywanych, celem zwolnienia zasobów. ===_WinAPI_SelectObject=== #include <WinAPI.au3> _WinAPI_SelectObject($hDC, $hGDIObj) Funkcja przypisuje obiekt do określonego kontekstu urządzenia. Zwraca uchwyt do pierwotnego obiektu (tego który był poprzednio przypisany do kontekstu), lub liczbę ujemną gdy wystąpił błąd. Obiekt musi być jednego z następujących typów: Bitmap, Brush, Font, Pen lub Region. '''$hDC''' - uchwyt do kontekstu DC '''$hGDIObj''' - uchwyt do przypisywanego obiektu Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> ;odczytanie kontekstu do desktopu $hDC = _WinAPI_GetWindowDC(0) ;tworzenie piór $hPen1 = _WinAPI_CreatePen($PS_SOLID, 12, 0x0000FF) $hPen2 = _WinAPI_CreatePen($PS_SOLID, 20, 0x00FF00) ;przypisanie pióra 1 do kontekstu _WinAPI_SelectObject($hDC, $hPen1) ;rysowanie linni w kontekście _WinAPI_DrawLine($hDC, 400, 500, 800, 700) ;przypisanie pióra 2 do kontekstu $hOld = _WinAPI_SelectObject($hDC, $hPen2) ;rysowanie linni w kontekście _WinAPI_DrawLine($hDC, 400, 700, 800, 400) Sleep(5000) ;jeżeli chcemy wrócić do poprzedniego przypisania _WinAPI_SelectObject($hDC, $hOld) ;zwolnienie zasobów _WinAPI_DeleteObject($hPen1) _WinAPI_DeleteObject($hPen2) _WinAPI_ReleaseDC(0, $hDC) </syntaxhighlight> ===_WinAPI_DeleteObject=== #include <WinAPI.au3> _WinAPI_DeleteObject ( $hObject ) Funkcja usuwa logiczne, obiekty takie jak pióro, pędzel, czcionka, bitmapa, region lub paleta. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hObject''' - uchwyt do usuwanego obiektu ===_WinAPI_BitBlt=== #include <WinAPI.au3> _WinAPI_BitBlt($hDestDC, $iXDest, $iYDest, $iWidth, $iHeight, $hSrcDC, $iXSrc, $iYSrc, $iROP) Funkcja kopiuje blok grafiki pomiędzy dwoma kontekstami urządzeń. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDestDC''' - uchwyt do kontekstu docelowego '''$iXDest''' i '''$iYDest''' - współrzędne lewego górnego narożnika wstawianego bloku w kontekście docelowym '''$iWidth''' i '''$iHeight''' - szerokość i wysokość kopiowanego bloku '''$hSrcDC''' - uchwyt do kontekstu źródłowego '''$iXSrc''' i '''$iYSrc''' - współrzędne lewego górnego narożnika kopiowanego bloku w kontekście źródłowym '''$iROP''' - kod operacji. Kody te określają, w jaki sposób dane kolorowego prostokątnego bloku kopiowanego z kontekstu źródłowego zostaną połączone z kolorami znajdującymi się w prostokącie docelowym: Nazwy stałych wg '''<WindowsConstants.au3>''' --------------------------------------------------------------------------------------------------------- $BLACKNESS = 0x00000042 | Wypełnia prostokąt docelowy używając koloru związanego z indeksem 0 | w palecie fizycznej (ten kolor jest czarny dla domyślnej palety). --------------------------------------------------------------------------------------------------------- $CAPTUREBLT = 0x40000000 | Zawiera wszystkie okna, które są nakładane na górze okna w obraz wynikowy. --------------------------------------------------------------------------------------------------------- $DSTINVERT = 0x00550009 | Negatyw prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $MERGECOPY = 0x00C000CA | Łączy za pomocą operatora AND kolor prostokąta źródłowego z kolorem | aktualnie wybranego w $hDestDC pędzla. --------------------------------------------------------------------------------------------------------- $MERGEPAINT = 0x00BB0226 | Łączy za pomocą operatora OR negatyw prostokąta źródłowego | z kolorami prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $NOMIRRORBITMAP = 0x80000000 | --------------------------------------------------------------------------------------------------------- $NOTSRCCOPY = 0x00330008 | Kopiuje negatyw prostokąta źródłowego do miejsca przeznaczenia. --------------------------------------------------------------------------------------------------------- $NOTSRCERASE = 0x001100A6 | Łączy za pomocą operatora OR kolory prostokąta źródłowego i docelowego, | a następnie wykonuje negatyw powstałych kolorów. --------------------------------------------------------------------------------------------------------- $PATCOPY = 0x00F00021 | Kopiuje pędzel aktualnie wybranego w $hDestDC, do bitmapy docelowej. --------------------------------------------------------------------------------------------------------- $PATINVERT = 0x005A0049 | Łączy za pomocą operatora XOR kolor pędzla aktualnie wybranego w $hDestDC, | z kolorami prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $PATPAINT = 0x00FB0A09 | Łączy za pomocą operatora OR, kolor pędzla aktualnie wybranego w $hDestDC, | z negatywem prostokąta źródłowego. Wynik tej operacji jest połączony | za pomocą operatora OR, z kolorami prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $SRCAND = 0x008800C6 | Łączy za pomocą operatora AND, kolory prostokąta źródłowego i docelowego. --------------------------------------------------------------------------------------------------------- $SRCCOPY = 0x00CC0020 | Kopiuje prostokąt źródłowy bezpośrednio do prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $SRCERASE = 0x00440328 | Łączy za pomocą operatora AND, negatyw prostokąta docelowego | z kolorami prostokąta źródłowego. --------------------------------------------------------------------------------------------------------- $SRCINVERT = 0x00660046 | Łączy za pomocą operatora XOR, kolory prostokąta źródłowego i docelowego. --------------------------------------------------------------------------------------------------------- $SRCPAINT = 0x00EE0086 | Łączy za pomocą operatora OR, kolory prostokąta źródłowego i docelowego. --------------------------------------------------------------------------------------------------------- $WHITENESS = 0x00FF0062 | Wypełnia prostokąt docelowy używając koloru związanego z indeksem 1 | w palecie fizycznej (ten kolor jest biały dla domyślnej palety). Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <GDIPlus.au3> #region tworzenie testowego obrazka $hGUI = GUICreate("GDI+", 400, 450) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie elipsy domyślnym pędzlem _GDIPlus_GraphicsfillEllipse($hGraphic, 160, 100, 150, 100) $hBrush = _GDIPlus_BrushCreateSolid(0xB0FF0000) ;tworzenie pędzla _GDIPlus_GraphicsFillEllipse($hGraphic, 210, 30, 120, 250, $hBrush) Sleep(200) ;chwila na zakończenie tworzenia obrazka ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() #endregion tworzenie testowego obrazka $hGUIDC = _WinAPI_GetDC($hGUI) ;kontekst do obszaru roboczego GUI $hDC = _WinAPI_GetWindowDC(0) ;kontekst do desktopu ;kopiowanie fragmentów desktopu do GUI _WinAPI_BitBlt($hGUIDC, 0, 0, 300, 200, $hDC, 0, 0, $SRCCOPY) _WinAPI_BitBlt($hGUIDC, 100, 220, 250, 200, $hDC, 20, 0, $SRCAND) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_ReleaseDC (0, $hDC) _WinAPI_ReleaseDC ($hGUI, $hGUIDC) </syntaxhighlight> ===_WinAPI_SetTextColor=== #include <WinAPI.au3> _WinAPI_SetTextColor($hDC, $iColor) Funkcja ustawia kolor aktualnej czcionki w danym kontekście urządzenia. Zwraca kod poprzedniego koloru, lub -1 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iColor''' - kod koloru w formacie RGB ===_WinAPI_SetBkColor=== #include <WinAPI.au3> _WinAPI_SetBkColor($hDC, $iColor) Funkcja ustawia kolor tła w danym kontekście urządzenia. Zwraca kod poprzedniego koloru, lub -1 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iColor''' - kod koloru w formacie RGB ===_WinAPI_GetBkMode=== #include <WinAPI.au3> _WinAPI_GetBkMode($hDC) Funkcja zwraca tryb wyświetlania tła w danym kontekście urządzenia, lub 0 gdy wystąpił bład. Zwracane wartości: 1 ($TRANSPARENT) - tło przezroczyste 2 ($OPAQUE) - tło nieprzezroczyste '''$hDC''' - uchwyt do kontekstu ===_WinAPI_SetBkMode=== #include <WinAPI.au3> _WinAPI_SetBkMode($hDC, $iBkMode) Funkcja ustawia tryb wyświetlania tła w danym kontekście urządzenia. Zwraca kod poprzedniego trybu, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iBkMode''' - kod trybu wyświetlania tła: 1 ($TRANSPARENT) - tło przezroczyste 2 ($OPAQUE) - tło nieprzezroczyste Przykład: <syntaxhighlight lang="autoit"> #include <FontConstants.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> Global $hDC, $hFont, $hFont_old, $iTextColor = 0xFF0000 HotKeySet("{ESC}", "_Exit") ;rejestrowanie funkcji zamykającej skrypt ;definiowanie prostokątnego obszaru, w którym będziemy wpisywali tekst $tRECT = DllStructCreate($tagRect) $tRECT.Left = 850 $tRECT.Top = 300 $tRECT.Right = 1250 $tRECT.Bottom = 550 $hDC = _WinAPI_GetDC(0) ;pobranie kontekstu do desktopu $hFont = _WinAPI_CreateFont(50, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _ $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial') ;definicja fontów $hFont_old = _WinAPI_SelectObject($hDC, $hFont) ;zapamiętanie pierwotnych fontów i ustawienie nowych _WinAPI_SetBkColor($hDC, 0x000000) ;definicja koloru tła _WinAPI_SetBkMode($hDC, $TRANSPARENT) ;tło przezroczyste Do _WinAPI_SetTextColor($hDC, $iTextColor) ;ustawienie koloru tekstu _WinAPI_DrawText($hDC, "AUTOIT jest super!", $tRECT, $DT_CENTER) ;wypisanie tekstu Sleep(50) Until False ;funkcja zwalniająca zasoby i zamykająca skrypt Func _Exit() _WinAPI_SelectObject($hDC, $hFont_old) _WinAPI_DeleteObject($hFont) _WinAPI_ReleaseDC(0, $hDC) _WinAPI_InvalidateRect(0, 0) $tRECT = 0 Exit EndFunc </syntaxhighlight> ==Funkcje związane z tworzeniem i przetwarzaniem grafiki== ===_WinAPI_CreateBitmap=== #include <WinAPI.au3> _WinAPI_CreateBitmap($iWidth, $iHeight [, $iPlanes = 1 [, $iBitsPerPel = 1 [, $pBits = 0]]]) Funkcja tworzy bitmapę o określonej szerokości, wysokość, kolorze i formacie. Zwraca uchwyt do bitmapy, lub 0 gdy wystąpił błąd. '''$iWidth''' - szerokość bitmapy w pikselach '''$iHeight''' - wysokość bitmapy w pikselach '''$iPlanes''' - określa liczbę płaszczyzn kolorów używanych przez urządzenia '''$iBitsPerPel''' - liczba bitów potrzebnych do określenia barwy pojedynczego piksela '''$pBits''' - wskaźnik do tablicy danych kolorów używanych do ustawienia kolorów pikseli. Jeżeli parametr ten ma wartość 0, zawartość nowej bitmapy jest niezdefiniowana. ===_WinAPI_CreateCompatibleBitmap=== #include <WinAPI.au3> _WinAPI_CreateCompatibleBitmap($hDC, $iWidth, $iHeight) Funkcja tworzy bitmapę zgodną z określonym kontekstem urządzenia. Zwraca uchwyt do bitmapy, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu urządzenia '''$iWidth''' - szerokość bitmapy w pikselach '''$iHeight''' - wysokość bitmapy w pikselach Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GDIPlus.au3> Const $SRCCOPY = 0x00CC0020 Local $iX = 500, $iY = 300 _GDIPlus_Startup() ;pobranie kontekstu desktopu $hDDC = _WinAPI_GetWindowDC(0) ;utworzenie kontekstu kompatybilnego do kontekstu desktopu $hCDC = _WinAPI_CreateCompatibleDC($hDDC) ;utworzenie bitmapy kompatybilnej z kontekstem urządzenia $hHBMP = _WinAPI_CreateCompatibleBitmap($hDDC, $iX, $iY) ;przypisanie bitmapy do kontekstu urządzenia _WinAPI_SelectObject($hCDC, $hHBMP) ;kopiowanie danych obrazu między kontekstami _WinAPI_BitBlt($hCDC, 0, 0, $iX, $iY, $hDDC, 30, 35, $SRCCOPY) ;tworzenie obiektu Bitmap z bitmapy $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBMP) ;zapis bitmapy na dysku _GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Test.jpg") ;zwolnienie zasobów _GDIPlus_BitmapDispose($hBitmap) _WinAPI_DeleteObject($hHBMP) _WinAPI_DeleteDC($hCDC) _GDIPlus_Shutdown() ;wyświetlenie utworzonego obrazka SplashImageOn("Test", @ScriptDir & "\Test.jpg", $iX, $iY) Sleep(5000) </syntaxhighlight> ===_WinAPI_CreateSolidBitmap=== #include <WinAPI.au3> _WinAPI_CreateSolidBitmap($hWnd, $iColor, $iWidth, $iHeight [, $bRGB = True]) Funkcja tworzy bitmapę typu solid (jednokolorową). Zwraca uchwyt do bitmapy, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, w którym wyświetlona będzie bitmapa '''$iColor''' - kolor bitmapy w formacie RGB '''$iWidth''' - szerokość bitmapy w pikselach '''$iHeight''' - wysokość bitmapy w pikselach '''$bRGB''' - jeżeli True to $iColor łącznie z kanałem alfa (0x00RRGGBB) Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> ;tworzenie GUI $hwnd = GUICreate("", 400, 300) $Button = GUICtrlCreateButton("", 100, 30, 100, 100, 0x40) $hDCDest = _WinAPI_GetDC($hwnd) ;kontekst do GUI ;tworzenie kompatybilnego kontekstu $hDCSource = _WinAPI_CreateCompatibleDC($hDCDest) ;tworzenie bitmapy typu solid $hHBitmap = _WinAPI_CreateSolidBitmap($hwnd, 0xff0000, 300, 300) ;przypisanie bitmapy do kompatybilnego kontekstu _WinAPI_SelectObject($hDCSource, $hHBitmap) GUISetState() Do $msg = GUIGetMsg() ;przeniesienie fragmentu bitmapy na przycisk _WinAPI_BitBlt($hDCDest, 102, 32, 96, 96, $hDCSource, 0, 0, $SRCCOPY) Until $msg = $GUI_EVENT_CLOSE Or $msg = $Button ;zwolnienie zasobów _WinAPI_ReleaseDC($hwnd, $hDCDest) _WinAPI_DeleteDC($hDCSource) _WinAPI_DeleteObject($hHBitmap) </syntaxhighlight> ===_WinAPI_CreatePen=== #include <WinAPI.au3> _WinAPI_CreatePen($iPenStyle, $iWidth, $nColor) Funkcja tworzy pióro (obiekt pen). Zwraca uchwyt do pióra, lub 0 gdy wystąpił błąd. '''$iPenStyle''' - styl pióra: PS_SOLID | linia ciągła PS_DASH | linia przerywana PS_DOT | linia punktowa PS_DASHDOT | na przemian kreska i kropka PS_DASHDOTDOT | na przemian kreska i dwie kropki PS_NULL | pióro jest niewidoczne PS_INSIDEFRAME | linia ciągła do wnętrza konturu zamkniętego '''$iWidth''' - szerokość linii rysowanej przez pióro (w pikselach) '''$nColor''' - kolor pióra w formacie BBGGRR (np. 0xAAF009) Aby użyć pióra należy przypisać go do kontekstu urządzenia za pomocą funkcji '''_WinAPI_SelectObject'''. Jeżeli wartość określona przez $nWidth jest większa niż 1, parametr $iPenStyle może być tylko PS_NULL, PS_SOLID lub PS_INSIDEFRAME. Niepotrzebne już pióro należy usunąć funkcją '''_WinApi_DeleteObject''' celem zwolnienia zasobów. Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> $hDC = _WinAPI_GetWindowDC(0) ;kontekst do desktopu ;tworzenie pędzla $hPen = _WinAPI_CreatePen($PS_SOLID, 12, 0x0000FF) ;przypisanie pędzla do kontekstu desktopu $obj = _WinAPI_SelectObject($hDC, $hPen) ;rysowanie linii _WinAPI_DrawLine($hDC, 400, 500, 900, 700) ;zmiana pędzla $hPen = _WinAPI_CreatePen($PS_DASHDOTDOT, -1, -1) $obj = _WinAPI_SelectObject($hDC, $hPen) _WinAPI_DrawLine($hDC, 400, 800, 900, 500) ; Sleep(2000) ;zwolnienie zasobów _WinAPI_DeleteObject($hPen) _WinAPI_ReleaseDC(0, $hDC) </syntaxhighlight> ===_WinAPI_CreateSolidBrush=== #include <WinAPI.au3> _WinAPI_CreateSolidBrush($nColor) Funkcja tworzy pędzel (obiekt brush)typu solid. Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. '''$nColor''' - kolor pędzla w formacie BBGGRR (np. 0xAAF009) Niepotrzebny już pędzel należy usunąć funkcją '''_WinApi_DeleteObject''' celem zwolnienia zasobów. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("WinAPI", 400, 300) $hDC = _WinAPI_GetWindowDC($hGUI) GUISetState() ;tworzenie pędzla $hBrush = _WinAPI_CreateSolidBrush(0x0000FF) ;tworzenie struktury z danymi prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) ;odczyt wskaźnika do struktury $ptrRect = DllStructGetPtr($tRect) ;rysowanie ramki wokół prostokąta _WinAPI_FrameRect($hDC, $ptrRect, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC($hGUI, $hDC) </syntaxhighlight> ===_WinAPI_CreateFont=== #include <WinAPI.au3> _WinAPI_CreateFont($nHeight, $nWidth [, $nEscape = 0 [, $nOrientn = 0 [, $fnWeight = $FW_NORMAL [, $bItalic = False [, $bUnderline = False [, $bStrikeout = False [, $nCharset = $DEFAULT_CHARSET [, $nOutputPrec = $OUT_DEFAULT_PRECIS [, $nClipPrec = $CLIP_DEFAULT_PRECIS [, $nQuality = $DEFAULT_QUALITY [, $nPitch = 0 [, $szFace = 'Arial']]]]]]]]]]]]) Funkcja tworzy logiczną czcionkę o podanych cechach. Zwraca uchwyt do czcionki, lub 0 gdy wystąpił błąd. '''$nHeight''' - wysokość czcionki '''$nWidth''' - średnia szerokość czcionki '''$nEscape''' - kąt pochylenia linii tekstu w dziesiętnych stopnia '''$nOrientn''' - '''$fnWeight''' - waga czcionki: $FW_DONTCARE - 0 $FW_THIN - 100 $FW_EXTRALIGHT - 200 $FW_LIGHT - 300 $FW_NORMAL - 400 $FW_MEDIUM - 500 $FW_SEMIBOLD - 600 $FW_BOLD - 700 $FW_EXTRABOLD - 800 $FW_HEAVY - 900 '''$bItalic''' - italik True/False '''$bUnderline''' - podkreślenie True/False '''$bStrikeout''' - przekreślenie True/False '''$nCharset''' - zestaw znaków, następujące wartości są predefiniowane: $ANSI_CHARSET - 0 $BALTIC_CHARSET - 186 $CHINESEBIG5_CHARSET - 136 $DEFAULT_CHARSET - 1 $EASTEUROPE_CHARSET - 238 $GB2312_CHARSET - 134 $GREEK_CHARSET - 161 $HANGEUL_CHARSET - 129 $MAC_CHARSET - 77 $OEM_CHARSET - 255 $RUSSIAN_CHARSET - 204 $SHIFTJIS_CHARSET - 128 $SYMBOL_CHARSET - 2 $TURKISH_CHARSET - 162 $VIETNAMESE_CHARSET - 163 '''$nOutputPrec''' - '''$nClipPrec''' - '''$nQuality''' - '''$nPitch''' - '''$szFace''' - nazwa czcionki, np.: Arial, Arial Black, Courier, Courier New, Lucida Console, MS Sans Serif, Roman, Script, Times New Roman, itd. Niepotrzebną już czcionkę należy usunąć funkcją '''_WinApi_DeleteObject''' celem zwolnienia zasobów. ===_WinAPI_CreateFontIndirect=== #include <WinAPI.au3> _WinAPI_CreateFontIndirect($tLogFont) Funkcja tworzy logiczną czcionkę o podanych cechach. Zwraca uchwyt do czcionki, lub 0 gdy wystąpił błąd. '''$tLogFont''' - struktura $tagLOGFONT , określająca cechy czcionki logicznej. Pola struktury: Nazwa pola | Typ pola | Opis ------------------------------------------------------------------------------ Height | int | wysokość czcionki Width | int | średnia szerokość czcionki, 0 szerokość domyślna Escapement | int | kąt pochylenia linii tekstu w dziesiętnych stopnia Orientation | int | Weight | int | waga czcionki Italic | byte | czcionka pochylona - italik (True/False) Underline | byte | czcionka podkreślenie (True/False) StrikeOut | byte | czcionka przekreślenie (True/False) CharSet | byte | zestaw znaków OutPrecision | byte | ClipPrecision | byte | Quality | byte | PitchAndFamily | byte | FaceName | chr[32] | nazwa czcionki Można używać predefiniowanych stałych, tak jak w '''_WinAPI_CreateFont'''. Po wybraniu czcionki za pomocą SelectObject, GDI-font-Mapper próbuje dopasować czcionki logiczne do istniejącej czcionki fizycznej. Jeśli nie można znaleźć dokładne dopasowanie, zapewnia alternatywną czcionkę, której cechy są najbardziej zbieżne. Niepotrzebny już czcinkę należy usunąć funkcją '''_WinApi_DeleteObject''' celem zwolnienia zasobów. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GUIConstants.au3> #include <GuiListBox.au3> #include <GuiButton.au3> $hGUI = GUICreate("_WinAPI_CreateFontIndirect", 350, 200) $hBtn = _GUICtrlButton_Create($hGUI, "Przycisk", 10, 10, 270, 34) $hListBox = _GUICtrlListBox_Create($hGUI, "Dyski logiczne:", 10, 50, 270, 150) _GUICtrlListBox_BeginUpdate($hListBox) _GUICtrlListBox_Dir($hListBox, "", $DDL_DRIVES, False) _GUICtrlListBox_EndUpdate($hListBox) ;tworzenie struktury $tLogFont = DllStructCreate($tagLOGFONT) DllStructSetData($tLogFont, "Height", 22) DllStructSetData($tLogFont, "Weight", 700) DllStructSetData($tLogFont, "Italic", True) DllStructSetData($tLogFont, "FaceName", 'Arial') ;tworzenie czcionek $hFont1 = _WinAPI_CreateFontIndirect($tLogFont) DllStructSetData($tLogFont, "Italic", False) DllStructSetData($tLogFont, "FaceName", 'Courier new') $hFont2 = _WinAPI_CreateFontIndirect($tLogFont) ;ustawienie czcionek _WinAPI_SetFont($hBtn, $hFont1) _WinAPI_SetFont($hListBox, $hFont2) GUISetState() Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hFont1) _WinAPI_DeleteObject($hFont2) </syntaxhighlight> ===_WinAPI_GetStockObject=== #include <WinAPI.au3> _WinAPI_GetStockObject($iObject) Funkcja zwraca uchwyt do jednego z wbudowanych szablonów pióra, pędzla, czcionki lub palety. Jeżeli wystąpił błąd zwracane jest 0. '''$iObject''' - wskazuje rodzaj obiektu. Parametr ten może być jedną z następujących wartości: $BLACK_BRUSH - pędzel czarny $DKGRAY_BRUSH - pędzel ciemnoszary $GRAY_BRUSH - pędzel szary $HOLLOW_BRUSH - pędzel Null, to samo co $NULL_BRUSH $LTGRAY_BRUSH - pędzel jasnoszary $NULL_BRUSH - pędzel Null (niemalujący) $WHITE_BRUSH - pędzel biały $BLACK_PEN - pióro czarne $NULL_PEN - pióro Null $WHITE_PEN - pióro białe $ANSI_FIXED_FONT - czcionka systemowa nieproporcjonalna (o stałej szerokości) $ANSI_VAR_FONT - czcionka systemowa proporcjonalna (o zmiennej szerokości) $DEVICE_DEFAULT_FONT - czcionka domyślna zależna od urządzenia $DEFAULT_GUI_FONT - czcionka domyślna dla obiektów interfejsu użytkownika $OEM_FIXED_FONT - czcionka nieproporcjonalna OEM $SYSTEM_FONT - czcionka systemowa $SYSTEM_FIXED_FONT - czcionka systemowa nieproporcjonalna stosowana w systemach Windows wcześniejszych niż 3.0 $DEFAULT_PALETTE - paleta domyślna Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("GetStockObject", 400, 300) $hDC = _WinAPI_GetWindowDC($hGUI) GUISetState() ;ciemnoszary pędzel $hBrush = _WinAPI_GetStockObject($DKGRAY_BRUSH) $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 380) DllStructSetData($tRect, "Bottom", 300) $ptrRect = DllStructGetPtr($tRect) _WinAPI_FillRect($hDC, $ptrRect, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC($hGUI, $hDC) </syntaxhighlight> ===_WinAPI_DrawText=== #include <WinAPI.au3> _WinAPI_DrawText($hDC, $sText, ByRef $tRect, $iFlags) Funkcja wstawia tekst do podanego kontekstu. Zwraca wysokość tekstu, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$sText''' - wstawiany tekst '''$tRect''' - struktura $tagRECT, zawierająca współrzędne prostokąta, w którym będzie wstawiony tekst '''$iFlags''' - flaga określająca jak ma być formatowany tekst: $DT_BOTTOM - wyrównanie tekstu do dolnej krawędzi prostokąta $DT_CALCRECT - oblicza szerokość i wysokość wymaganego prostokąta, wynik zwracany przez referencję w strukturze $DT_CENTER - centrowanie tekstu poziomo w prostokącie $DT_EDITCONTROL - jeżeli tekst jest wielowierszowy , to wiersz który nie mieści się w całości na wysokości prostokąta nie będzie wyświetlany, ma sens tylko w parze z $DT_WORDBREAK ($DT_WORDBREAK) + $DT_EDITCONTROL) $DT_END_ELLIPSIS - zastępuje część tekstu wielokropkiem, jeżeli nie mieści się w prostokącie $DT_EXPANDTABS - rozszerza znaki tabulacji, domyślny rozmiar tabulacji wynosi 8 znaków $DT_EXTERNALLEADING - $DT_HIDEPREFIX - nie jest wyświetlane podkreślenie znaku za prefiksem (&) $DT_INTERNAL - używa trzcinki systemowej do wyliczenia wielkości tekstu $DT_LEFT - wyrównanie tekstu do lewej $DT_MODIFYSTRING - $DT_NOCLIP - tekst nie jest przycinany gdy nie mieści się w prostokącie $DT_NOFULLWIDTHCHARBREAK - $DT_NOPREFIX - prefiks (&) jest wyświetlany jak zwykły znak $DT_PATH_ELLIPSIS - jeżeli tekst nie mieści się w prostokącie, a zawiera odwrotny ukośnik (\), część tekstu od ostatniego (\) w lewo jest zastąpiona wielokropkiem. Ten styl jest używany do wyświetlania ścieżek do plików. $DT_PREFIXONLY - wyświetla podkreślenie w miejscu znaku po prefiksie (&), inne znaki nie są wyświetlane $DT_RIGHT - wyrównanie tekstu do prawej $DT_RTLREADING - tekst od prawej do lewej, tylko dla czcionek arabskich i hebrajskich $DT_SINGLELINE - tekst jest wyświetlany w jednym wierszu, część niemieszcząca się jest przycinana $DT_TABSTOP - $DT_TOP - wyrównanie tekstu do górnej krawędzi prostokąta (tylko tekst w jednej linii) $DT_VCENTER - centrowanie tekstu w pionie (tylko tekst w jednej linii) $DT_WORDBREAK - niemieszczący się wyrazy przenoszone są do następnego wiersza, także znak końca wiersza powoduje jego złamanie, jeżeli $DT_WORDBREAK nie jest użyte to tekst jest zawsze wyświetlany w jednym wierszu $DT_WORD_ELLIPSIS - tnie dowolne słowo, które nie mieści się w prostokącie i dodaje wielokropek Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <WindowsConstants.au3> #include <FontConstants.au3> ;tworzenie struktury $tRECT = DllStructCreate($tagRect) DllStructSetData($tRECT, "Left", 500) DllStructSetData($tRECT, "Top", 250) DllStructSetData($tRECT, "Right", 1100) DllStructSetData($tRECT, "Bottom", 650) ;kontekst do desktopu $hDC = _WinAPI_GetDC(0) ;tworzenie trzcionki logicznej $hFont = _WinAPI_CreateFont(50, 0, 0, 0, 400, False, True, False, _ -1, -1, -1, -1, 0, 'Times New Roman') ;powiązanie czcionki z kontekstem $hOldFont = _WinAPI_SelectObject($hDC, $hFont) ;wypisanie tekstu _WinAPI_DrawText($hDC, "AutoIt is the best!", $tRECT, $DT_CENTER) Sleep(3000) ;zwolnienie zasobów _WinAPI_SelectObject($hDC, $hOldFont) _WinAPI_DeleteObject($hFont) _WinAPI_ReleaseDC(0, $hDC) _WinAPI_InvalidateRect(0, 0) </syntaxhighlight> ===_WinAPI_DrawLine=== #include <WinAPI.au3> _WinAPI_DrawLine($hDC, $iX1, $iY1, $iX2, $iY2) Funkcja rysuje w kontekście odcinek linii prostej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iX1''' i '''$iY1''' - współrzędne, pozioma i pionowa początku odcinka '''$iX2''' i '''$iY2''' - współrzędne, pozioma i pionowa końca odcinka ===_WinAPI_LineTo=== #include <WinAPI.au3> _WinAPI_LineTo($hDC, $iX, $iY) Funkcja rysuje odcinek od bieżącego punktu do punktu o współrzędnych podanych jako parametry. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iX''' i '''$iY''' - współrzędne, pozioma i pionowa końca odcinka ===_WinAPI_MoveTo=== #include <WinAPI.au3> _WinAPI_MoveTo($hDC, $iX, $iY) Funkcja przesuwa aktualną pozycję do określonego punktu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iX''' i '''$iY''' - nowa współrzędne, pozioma i pionowa aktualnego pozycji Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> $hDC = _WinAPI_GetWindowDC(0) ;kontekst do pulpitu ;tworzenie pióra $hPen = _WinAPI_CreatePen($PS_SOLID, 3, 0xFF) ;przypisanie pióra do kontekstu $obj_orig = _WinAPI_SelectObject($hDC, $hPen) _WinAPI_DrawLine($hDC, 400, 300, 1000, 250) $del = 50 ;przesunięcie punktu aktualnego _WinAPI_MoveTo($hDC, 0, @DesktopHeight/2 - $del) For $x = $del To @DesktopWidth Step 50 $y = @DesktopHeight/2 + $del _WinAPI_LineTo($hDC, $x, $y) ;rysowanie linii $del = -$del Next Sleep(4000) ;powrót do pierwotnego pióra _WinAPI_SelectObject($hDC, $obj_orig) ;zwolnienie zasobów _WinAPI_DeleteObject($hPen) _WinAPI_ReleaseDC(0, $hDC) </syntaxhighlight> ===_WinAPI_DrawEdge=== #include <WinAPI.au3> _WinAPI_DrawEdge($hDC, $ptrRect, $nEdgeType, $grfFlags) Funkcja rysuje krawędzie prostokąta. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu kontekst '''$ptrRect''' - wskaźnik do struktury $tagRECT z opisem położenie i wielkości prostokąta '''$nEdgeType''' - określa rodzaj krawędzi $BDR_RAISEDINNER - wypukła wewnętrzna krawędź $BDR_SUNKENINNER - wklęsła wewnętrzna krawędź $BDR_RAISEDOUTER - wypukła zewnętrzna krawędź $BDR_SUNKENOUTER - wklęsła zewnętrzna krawędź $EDGE_BUMP - kombinacja $BDR_RAISEDOUTER i $BDR_SUNKENINNER $EDGE_ETCHED - kombinacja $BDR_SUNKENOUTER i $BDR_RAISEDINNER $EDGE_RAISED - kombinacja $BDR_RAISEDOUTER i $BDR_RAISEDINNER $EDGE_SUNKEN - kombinacja $BDR_SUNKENOUTER i $BDR_SUNKENINNER '''$grfFlags''' - określa rodzaj obramowania. Parametr ten może być kombinacją następujących wartości: $BF_ADJUST - $BF_BOTTOM - dolna krawędź prostokąta $BF_BOTTOMLEFT - dolna i lewa krawędź prostokąta $BF_BOTTOMRIGHT - dolna i prawa krawędź prostokąta $BF_DIAGONAL - przekątna $BF_DIAGONAL_ENDBOTTOMLEFT - przekątna, od prawego-górnego do lewego-dolnego $BF_DIAGONAL_ENDBOTTOMRIGHT - przekątna, od lewego-górnego do prawego-dolnego $BF_DIAGONAL_ENDTOPLEFT - przekątna, od prawego-dolnego do lewego-górnego $BF_DIAGONAL_ENDTOPRIGHT - przekątna, od lewego-dolnego do prawego-górnego $BF_FLAT - obramowanie niewidoczne $BF_LEFT - lewa krawędź prostokąta $BF_MIDDLE - wnętrze prostokąta zamalowane (przekątne nie będą widoczne) $BF_MONO - obramowanie pojedynczą linią (wszystkie elementy jednakową) $BF_RECT - cały obwód od prostokąta $BF_RIGHT - prawa krawędź prostokąta $BF_SOFT - $BF_TOP - górna krawędź prostokąta $BF_TOPLEFT - górna i lewa krawędź prostokąta $BF_TOPRIGHT - górna i prawej krawędź prostokąta Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <BorderConstants.au3> ;tworzenie GUI $hGUI = GUICreate("_WinAPI_DrawEdge", 410, 300) GUISetState() ;kontekst do przestrzeni roboczej okna $hDC = _WinAPI_GetDC($hGUI) ;tworzenie struktury z opisem prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) $ptrRect = DllStructGetPtr($tRect) ;rysowanie prostokąta _WinAPI_DrawEdge($hDC, $ptrRect, $EDGE_RAISED , $BF_RECT) ;przesunięcie prostokąta poprzez zmianę wartości pól w strukturze DllStructSetData($tRect, "Left", 220) DllStructSetData($tRect, "Right", 400) ;rysowanie nowego prostokąta z przekątnymi _WinAPI_DrawEdge($hDC, $ptrRect, $EDGE_BUMP, $BF_DIAGONAL_ENDBOTTOMLEFT) _WinAPI_DrawEdge($hDC, $ptrRect, $EDGE_BUMP, $BF_DIAGONAL_ENDBOTTOMRIGHT) _WinAPI_DrawEdge($hDC, $ptrRect, $EDGE_BUMP, $BF_RECT) ;zwolnienie zasobów _WinAPI_ReleaseDC($hGUI, $hDC) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_DrawFrameControl=== #include <WinAPI.au3> _WinAPI_DrawFrameControl($hDC, $ptrRect, $nType, $nState) Funkcja rysuje elementy kontrolek określonego typu i stylu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$tRect''' - struktura $tagRECT, zawierająca współrzędne prostokąta, w którym będzie wrysowany element '''$nType''' - typ rysowanego elementu. Parametr ten może być jedną z następujących wartości: $DFC_BUTTON - standardowy przycisk $DFC_CAPTION - pasek tytułu $DFC_MENU - pasek menu $DFC_POPUPMENU - element menu podręcznego $DFC_SCROLL - pasek przewijania '''$nState''' - określa początkowy stan ramki kontrolki: ------------------------------------------------------------------------------------ Jeśli $nType jest $DFC_BUTTON to $nState może być jedną z następujących wartości: ------------------------------------------------------------------------------------ $DFCS_BUTTON3STATE - przycisk 3-stanowy $DFCS_BUTTONCHECK - pole wyboru $DFCS_BUTTONPUSH - przycisk $DFCS_BUTTONRADIO - przycisk radio $DFCS_BUTTONRADIOIMAGE - Obraz dla przycisku opcji ( nonsquare potrzebuje obrazu ) $DFCS_BUTTONRADIOMASK - Maska dla przycisku opcji ( nonsquare potrzebuje maski ) ------------------------------------------------------------------------------------ Jeśli $nType jest $DFC_CAPTION , $nState może być jedną z następujących wartości: ------------------------------------------------------------------------------------ $DFCS_CAPTIONCLOSE - przycisk Zamknij $DFCS_CAPTIONHELP - przycisk Help $DFCS_CAPTIONMAX - przycisk Maksymalizuj $DFCS_CAPTIONMIN - przycisk Minimalizuj $DFCS_CAPTIONRESTORE - przycisk Restore ------------------------------------------------------------------------------------ Jeśli $nType jest $DFC_MENU , $ nState może być jedną z następujących wartości : ------------------------------------------------------------------------------------ $DFCS_MENUARROW - strzałka w prawo (rozwijanie podmenu) $DFCS_MENUARROWRIGHT - strzałka w lewo $DFCS_MENUBULLET - kropka $DFCS_MENUCHECK - zaznaczenia ------------------------------------------------------------------------------------ Jeśli $nType jest $DFC_SCROLL , $nState może być jedną z następujących wartości : ------------------------------------------------------------------------------------ $DFCS_SCROLLCOMBOBOX - strzałka w dół (pasek przewijania Combo box) $DFCS_SCROLLDOWN - strzałka w dół z paska przewijania $DFCS_SCROLLLEFT - strzałka w lewo z paska przewijania $DFCS_SCROLLRIGHT - Strzałka w prawo z paska przewijania $DFCS_SCROLLSIZEGRIP - uchwyt zmiany wielkości okna (prawy) $DFCS_SCROLLSIZEGRIPRIGHT - uchwyt zmiany wielkości okna (lewy) $DFCS_SCROLLUP - strzałka w górę z paska przewijania ------------------------------------------------------------------------------------ Następujących wartości mogą być dodane w celu ustawienia stanu elementu: ------------------------------------------------------------------------------------ $DFCS_CHECKED - przycisk jest zaznaczony $DFCS_FLAT - przycisk z płaskim obramowaniem $DFCS_INACTIVE - przycisk jest nieaktywny (szary) $DFCS_PUSHED - przycisk jest wciśnięty Przykład: <syntaxhighlight lang="autoit"> #include <FrameConstants.au3> #include <GUIConstantsEx.au3> #include <WinAPI.au3> ;tworzenie GUI $hGUI = GUICreate("_WinAPI_DrawFrameControl", 300, 300) GUISetState() $hDC = _WinAPI_GetDC($hGUI) $tRect = DllStructCreate($tagRECT) $ptrRect = DllStructGetPtr($tRect) $DFC = $DFC_CAPTION ;elementy paska tytułu SetPosSize($tRect, 20, 25, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_CAPTIONCLOSE) SetPosSize($tRect, 50, 25, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_CAPTIONHELP + $DFCS_INACTIVE) SetPosSize($tRect, 80, 25, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_CAPTIONMIN) SetPosSize($tRect, 110, 25, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_CAPTIONRESTORE + $DFCS_PUSHED) $DFC = $DFC_MENU ;elementy menu SetPosSize($tRect, 20, 65, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_MENUARROW) SetPosSize($tRect, 50, 65, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_MENUARROWRIGHT) SetPosSize($tRect, 80, 65, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_MENUBULLET) SetPosSize($tRect, 110, 65, 40, 40) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_MENUCHECK) ;zwolnienie zasobów _WinAPI_ReleaseDC($hGUI, $hDC) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE Func SetPosSize(ByRef $tRect, $x, $y, $w, $h) DllStructSetData($tRect, "Left", $x) DllStructSetData($tRect, "Top", $y) DllStructSetData($tRect, "Right", $x + $w) DllStructSetData($tRect, "Bottom", $y + $h) EndFunc </syntaxhighlight> ===_WinAPI_FillRect=== #include <WinAPI.au3> _WinAPI_FillRect($hDC, $ptrRect, $hBrush) Funkcja zamalowuje prostokąt podanym pędzlem. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$ptrRect''' - wskaźnik do struktury $tagRECT z opisem położenie i wielkości prostokąta '''$hBrush''' - uchwyt do pędzla, lub powiększony o 1 kod jednego z kolorów systemowych. Kody kolorów systemowych od 0 do 30 (np. 13 to kolor wybranej pozycji w kontrolce). Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("WinAPI", 400, 300) $hDC = _WinAPI_GetWindowDC($hGUI) GUISetState() ;tworzenie pędzla (czerwony) $hBrush = _WinAPI_CreateSolidBrush(0x0000FF) ;tworzenie struktury z danymi prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) ;odczyt wskaźnika do struktury $ptrRect = DllStructGetPtr($tRect) ;zamalowanie prostokąta zdefiniowanym pędzlem _WinAPI_FillRect($hDC, $ptrRect, $hBrush) DllStructSetData($tRect, "Left", 210) DllStructSetData($tRect, "Right", 390) ;zamalowanie prostokąta standardowym kolorem _WinAPI_FillRect($hDC, $ptrRect, 29+1) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC($hGUI, $hDC) </syntaxhighlight> ===_WinAPI_FrameRect=== #include <WinAPI.au3> _WinAPI_FrameRect($hDC, $ptrRect, $hBrush) Funkcja rysuje ramkę wokół prostokątnego obszaru za pomocą podanego pędzla. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$ptrRect''' - wskaźnik do struktury $tagRECT z opisem położenie i wielkości prostokąta '''$hBrush''' - uchwyt do pędzla Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("WinAPI", 400, 300) $hDC = _WinAPI_GetWindowDC($hGUI) GUISetState() ;tworzenie pędzla $hBrush = _WinAPI_CreateSolidBrush(0x0000FF) ;tworzenie struktury z danymi prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) ;odczyt wskaźnika do struktury $ptrRect = DllStructGetPtr($tRect) ;rysowanie ramki wokół prostokąta _WinAPI_FrameRect($hDC, $ptrRect, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC($hGUI, $hDC) </syntaxhighlight> ==Ikony i kursory== ===_WinAPI_DrawIcon=== #include <WinAPI.au3> _WinAPI_DrawIcon($hDC, $iX, $iY, $hIcon) Funkcja rysuje ikonę w określonym kontekście urządzenia. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu urządzenia '''$iX''' i '''$iY''' - współrzędne lewego górnego rogu ikony '''$hIcon''' - uchwyt do ikony ===_WinAPI_DrawIconEx=== #include <WinAPI.au3> _WinAPI_DrawIconEx($hDC, $iX, $iY, $hIcon [, $iWidth = 0 [, $iHeight = 0 [, $iStep = 0 [, $hBrush = 0 [, $iFlags = 3]]]]]) Funkcja rysuje ikonę w określonym kontekście urządzenia. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu urządzenia '''$iX''' i '''$iY''' - współrzędne lewego górnego rogu ikony '''$hIcon''' - uchwyt do ikony '''$iWidth''' i '''$iHeight''' - szerokość i wysokość ikony lub kursora, 0 szerokość domyślna '''$iStep''' - indeks kadru animowanego kursora, parametr jest ignorowany gdy ikona nie jest animowanym kursorem '''$hBrush''' - uchwyt pędzla do tworzenia migotania kursora '''$iFlags''' - parametr ten może być jedna z następujących wartości: 1 - rysowanie ikony lub kursora za pomocą maski 2 - rysowanie ikony lub kursora za pomocą obrazu 3 - rysowanie ikony lub kursora za pomocą maski i obrazu ===_WinAPI_LoadShell32Icon=== #include <WinAPI.au3> _WinAPI_LoadShell32Icon($iIconID) Funkcja odczytuje i zwraca uchwyt do ikony z pliku '''Shell32.dll''', lub 0 gdy wystąpił błąd. '''$iIconID''' - ID ikony w pliku '''Shell32.dll''' ===_WinAPI_CopyIcon=== #include <WinAPI.au3> _WinAPI_CopyIcon($hIcon) Funkcja tworzy duplikat ikony. Zwraca uchwyt do duplikatu, lub 0 gdy wystąpił błąd. '''$hIcon''' - uchwyt do kopiowanej ikony ===_WinAPI_DestroyIcon=== #include <WinAPI.au3> _WinAPI_DestroyIcon($hIcon) Funkcja usuwa z pamięci ikonę o podanym uchwycie. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hIcon''' - uchwyt do usuwanej ikony Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> ;tworzenie GUI $hGUI = GUICreate("_WinAPI_DrawIcon", 400, 300) $hDC = _WinAPI_GetDC($hGUI) GUISetState() ;odczyt uchwytu do ikony $hIcon1 = _WinAPI_LoadShell32Icon(4) ;rysowanie ikony _WinAPI_DrawIcon($hDC, 20, 40, $hIcon1) ;tworzenie duplikatu ikony $hIcon2 = _WinAPI_CopyIcon($hIcon1) ;rysowanie ikony _WinAPI_DrawIconEx($hDC, 100, 40, $hIcon2, 160, 160) ;zwolnienie zasobów _WinAPI_ReleaseDC($hGUI, $hDC) _WinAPI_DestroyIcon($hIcon1) _WinAPI_DestroyIcon($hIcon2) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_SetCursor=== #include <WinAPI.au3> _WinAPI_SetCursor($hCursor) Funkcja ustawia kształt kursora. Zwraca uchwyt do poprzedniego kursora (o ile taki istniał), lub gdy nie było kursora. '''$hCursor''' - uchwyt do nowego kursora Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hCursor = 0x1000b $hGUI = GUICreate("_WinAPI_SetCursor", 400, 300) GUISetState() Do _WinAPI_SetCursor($hCursor) Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_GetCursorInfo=== #include <WinAPI.au3> _WinAPI_GetCursorInfo() Funkcja zwraca informacje o kursorze w postaci jednowymiarowej tablicy. Jeżeli wystąpi błąd makro @error<>0. Informacje w zwracanej tablicy: [0] - zawsze True [1] - True jeżeli kursor jest widoczny, w przeciwnym razie False [2] - uchwyt do kursora [3] - współrzędna pozioma kursora (globalna) [4] - współrzędna pionowa kursora (globalna) Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> ;odczyt informacji o kursorze $arr = _WinAPI_GetCursorInfo() ;tekst do wyświetlenia $Cursorinfo = " Zawsze : " & $arr[0] & @LF & _ " Widoczny?: " & $arr[1] & @LF & _ " Uchwyt : " & $arr[2] & @LF & _ " Pozycja X: " & $arr[3] & @LF & _ " Pozycja Y: " & $arr[4] ;tworzenie GUI $hGUI = GUICreate("Kursor", 200, 300) GUICtrlCreateLabel("DANE KURSORA", 58, 20,120,70) GUICtrlCreateLabel("IKONA KURSORA", 58, 150,120,70) $lab = GUICtrlCreateLabel($Cursorinfo, 40, 40,120,70) GUICtrlSetBkColor($lab,0xffff00) $hDC = _WinAPI_GetDC($hGUI) GUISetState() ;rysowanie ikony kursora _WinAPI_DrawIconEx($hDC, 60, 190, $arr[2], 100, 100) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_GetIconInfo=== #include <WinAPI.au3> _WinAPI_GetIconInfo($hIcon) Funkcja zwraca w postaci jednowymiarowej tablicy informacje o określonej ikonie lub kursorze. Jeżeli wystąpi błąd makro @error<>0. Informacje w zwracanej tablicy: [0] - zawsze True [1] - True oznacza ikonę, False kursor [2] - współrzędna pozioma "hot spotu" kursora [3] - współrzędna pionowa "hot spotu" kursora [4] - uchwyt do maski ikony [5] - uchwyt do kolorowej bitmapy ikony Dla ikon "hot spot" jest zawsze w środku ikony. '''$hIcon''' - uchwyt do ikony lub jeden z poniższych kodów (dla W7): 0x10003 - normalna strzałka 0x10005 - pionowy kursor tekstowy (I) 0x10007 - koło (oczekiwanie na zakończenie operacji) 0x10009 - krzyż 0x1000B - strzałka w górę 0x1000D - dwustronna strzałka pochylona w prawo 0x1000F - dwustronna strzałka pochylona w prawo 0x10011 - dwustronna strzałka pozioma 0x10013 - dwustronna strzałka pionowa 0x10015 - krzyż z 4 strzałkami na ramionach 0x10017 - znak "STOP" 0x10019 - strzałka z kółkiem 0x1001B - strzałka ze znakiem zapytania 0x1001D - pióro 0x1001F - rączka 0x10021 - przycisk 0x10023 - strzałka z płytą 0x10025 - ikona aplikacji 0x10027 - ikona aplikacji 0x10029 - ostrzeżenie (wykrzyknik w żółtym trójkącie) 0x1002B - znak zapytania 0x1002D - krzyż w czerwonym kole 0x1002F - informacja (i w niebieskim kole) 0x10031 - ikona aplikacji 0x10033 - tarcza Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $kod=0x00002D ;odczyt informacji o kursorze $arr = _WinAPI_GetIconInfo($kod) ;tekst do wyświetlenia $IconInfo = " KOD=" & $kod & " (" & Ptr($kod) & ")" & @LF & _ "-------------------------------------" & @LF & _ " Zawsze : " & $arr[0] & @LF & _ " Ikona? : " & $arr[1] & @LF & _ " X hot spot : " & $arr[2] & @LF & _ " Y hot spot : " & $arr[2] & @LF & _ " Uchwyt maski: " & $arr[4] & @LF & _ " Uchwyt bitmapy: " & $arr[5] ;tworzenie GUI $hGUI = GUICreate("Kursor", 200, 305) GUICtrlCreateLabel("DANE IKONY", 58, 15,120,70) GUICtrlCreateLabel("WYGLĄD IKONY", 58, 180,120,70) $hLab = GUICtrlCreateLabel($IconInfo, 15, 35,170,135) GUICtrlSetBkColor($hLab,0xffff00) GUISetState() ;odczyt uchwytu do kontekstu przestrzeni roboczej okna $hDC = _WinAPI_GetDC($hGUI) ;rysowanie ikony _WinAPI_DrawIconEx($hDC, 50, 200, $kod, 100, 100) Do Sleep(50) _WinAPI_DrawIconEx($hDC, 50, 200, $kod, 100, 100) Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_ReleaseDC ($hGUI, $hDC) </syntaxhighlight> ===_WinAPI_ShowCursor=== #include <WinAPI.au3> _WinAPI_ShowCursor($fShow) Funkcja włącza/wyłącza wyświetlanie kursora w oknie skryptu. Zwraca nowy stan licznika wyświetlania, 0 - kursor wyświetlany, -1 - kursor ukryty. '''$fShow''' - True - kursor będzie wyświetlany, False - kursor będzie ukryty Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GUIConstantsEx.au3> $iCount = 0 $hGui = GUICreate('Kursor widoczny', 350, 200) $iButton = GUICtrlCreateButton('Schowaj kursor', 10, 10, 330, 28) GUISetState() Do Switch GUIGetMsg() Case $iButton If $iCount Then $iCount = _WinAPI_ShowCursor(True) GUICtrlSetData($iButton, 'Schowaj kursor') WinSetTitle($hGui, '','Kursor widoczny, licznik = ' & $iCount) Else $iCount = _WinAPI_ShowCursor(False) GUICtrlSetData($iButton, 'Pokaż kursor') WinSetTitle($hGui, '','Kursor niewidoczny, licznik = ' & $iCount) EndIf Case $GUI_EVENT_CLOSE Exit EndSwitch Until False </syntaxhighlight> ===_WinAPI_SaveHICONToFile=== #include <WinAPIGdi.au3> _WinAPI_SaveHICONToFile ( $sFilePath, $vIcon [, $bCompress = False [, $iStart = 0 [, $iEnd = -1]]] ) Funkcja zapisuje ikonę na dysku. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''$sFilePath''' - nazwa pliku ze ścieżką dostępu '''$vIcon''' - uchwyt do ikony lub tablica uchwytów ikon (jeżeli plik ma zawierać kolekcję ikon) '''$bCompress''' - określa czy użyć kompresji PNG przy zapisie ikon 32-bitowych. True - tak, False - nie '''$iStart''' - (tylko dla tablicy uchwytów) indeks pierwszej ikony do zapisu na dysku '''$iEnd''' - (tylko dla tablicy uchwytów) indeks ostatniej ikony do zapisu, domyślna wartość -1 oznacza ostatni indeks w tablicy Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> ;#include <WinAPIGdi.au3> nie jest konieczne, gdyż GDIPlus.au3 używa WinAPIGdi.au3 Opt('TrayMenuMode', 3) _GDIPlus_Startup() $sFile = FileOpenDialog("Wybierz obrazek", "", "Obrazy (*.bmp;*.png;*.jpg;*.gif;*.tif)") $hBitmap = _GDIPlus_ImageLoadFromFile($sFile) ;wczytanie bitmapy z dysku $hIcon = _GDIPlus_HICONCreateFromBitmap($hBitmap) ;tworzenie ikony z bitmapy _WinAPI_SaveHICONToFile('MyIcon.ico', $hIcon) ;zapisanie ikony na dysku ;zwolnienie zasobów _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() ;tworzenie menu w tray'u $hMenu = TrayItemGetHandle(0) $idView = TrayCreateItem('Wyświetlenie obrazu ikony') TrayCreateItem('') $idExit = TrayCreateItem('Koniec') TraySetIcon('MyIcon.ico') ;zmiana ikony w tray'u TraySetState() TrayTip("Uwaga", 'Zmiana ikony w tray', 30) Do $idMsg = TrayGetMsg() If $idMsg = $idExit Then Exit if $idMsg = $idView Then SplashImageOn('', $sFile) Sleep(3000) SplashOff() EndIf Until 0 </syntaxhighlight> ==Regiony (Window Regions)== Każde okno w Windows ma zdefiniowany region, który jest widoczny dla użytkownika. Normalnie system operacyjny ustala ten region na całą powierzchnię okna. Istnieją jednak możliwość programowego ograniczenia widocznego obszaru okna poprzez zdefiniowanie własnego regionu. Po za tym regionem okno będzie niewidoczne i przeźroczyste. Samo ustalenie regionu nie ma wpływu na kształt całego okna, więc istnieje możliwość zmiany regonu w czasie działania skryptu. Samo okno nie zmienia się, zmienia się tylko kształt obszaru, w którym to okno jest widoczne. '''UWAGA:''' 1. Wszystkie współrzędne używane do definiowania regionów odnoszą się do całego okna, a nie jego przestrzeni roboczej. 2. Nie należy usuwać uchwytów regionu. System sam usuwa uchwyty, gdy nie są już potrzebne. Poniżej kilka funkcji do operowania regionami. ===_WinAPI_CreateRectRgn=== #include <WinAPI.au3> _WinAPI_CreateRectRgn($iLeftRect, $iTopRect, $iRightRect, $iBottomRect) Funkcja tworzy prostokątny region. Zwraca uchwyt do regionu, lub 0 gdy wystąpił błąd. '''$iLeftRect''' i '''$iTopRect''' - współrzędna lewego górnego narożnika prostokąta '''$iRightRect''' i '''$iBottomRect''' - współrzędna prawego dolnego narożnika prostokąta '''UWAGA:''' 1. Wszystkie współrzędne używane do definiowania regionów odnoszą się do całego okna, a nie jego przestrzeni roboczej. 2. Nie należy usuwać uchwytów regionu. System sam usuwa uchwyty, gdy nie są już potrzebne. ===_WinAPI_CreateRoundRectRgn=== #include <WinAPI.au3> _WinAPI_CreateRoundRectRgn($iLeftRect, $iTopRect, $iRightRect, $iBottomRect, $iWidthEllipse, $iHeightEllipse) Funkcja tworzy prostokątny region z zaokrąglonymi narożnikami. Zwraca uchwyt do regionu, lub 0 gdy wystąpił błąd. '''$iLeftRect''' i '''$iTopRect''' - współrzędna lewego górnego narożnika prostokąta '''$iRightRect''' i '''$iBottomRect''' - współrzędna prawego dolnego narożnika prostokąta '''$iRightRect''' i '''$iBottomRect''' - szerokość i wysokość elipsy tworzącej zaokrąglenia narożników ===_WinAPI_CombineRgn=== #include <WinAPI.au3> _WinAPI_CombineRgn($hRgnDest, $hRgnSrc1, $hRgnSrc2, $iCombineMode) Funkcja tworzy region będący kombinacją dwóch innych regionów. Zwraca typ powstałego regionu, lub 0 gdy wystąpił błąd. Zwracane wartości: $NULLREGION = 1 - region jest pusty $SIMPLEREGION = 2 - pojedynczy prostokąt $COMPLEXREGION = 3 - region kompleksowy zawierający więcej elementów Parametry: '''$hRgnDest''' - uchwyt do nowego regionu o wymiarach odpowiadających kombinacji dwóch pozostałych regionów. Region ten musi być wcześniej zdefiniowany w sposób dowolny, gdyż i tak zostanie nadpisany poprzez referencję. '''$hRgnSrc1''' i '''$hRgnSrc2''' - uchwyty do dwóch regionów, których kombinację tworzymy '''$iCombineMode''' - parametr określający sposób łączenia dwóch regionów. Może być jedną z poniższych wartości: $RGN_AND = 1 - część wspólna $RGN_OR = 2 - suma obu regionów $RGN_XOR = 3 - suma regionów z wyłączeniem części wspólnej $RGN_DIFF = 4 - drugi region odjęty od pierwszego $RGN_COPY = 5 - kopia pierwszego regionu ===_WinAPI_SetWindowRgn=== #include <WinAPI.au3> _WinAPI_SetWindowRgn($hWnd, $hRgn [, $bRedraw]) Funkcja aktywuj region o podanym uchwycie. Zwraca liczbę <>0 gdy sukces, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, którego dotyczyć będzie aktywowany region '''$hRgn''' - uchwyt do zdefiniowanego regionu '''$bRedraw''' - określa czy system ma odświeżyć okno po aktywowaniu regionu Przykład manipulowania regionami: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState(@SW_SHOW) $pos = WinGetPos($hGUI) $width = $pos[2] $height = $pos[3] ;okno normalne Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;region prostokątny $rgn = _WinAPI_CreateRectRgn(10, 10, 200, 200) _WinAPI_SetWindowRgn($hGUI, $rgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;region z zaokrąglonymi narożnikami $rgn = _WinAPI_CreateRoundRectRgn(0, 0, $width, $height,$width, $height) _WinAPI_SetWindowRgn($hGUI, $rgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;region kombinowany $rgn = _WinAPI_CreateRectRgn(0, 0, $width, $height) $rgn1 = _WinAPI_CreateRoundRectRgn(0, 0,200, 200,200, 200) $rgn2 = _WinAPI_CreateRoundRectRgn(220, 100,350,210, 50, 50) _WinAPI_CombineRgn($rgn, $rgn1, $rgn2, 2) _WinAPI_SetWindowRgn($hGUI, $rgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;region kombinowany z przezroczystym tłem $rgn = _WinAPI_CreateRectRgn(0, 0, $width, $height) $rgn2 = _WinAPI_CreateRectRgn(8, 28, 349, 232) $rgn3 = _WinAPI_CreateRectRgn(104, 176, 252, 199) _WinAPI_CombineRgn($rgn, $rgn, $rgn2, 3) _WinAPI_CombineRgn($rgn, $rgn, $rgn3, 2) _WinAPI_SetWindowRgn($hGUI, $rgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit </syntaxhighlight> ===_WinAPI_GetWindowRgn=== #include <WinAPI.au3> _WinAPI_GetWindowRgn($hWnd, $hRgn) Funkcja odczytuje uchwyt do aktualnie ustawionego regionu. Zwraca typ regionu (jak '''_WinAPI_CombineRgn'''), lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, którego region będzie odczytywany '''$hRgn''' - uchwyt do regionu, może być dowolny, gdyż zostanie nadpisany przez referencję odczytywanym regionem okna. Najprościej stworzyć dowolny region funkcją '''_WinAPI_CreateRectRgn'''. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState(@SW_SHOW) ;okno wyjściwe Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;ustalenie regionu _WinAPI_SetWindowRgn($hGUI, _WinAPI_CreateRectRgn(0, 0, 200, 210)) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;tworzenie dowolnego regionu $hrgn = _WinAPI_CreateRectRgn(0, 0, 0, 0) ;odczyt uchwytu aktualnego regionu _WinAPI_GetWindowRgn($hGUI, $hrgn) ;zmiana regionu _WinAPI_SetWindowRgn($hGUI, _WinAPI_CreateRectRgn(0, 0, 200, 20)) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;odtworzenie regionu _WinAPI_SetWindowRgn($hGUI, $hrgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit </syntaxhighlight> ==Funkcje związane z oknami i ekranem== W systemie Windows istnieje wiele różnych typów okien. Okna '''overlapped''' to standardowe okna z ramką i napisem tytułowym. Okna typu '''child''' to okna potomne, wyświetlane w obszarze roboczym swojego okna rodzica. Kiedy przesuwasz po ekranie okno rodzica, to razem z nim przesuwają się wszystkie jego okna-dzieci. Okna typu '''popup''' to również okna potomne, wyświetlane jednak niezależnie od położenia i rozmiarów okna rodzica. Okna potomne znajdują się zawsze nad swoim oknem-rodzicem (nie mogą być przez nie zasłonięte). Również obiekty sterujące typu: przyciski, listbox'y, paski przewijania i inne opisane niżej obiekty są oknami. ===_WinAPI_CreateWindowEx=== #include <WinAPI.au3> _WinAPI_CreateWindowEx($iExStyle, $sClass, $sName, $iStyle, $iX, $iY, $iWidth, $iHeight, $hParent [, $hMenu = 0 [, $hInstance = 0 [, $pParam = 0]]]) Funkcja zwraca uchwyt do tworzonego okna, lub 0 gdy wystąpił błąd. '''$iExStyle''' - rozszerzony styl okna '''$sClass''' - nazwa klasy okna, np.: BUTTON, COMBOBOX, EDIT, LISTBOX, MDICLIENT, SCROLLBAR, STATIC '''$sName''' - nazwa okna '''$iStyle''' - styl okna '''$iX''', '''$iY''' - współrzędne lewego górnego narożnika okna '''$iWidth''', '''$iHeight''' - szerokość i wysokość okna '''$hParent''' - uchwyt okna nadrzędnego '''$hMenu''' - uchwyt do menu lub numer kontrolki '''$hInstance''' - uchwyt instancji '''$pParam''' - parametr używany przy tworzeniu okna MDI (Multiple Document Interface) UWAGA: $iExStyle i $iStyle wg rozdziału [[AutoIt/GUI#Tworzenie okna GUI|AutoIt / GUI / Opis funkcji GUI / Tworzenie okna GUI]]. ===_WinAPI_DestroyWindow=== #include <WinAPI.au3> _WinAPI_DestroyWindow($hWnd) Funkcja niszczy okno o podanym uchwycie. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> $hGui = GUICreate('CreateWindowEx', 240, 60) $hEdit = _WinAPI_CreateWindowEx($WS_EX_CLIENTEDGE, "Edit", "Mały test", _ BitOR($WS_CHILD, $WS_VISIBLE), 10, 10, 140, 22, $hGui) $hButton = _WinAPI_CreateWindowEx($WS_EX_DLGMODALFRAME, "Button", "Przycisk", _ BitOR($WS_CHILD, $WS_VISIBLE), 160, 10, 70, 22, $hGui) GUISetState() Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _WinAPI_DestroyWindow($hEdit) Sleep(1000) _WinAPI_DestroyWindow($hButton) Sleep(1000) </syntaxhighlight> ===_WinAPI_ShowWindow=== #include <WinAPI.au3> _WinAPI_ShowWindow ( $hWnd [, $iCmdShow = 5] ) Funkcja ustawia określony stan wyświetlanego okna. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt okna '''$iCmdShow''' - określa w jaki sposób wyświetlane jest okno: @SW_HIDE - ukrywa okno @SW_MAXIMIZE - maksymalizuje okno @SW_MINIMIZE - minimalizuje okno i aktywuje następne w kolejności wg kolejności nakładania (Z-order) @SW_RESTORE - wyświetla i aktywuje okno @SW_SHOW - wyświetla i aktywuje okno w domyślnej wielkości i położeniu @SW_SHOWDEFAULT - ustawia stan wyświetlania okna w oparciu o SW_flag określonej w strukturze STARTUPINF @SW_SHOWMAXIMIZED - wyświetla i aktywuje zmaksymalizowane okno @SW_SHOWMINIMIZED - wyświetla i aktywuje zminimalizowane okno @SW_SHOWMINNOACTIVE - wyświetla zminimalizowane okno @SW_SHOWNA - wyświetla okno z aktualnymi ustawieniami @SW_SHOWNOACTIVATE - wyświetla w domyślnej wielkości i położeniu @SW_SHOWNORMAL - wyświetla i aktywuje okno ===_WinAPI_RedrawWindow=== #include <WinAPI.au3> _WinAPI_RedrawWindow ( $hWnd [, $tRECT = 0 [, $hRegion = 0 [, $iFlags = 5]]] ) Funkcja aktualizuje określony prostokąt lub region, w obszarze roboczym danego okna. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt okna '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru, parametr jest ignorowany, gdy w $hRegion podano uchwyt do zdefiniowanego regionu aktualizacji '''$hRegion''' - uchwyt do zdefiniowanego regionu aktualizacji, jeżeli $hRegion=0 i $tRect=0 aktualizowany jest cały obszar klienta '''$iFlags''' - flaga definiująca sposób przerysowania okna, może być kombinacją następujących wartości (zdefiniowane w <WindowsConstants.au3>): $RDW_ERASE - Causes the window to receive a WM_ERASEBKGND message when the window is repainted $RDW_FRAME - Causes any part of the nonclient area of the window that intersects the update region to receive a WM_NCPAINT message. $RDW_INTERNALPAINT - Causes a WM_PAINT message to be posted to the window regardless of whether any portion of the window is invalid. $RDW_INVALIDATE - Invalidates $tRECT or $hRegion. If both are 0, the entire window is invalidated. $RDW_NOERASE - Suppresses any pending $WM_ERASEBKGND messages $RDW_NOFRAME - Suppresses any pending $WM_NCPAINT messages $RDW_NOINTERNALPAINT - Suppresses any pending internal $WM_PAINT messages $RDW_VALIDATE - Validates $tRECT or $hRegion $RDW_ERASENOW - Causes the affected windows to receive $WM_NCPAINT and $WM_ERASEBKGND messages, if necessary, before the function returns $RDW_UPDATENOW - Causes the affected windows to receive $WM_NCPAINT, $WM_ERASEBKGND, and $WM_PAINT messages, if necessary, before the function returns. $RDW_ALLCHILDREN - Includes child windows in the repainting operation $RDW_NOCHILDREN - Excludes child windows from the repainting operation ===_WinAPI_InvalidateRect=== #include <WinAPI.au3> _WinAPI_InvalidateRect($hWnd [, $tRect = 0 [, $fErase = True]]) Funkcja powoduje odświeżenie prostokątnego obszaru okna. '''$hWnd''' - uchwyt okna, 0 oznacza cały desktop '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru '''$fErase''' - określa czy ma być kasowane tło okna, True - tło kasowane, False - tło bez zmian Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <GDIPlus.au3> Local $tRect = DllStructCreate($tagRECT) $hGUI = GUICreate("Okno testowe", 400, 450, 200, 200) GUISetState() test_picture() MsgBox(0, "", "Odświerzenie obszaru wewnątrz okna") DllStructSetData($tRect, "Left", 100) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 250) DllStructSetData($tRect, "Bottom", 300) _WinAPI_InvalidateRect($hGui, $tRect) MsgBox(0, "", "Odświerzenie całego okna") _WinAPI_InvalidateRect($hGui, 0) Sleep(3000) Func test_picture() $hGUIDC = _WinAPI_GetDC($hGUI) $hDC = _WinAPI_GetWindowDC(0) _WinAPI_BitBlt($hGUIDC, 0, 0, 400, 450, $hDC, 0, 0, $SRCCOPY) _WinAPI_ReleaseDC (0, $hDC) _WinAPI_ReleaseDC ($hGUI, $hGUIDC) EndFunc </syntaxhighlight> ===_WinAPI_IsWindow=== #include <WinAPI.au3> _WinAPI_IsWindow($hWnd) Funkcja sprawdza czy podany uchwyt jest uchwytem istniejącego okna. Zwraca True gdy jest, lub False gdy nie jest. '''$hWnd''' - sprawdzany uchwyt ===_WinAPI_IsWindowVisible=== #include <WinAPI.au3> _WinAPI_IsWindowVisible($hWnd) Funkcja sprawdza czy podany uchwyt jest uchwytem widocznego okna. Zwraca True gdy jest, lub False gdy nie jest. '''$hWnd''' - sprawdzany uchwyt Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hGui = GUICreate('') MsgBox(0, 'Test 1', _WinAPI_IsWindowVisible($hGui)) GUISetState() MsgBox(0, 'Test 2', _WinAPI_IsWindowVisible($hGui)) </syntaxhighlight> ===_WinAPI_EnumWindows=== #include <WinAPI.au3> _WinAPI_EnumWindows([$fVisible = True [, $hwnd = Default]]) Funkcja zwraca listę wszystkich otwartych okien w postaci dwuwymiarowej tablicy: [0][0] - liczba okien (n) - [1][0] - uchwyt pierwszego okna [1][1] - nazwa klasy pierwszego okna ... [n][0] - uchwyt n-tego okna [n][1] - nazwa klasy n-tego okna '''$fVisible''' - określa które okna mają być uwzględnione, True - tylko widoczne, False - wszystkie '''$hwnd''' - uchwyt do okna startowego, domyślnie jest to pulpit Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $aWindows = _WinAPI_EnumWindows() For $i = 1 To $aWindows[0][0] $text = "Uchwyt okna: " & $aWindows[$i][0] & @LF & @LF $text &= "Klasa okna: " & $aWindows[$i][1] & @LF & @LF $text &= "Nazwa okna: " & WinGetTitle($aWindows[$i][0]) & @LF & @LF $text &= "Tekst w oknie: " & WinGetText($aWindows[$i][0]) & @LF & @LF $text &= "Nr procesu okna: " & WinGetProcess($aWindows[$i][0]) MsgBox(0, "Otwarte okna: " & $i & " of " & $aWindows[0][0], $text) Next </syntaxhighlight> ===_WinAPI_EnumWindowsPopup=== #include <WinAPI.au3> _WinAPI_EnumWindowsPopup() Funkcja zwraca listę wszystkich otwartych okien typu popup w postaci dwuwymiarowej tablicy: [0][0] - liczba okien (n) - [1][0] - uchwyt pierwszego okna [1][1] - nazwa klasy pierwszego okna ... [n][0] - uchwyt n-tego okna [n][1] - nazwa klasy n-tego okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $aWindows = _WinAPI_EnumWindowsPopup() If $aWindows[0][0] = 0 Then MsgBox(0, "Otwarte okna popup: ", "Brak okien popup.") else For $i = 1 To $aWindows[0][0] $text = "Uchwyt okna: " & $aWindows[$i][0] & @LF & @LF $text &= "Klasa okna: " & $aWindows[$i][1] & @LF & @LF $text &= "Nazwa okna: " & WinGetTitle($aWindows[$i][0]) & @LF & @LF $text &= "Tekst w oknie: " & WinGetText($aWindows[$i][0]) & @LF & @LF $text &= "Nr procesu okna: " & WinGetProcess($aWindows[$i][0]) MsgBox(0, "Otwarte okna popup: " & $i & " of " & $aWindows[0][0], $text) Next EndIf </syntaxhighlight> ===_WinAPI_EnumWindowsTop=== #include <WinAPI.au3> _WinAPI_EnumWindowsTop() Funkcja zwraca listę wszystkich otwartych okien najwyższego poziomu w postaci dwuwymiarowej tablicy: [0][0] - liczba okien (n) - [1][0] - uchwyt pierwszego okna [1][1] - nazwa klasy pierwszego okna ... [n][0] - uchwyt n-tego okna [n][1] - nazwa klasy n-tego okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $aWindows = _WinAPI_EnumWindowsTop() For $i = 1 To $aWindows[0][0] $text = "Uchwyt okna: " & $aWindows[$i][0] & @LF & @LF $text &= "Klasa okna: " & $aWindows[$i][1] & @LF & @LF $text &= "Nazwa okna: " & WinGetTitle($aWindows[$i][0]) & @LF & @LF $text &= "Tekst w oknie: " & WinGetText($aWindows[$i][0]) & @LF & @LF $text &= "Nr procesu okna: " & WinGetProcess($aWindows[$i][0]) MsgBox(0, "Otwarte okna: " & $i & " of " & $aWindows[0][0], $text) Next </syntaxhighlight> ===_WinAPI_EnableWindow=== #include <WinAPI.au3> _WinAPI_EnableWindow($hWnd [, $fEnable = True]) Funkcja włącza i wyłącza dostęp myszy i klawiatury do określonego okna i jego kontrolek. Zwraca poprzedni stan okna: True - okno i kontrolki były dostępne False - okno i kontrolki nie były dostępne '''$hWnd''' - uchwyt do okna '''$fEnable''' - True - udostępnienie okna, False - zablokowanie dostępu Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <GUIConstantsEx.au3> $hGui = GUICreate('Okno testowe', 250, 260, 700, -1, $WS_VISIBLE, $WS_EX_TOPMOST) $hButton = GUICtrlCreateButton("Przycisk", 90, 30, 70) _WinAPI_EnableWindow($hGui, False) MsgBox(0x40000, 'Test', 'W tej chwili okno testowe jest niedostępne,' & @LF & 'po naciśnięciu OK zostanie udostępnione.') _WinAPI_EnableWindow($hGui, True) MsgBox(0x40000, 'Test', 'Okno testowe jest dostępne.') </syntaxhighlight> ===_WinAPI_ClientToScreen=== #include <WinAPI.au3> _WinAPI_ClientToScreen($hWnd, ByRef $tPoint) Funkcja przelicza współrzędne obszaru roboczego okna na współrzędne ekranowe (bezwzględne). Zwraca strukturę ze współrzędnymi ekranowymi. Jeżeli wystąpi błąd makeo @error przyjmuje kod błędu. '''$hWnd''' - uchwyt do okna '''$tPoint''' - struktura '''$tagPOINT''' za współrzędnymi przestrzeni roboczej okna. W wyniku działania struktura przez referencję przyjmie dane dla współrzędnych ekranowych, czyli takie same jakie funkcja zwraca. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> ;tworzenie testowego GUI $hwnd = GUICreate("TOkno testowe", 200, 200,400,300) GUISetState() $xc = 0 $yc = 0 ;tworzenie struktury i nadanie wartości $tpoint = DllStructCreate($tagPOINT) DllStructSetData($tpoint, "X", $xc) DllStructSetData($tpoint, "Y", $yc) ;odczyt współrzędnych ekranowych _WinAPI_ClientToScreen($hwnd, $tpoint) $xs = DllStructGetData($tpoint, "X") $ys = DllStructGetData($tpoint, "Y") MsgBox(4096, "_WinAPI_ClientToScreen", "Współrzędne przestrzeni rogoczej okna:" _ & @LF & "Xc = " & $xc & @TAB & @TAB & "Yc = " & $yc & @LF & @LF & _ "Współrzędne ekranu:" & @LF & "Xs = " & $xs & @TAB & @TAB & "Ys = " & $ys & @LF) </syntaxhighlight> ===_WinAPI_ScreenToClient=== #include <WinAPI.au3> _WinAPI_ScreenToClient($hWnd, ByRef $tPoint) Funkcja przelicza współrzędne ekranowe (bezwzględne), na współrzędne obszaru roboczego okna . Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna '''$tPoint''' - struktura '''$tagPOINT''' za współrzędnymi ekranowymi. W wyniku działania struktura przez referencję przyjmie dane dla współrzędnych przestrzeni roboczej okna. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hWnd = GUICreate("Testowe okno", 400, 200) GUISetState() Do $MousePos = MousePos($hWnd) ToolTip("Ekran:" & @LF & "Xs= " & $MousePos[0] & @LF & "Ys= " & $MousePos[1] & @LF _ & @LF & "Okno:" & @LF & "Xc= " & $MousePos[2] & @LF & "Yc= " & $MousePos[3]) Until GUIGetMsg() = $GUI_EVENT_CLOSE Func MousePos($hWnd) Local $MousePos[4], $tPoint = DllStructCreate($tagPOINT) $MousePos[0] = MouseGetPos(0) $MousePos[1] = MouseGetPos(1) DllStructSetData($tPoint, "X", $MousePos[0]) DllStructSetData($tPoint, "Y", $MousePos[1]) ;przeliczenie współrzędnych ekranowych na współrzędne okna _WinAPI_ScreenToClient($hWnd, $tPoint) $MousePos[2] = DllStructGetData($tPoint, "X") $MousePos[3] = DllStructGetData($tPoint, "Y") Return $MousePos EndFunc </syntaxhighlight> ===_WinAPI_GetClientRect=== #include <WinAPI.au3> _WinAPI_GetClientRect($hWnd) Funkcja zwraca współrzędne obszaru roboczego okna w postaci struktury $tagRECT. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna '''UWAGA:''' Zwracane wyniki są we współrzędnych obszaru roboczego więc poszczególne pola struktury zawierają: "Left" - 0 "Right" - szerokość przestrzeni roboczej okna "Top" - 0 "Bottom" - wysokość przestrzeni roboczej okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $tRect = _WinAPI_GetClientRect($hwnd) MsgBox(4096, "Obszar roboczy:", _ "Lewo..: " & DllStructGetData($tRect, "Left") & @LF & _ "Prawo.: " & DllStructGetData($tRect, "Right") & @LF & _ "Góra...: " & DllStructGetData($tRect, "Top") & @LF & _ "Dół....: " & DllStructGetData($tRect, "Bottom")) </syntaxhighlight> ===_WinAPI_GetClientHeight=== #include <WinAPI.au3> _WinAPI_GetClientHeight($hWnd) Funkcja zwraca wysokość obszaru roboczego okna. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $h = _WinAPI_GetClientHeight($hwnd) MsgBox(4096, "Obszar roboczy:", "Wysokość = " & $h) </syntaxhighlight> ===_WinAPI_GetClientWidth=== #include <WinAPI.au3> _WinAPI_GetClientWidth($hWnd) Funkcja zwraca szerokość obszaru roboczego okna. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $w = _WinAPI_GetClientWidth($hwnd) MsgBox(4096, "Obszar roboczy:", "Szerokość = " & $w) </syntaxhighlight> ===_WinAPI_GetWindowRect=== #include <WinAPI.au3> _WinAPI_GetWindowRect($hWnd) Funkcja zwraca współrzędne okna w postaci struktury $tagRECT. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna '''UWAGA:''' Zwracane wyniki są we współrzędnych ekranu. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $tRect = _WinAPI_GetWindowRect($hwnd) MsgBox(4096, "Współrzędnr okna:", _ "Lewo..: " & DllStructGetData($tRect, "Left") & @LF & _ "Prawo.: " & DllStructGetData($tRect, "Right") & @LF & _ "Góra...: " & DllStructGetData($tRect, "Top") & @LF & _ "Dół....: " & DllStructGetData($tRect, "Bottom")) </syntaxhighlight> ===_WinAPI_GetWindowPlacement=== #include <WinAPI.au3> _WinAPI_GetWindowPlacement ( $hWnd ) Funkcja zwraca w postaci struktury $tagWINDOWPLACEMENT informację o umiejscowieniu i wielkości okna na ekranie. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera, a szczegółowe informacje o błędzie można uzyskać wywołując funkcję _WinAPI_GetLastError(). '''$hWnd''' - uchwyt do okna Znaczenie pól struktury $tagWINDOWPLACEMENT: '''"length"''' - wielkość struktury w bajtach '''"flags"''' - określa flagę, która kontroluje pozycję zminimalizowanego okna i metodę, dzięki której okno zostanie przywrócone. Parametr tem może mieć jedną lub więcej z następujących wartości: $WPF_ASYNCWINDOWPLACEMENT | 4 | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- $WPF_RESTORETOMAXIMIZED | 2 | Określa, że przywrócone zostanie zmaksymalizowane okno, niezależnie od tego, czy zostało ono zmaksymalizowane zanim został zminimalizowane. | | To ustawienie jest ważne tylko przy następnym przywróceniu okna. | | Nie zmienia to zachowanie domyślnego (ustalonego przez parametr funkcji WinSetState() lub GUISetState()) . | | Flaga ta jest ważna tylko wtedy, gdy pole "showcmd" ma wartość @SW_SHOWMINIMIZED. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- $WPF_SETMINPOSITION | 1 | Określa, że współrzędne zminimalizowanego okna mogą być zmienione. Flaga ta musi być ustawiona, jeśli współrzędne okna są zmieniane w polu ptMinPosition. '''"showCmd"''' - określa aktualny stan wyświetlania okna @SW_HIDE | 0 | Ukrywa okno. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_MAXIMIZE | 3 | Maksymalizuje okno. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_MINIMIZE | 6 | Minimalizuje okno. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_RESTORE | 9 | Uaktywnia i wyświetla okno. W przypadku, gdy okno jest zminimalizowane lub zmaksymalizowane, system przywraca je do pierwotnego rozmiaru i położenia. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOW | 5 | Uaktywnia okno i wyświetla je w swojej obecnej wielkości i położeniu. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWMAXIMIZED | 3 | Uaktywnia okno i wyświetla je jako zmaksymalizowane. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWMINIMIZED | 2 | Uaktywnia okno i wyświetla je jako zminimalizowane. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWMINNOACTIVE | 7 | Wyświetla okno jako zminimalizowane. W odróżnieniu od @SW_SHOWMINIMIZED okno nie jest uaktywniane. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWNA | 8 | Wyświetla okno w swojej obecnej wielkości i położeniu. W odróżnieniu od @SW_SHOW okno nie jest uaktywniane. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWNOACTIVATE | 4 | Wyświetla okno w swojej najnowszyej wielkości i położeniu. Wartość ta jest podobna do @SW_SHOWNORMAL, z wyjątkiem tego, że okno nie jest aktywne. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWNORMAL | 1 | Uaktywnia i wyświetla okno. W przypadku, gdy okno jest zminimalizowane lub zmaksymalizowane, system przywraca je do swojego pierwotnego rozmiaru i położenia. '''"ptMinPosition"''' - Określa współrzędne lewego górnego narożnika okna, gdy okno jest zminimalizowane. Pole jest 2-elementową tablicą. '''"ptMaxPosition"''' - Określa współrzędne lewego górnego narożnika okna, gdy okno jest zmaksymalizowane. Pole jest 2-elementową tablicą. '''"rcNormalPosition"''' - Określa współrzędne domyślne narożników okna (lewy-górny, prawy-dolny). Pole jest 4-elementową tablicą. ===_WinAPI_SetWindowPlacement=== #include <WinAPI.au3> _WinAPI_SetWindowPlacement ( $hWnd, $tWindowPlacement ) Funkcja ustawia wielkość i współrzędne okna za pomocą struktury $tagWINDOWPLACEMENT. Zwraca True gdy sukces, Lub False gdy wystąpił błąd. Szczegółowe informacje o błędzie można uzyskać wywołując funkcję _WinAPI_GetLastError(). '''$hWnd''' - uchwyt do okna '''$tWindowPlacement''' - struktura z danymi okna. Znaczenie pól struktury jak dla _WinAPI_GetWindowPlacement. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Run("notepad.exe") ;uruchomienie notatnika $hWnd = WinWait("[CLASS:Notepad]") ;oczekiwanie na otwarcie okna notatnika i odczyt uchwytu do niego WinMove($hWnd, "", 256, 256, 400, 400) ;przesunięcie i zmiana rozmiarów okna Sleep(1000) WinSetState($hWnd, "", @SW_MINIMIZE) ;zminimalizowanie okna Sleep(1000) $tRET = _WinAPI_GetWindowPlacement($hWnd) ;odczyt do struktury typu $stWindowPlacement danych o umiejscowieniu okna If @error = 0 Then ;formatowanie danych zodczytanych ze struktury $tagWindowPlacement $sMsg = "Pola struktury $tagWindowPlacement:" & @CRLF & "-----------------------------------------------" & @CRLF $sMsg &= "length = " & $tRET.length & " bajty" & @CRLF $sMsg &= "flags = " & $tRET.flags & @CRLF $sMsg &= "showCmd = " & $tRET.showCmd & @CRLF & @CRLF $sMsg &= "ptMinPosition:" & @CRLF $sMsg &= @TAB & "MinX = " & $tRET.ptMinPosition(1) & @CRLF $sMsg &= @TAB & "MinY = " & $tRET.ptMinPosition(2) & @CRLF & @CRLF $sMsg &= "ptMaxPosition:" & @CRLF $sMsg &= @TAB & "MaxX = " & $tRET.ptMaxPosition(1) & @CRLF $sMsg &= @TAB & "MaxY = " & $tRET.ptMaxPosition(2) & @CRLF & @CRLF $sMsg &= "rcNormalPosition:" & @CRLF $sMsg &= @TAB & "left = " & $tRET.rcNormalPosition(1) & @CRLF $sMsg &= @TAB & "top = " & $tRET.rcNormalPosition(2) & @CRLF $sMsg &= @TAB & "right = " & $tRET.rcNormalPosition(3) & @CRLF $sMsg &= @TAB & "bottom = " & $tRET.rcNormalPosition(4) MsgBox(64, "", $sMsg) ;wprowadzenie za pomocą struktury nowych danych okna notatnika $tRET.rcNormalPosition(1) = 50 ;lewy $tRET.rcNormalPosition(2) = 120 ;górny $tRET.rcNormalPosition(3) = @DesktopWidth - 50 ;prawy $tRET.rcNormalPosition(4) = @DesktopHeight - 120 ;dolny $iRET = _WinAPI_SetWindowPlacement($hWnd, $tRET) WinSetState($hWnd, "", @SW_RESTORE) ;aktywowanie nowych ustawień okna ControlSetText($hWnd, "", "Edit1", "Pełny sukces!") ;wstawienie tekstu do notatnika Sleep(3000) WinKill($hWnd) ;zamknięcie okna notatnika Else MsgBox(16, "", "Błąd!") EndIf </syntaxhighlight> ===_WinAPI_GetWindowHeight=== #include <WinAPI.au3> _WinAPI_GetWindowHeight($hWnd) Funkcja zwraca wysokość okna. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $h = _WinAPI_GetWindowHeight($hwnd) MsgBox(4096, "Okno:", "Wysokość = " & $h) </syntaxhighlight> ===_WinAPI_GetWindowWidth=== #include <WinAPI.au3> _WinAPI_GetWindowWidth($hWnd) Funkcja zwraca szerokość okna. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $h = _WinAPI_GetWindowWidth($hwnd) MsgBox(4096, "Okno:", "Szerokość = " & $h) </syntaxhighlight> ===_WinAPI_SetFont=== #include <WinAPI.au3> _WinAPI_SetFont($hWnd, $hFont [, $fRedraw = True]) Funkcja ustawia czcionkę w oknie o podanym uchwycie. Nie zwraca żadnej wartości. '''$hWnd''' - uchwyt do okna '''$hFont''' - uchwyt do czcionki '''$fRedraw''' - określa czy okno ma być odświeżona w momencie wywołania funkcji, True (domyślnie) - tak, False - nie. Przykład: <syntaxhighlight lang="autoit"> #include <GuiListBox.au3> #include <GuiButton.au3> #include <FontConstants.au3> $hGUI = GUICreate(@ScriptName, 320, 120) $hBtn1 = _GUICtrlButton_Create($hGUI, "Przycisk 1", 10, 10, 300, 34) $hBtn2 = _GUICtrlButton_Create($hGUI, "Przycisk 2", 10, 60, 300, 34) ;definiowanie czcionek $hFont1 = _WinAPI_CreateFont(30, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _ $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Comic Sans MS') $hFont2 = _WinAPI_CreateFont(15, 0, 0, 0, 700) ;ustawienie czcionek _WinAPI_SetFont($hBtn1, $hFont1) _WinAPI_SetFont($hBtn2, $hFont2) GUISetState() Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hFont1) _WinAPI_DeleteObject($hFont2) </syntaxhighlight> ===_WinAPI_GetLayeredWindowAttributes=== #include <WinAPI.au3> _WinAPI_GetLayeredWindowAttributes($hWnd, ByRef $i_transcolor, ByRef $Transparency [, $asColorRef = False]) Funkcja odczytuje atrybuty warstwy okna. Gdy sukces zwraca: 0 - nic nie ustawiono 1 - ustawiony kolor przezroczysty 2 - ustawiona przezroczystość okna 3 - ustawione oba parametry Jeżeli wystąpił błąd zwraca 0, a makro @error zawiera kod błędu. '''$hWnd''' - uchwyt do okna '''$i_transcolor''' - zmienna w której przez referencję funkcja zapisuje kolor przezroczysty '''$Transparency''' - zmienna w której przez referencję funkcja zapisuje stopień przezroczystości okna '''$asColorRef''' - określa format kodu koloru zwracany w $i_transcolor, True - format 0x00bbggrr, False (domyślnie) - format RGB '''UWAGA:''' Wartość 0 zwrócona przez funkcję oznacza błąd tylko wtedy, gdy jednocześnie makro @error ma wartość większą od zera. ===_WinAPI_SetLayeredWindowAttributes=== #include <WinAPI.au3> _WinAPI_SetLayeredWindowAttributes($hWnd, $i_transcolor [, $Transparency = 255 [, $dwFlags = 0x03 [, $isColorRef = False]]]) Funkcja ustawia atrybuty warstwy okna. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd (makro @error = 4 - działanie funkcji nie powiodło się, @extended - dodatkowe dane o przyczynach błędu). '''$hWnd''' - uchwyt do okna '''$i_transcolor''' - kod koloru przezroczystego w formacie RGB (domyślnie) lub 0x00bbggrr, w zależności od parametru $isColorRef (-1 lub Default - kolor domyślny) '''$Transparency''' - stopień przezroczystości okna, 0 - całkowicie przezroczyste, 255 (0xff) - całkowicie nieprzezroczyste '''$dwFlags''' - flaga określająca jakie własności należy ustawić: 1 - ustawić kolor przezroczysty, 2 - ustawić przezroczystość okna, 3 - ustawić oba parametry (domyślne) '''$isColorRef''' - określa format kodu koloru w $i_transcolor, True - format 0x00bbggrr, False (domyślnie) - format RGB Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> Local $transcolor, $alpha ;tworzenie okna demonstracyjnego, warstwowego (styl $WS_EX_LAYERED) $gui = GUICreate("Przezroczystość", 400, 400, -1, -1, -1, $WS_EX_LAYERED) GUISetBkColor(0xABCDEF) ;kolor tła GUI GUICtrlCreateLabel("To jest okno demonstracyjne", 100, 150) ;początkowa przezroczystość okna =0, domyślny kolor przezroczysty _WinAPI_SetLayeredWindowAttributes($gui, -1) GUISetState() ;tworzenie okna kontrolnego $guicontrol = GUICreate("Test WinAPI", 300, 250, 100, 100) $checkTrans = GUICtrlCreateCheckbox("Kolor tła przezroczysty", 10, 10) GUICtrlCreateLabel("Suwak przezroczystości okna", 10, 50) $slidTrans = GUICtrlCreateSlider(10, 70, 200, 30) ;suwak przezroczystości GUICtrlSetLimit($slidTrans, 255, 0) GUICtrlSetData(-1, 255) $Butt = GUICtrlCreateButton("Info", 10, 150, 40) ;przycisk informacji GUISetState() Do $extMsg = GUIGetMsg(1) $msg = $extMsg[0] Switch $extMsg[1] Case $guicontrol Select Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $checkTrans Or $msg = $slidTrans If GUICtrlRead($checkTrans) = $GUI_CHECKED Then ;tło przezroczyste (kolor 0xABCDEF) _WinAPI_SetLayeredWindowAttributes($gui, 0xABCDEF, GUICtrlRead($slidTrans)) Else ;bez przezroczystego tła _WinAPI_SetLayeredWindowAttributes($gui, -1, GUICtrlRead($slidTrans)) EndIf Case $msg = $Butt $info=_WinAPI_GetLayeredWindowAttributes($gui, $transcolor, $alpha) MsgBox(0, "Info", "Kolor przezroczysty: " & Hex($transcolor) & @LF & _ "Stopień przezroczystości: " & $alpha & @LF & _ "Kod ustawień: " & $info) EndSelect Case $gui If $msg = $GUI_EVENT_CLOSE Then Exit EndSwitch Until 0 </syntaxhighlight> ===_WinAPI_UpdateLayeredWindow=== #include <WinAPI.au3> _WinAPI_UpdateLayeredWindow($hWnd, $hDCDest, $pPTDest, $pSize, $hDCSrce, $pPTSrce, $iRGB, $pBlend, $iFlags) Funkcja aktualizacje położenie, wielkość, kształt, treść i przezroczystość okna warstwowego. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do warstwowego okna. Warstwowe okno jest tworzone przez użycie rozszerzonego stylu $WS_EX_LAYERED. '''$hDCDest''' - uchwyt do kontekstu urządzenie na ekranie. '''$pPTDest''' - wskaźnik do struktury $tagPOINT, która określa nową pozycję warstwowego okna. Wartość 0 oznacza, że pozycja okna nie zmienia się. '''$pSize''' - wskaźnik do struktury $tagSIZE, która określa nowy rozmiar warstwowego okna. Wartość 0 oznacza, że rozmiar okna nie zmienia się. '''$hDCSrce''' - uchwyt kontekstu urządzenia na powierzchni, która zawiera warstwowe okno. Uchwyt ten może być uzyskać wywołując funkcję _WinAPI_CreateCompatibleDC. '''$pPTSrce''' - wskaźnik do struktury $tagPOINT, która określa położenie warstwy w kontekście urządzenia. '''$iRGB''' - kod koloru stosowanego przy komponowaniu warstwowego okna. '''$pBlend''' - wskaźnik do struktury $tagBLENDFUNCTION, która określa wartość przezroczystości stosowanej przy komponowania warstwowego okna. '''$iFlags''' - parametr ten może być jedna z następujących wartości: $ULW_ALPHA - użyj $tblend jako funkcji mieszania $ULW_COLORKEY - użyj $iRGB jako kolor przezroczystości $ULW_OPAQUE - rysowanie nieprzezroczystego warstwowego okna Przykład (należy przygotować bitmapy tła okna): <syntaxhighlight lang="autoit"> #include<WindowsConstants.au3> #include<GDIPlus.au3> #include <WinAPI.au3> HotKeySet("{ESC}","_exit_") _GDIPlus_Startup() ;wczytanie bitmap tła okna Global $sGUI=_GDIPlus_ImageLoadFromFile('1.jpg') Global $subGUI=_GDIPlus_ImageLoadFromFile('2.jpg') $hGUI=GUICreate("", 493, 900, -1, 200, -1, $WS_EX_LAYERED) GUISetState() SetBitmap($hGUI,$sGUI,150) Sleep(2000) SetBitmap($hGUI,$subGUI,255) Sleep(1000) ;tworzenie okna potomnego $sb_GUI = GUICreate("", 400, 600, 50, 30, $WS_POPUP, BitOR($WS_EX_MDICHILD, $WS_EX_LAYERED), $hGUI) GUISetBkColor(0x666666, $sb_GUI) $listview = GUICtrlCreateListView("col1 |col2|col3 ", 10, 10, 380, 585) GUICtrlSetBkColor(-1, 0x666666) GUICtrlSetColor(-1, 0xF0F0F0) ;ustawienie koloru przezroczystego _WinAPI_SetLayeredWindowAttributes($sb_GUI, 0x666666) For $i = 0 To 100 ;tworzenie listy testowej GUICtrlCreateListViewItem("Item" & Random(1, 100, 1) & "|" & "Item" & Random(1, 100, 1) & _ "|" & "Item" & Random(1, 100, 1), $listview) Next GUISetState(@SW_SHOW, $sb_GUI) ;wyświetlenie okna potomnego While 1 Sleep(30) WEnd Func _exit_() _GDIPlus_ImageDispose($sGUI) _GDIPlus_ImageDispose($subGUI) _GDIPlus_Shutdown() Exit EndFunc ;funkcja wstawia bitmapę jako tło okna, jednocześnie można zmieniać przezroczystość okna Func SetBitmap($hGUI,$hImage,$iOpacity) Local $hScrDC,$hMemDC,$hBitmap,$hOld,$pSize,$tSize,$pSource,$tSource,$pBlend,$tBlend $hScrDC=_WinAPI_GetDC(0) $hMemDC=_WinAPI_CreateCompatibleDC($hScrDC) $hBitmap=_GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) $hOld=_WinAPI_SelectObject($hMemDC,$hBitmap) $tSize=DllStructCreate($tagSIZE) $pSize=DllStructGetPtr($tSize) DllStructSetData($tSize,"X",_GDIPlus_ImageGetWidth($hImage)) DllStructSetData($tSize,"Y",_GDIPlus_ImageGetHeight($hImage)) $tSource=DllStructCreate($tagPOINT) $pSource=DllStructGetPtr($tSource) $tBlend=DllStructCreate($tagBLENDFUNCTION) $pBlend=DllStructGetPtr($tBlend) DllStructSetData($tBlend,"Alpha",$iOpacity) DllStructSetData($tBlend,"Format", 1) _WinAPI_UpdateLayeredWindow($hGUI,$hScrDC,0,$pSize,$hMemDC,$pSource,0,$pBlend,$ULW_ALPHA) ;zwolnienie zasobów _WinAPI_ReleaseDC(0,$hScrDC) _WinAPI_SelectObject($hMemDC,$hOld) _WinAPI_DeleteObject($hBitmap) _WinAPI_DeleteDC($hMemDC) EndFunc ;SetBitmap </syntaxhighlight> ===_WinAPI_MoveWindow=== #include <WinAPI.au3> _WinAPI_MoveWindow($hWnd, $iX, $iY, $iWidth, $iHeight [, $fRepaint = True]) Funkcja zmienia położenie i rozmiar okna. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna. '''$iX''' i '''$iY''' - nowe współrzędne lewego górnego narożnika okna. '''$iCX''' i '''$iCY''' - nowa szerokość i wysokość okna. '''$fRepaint''' - True - okno potomne jest przerysowywane po przesunięciu lub zmianie wymiarów (wartość domyślna), False - okno nie jest przerysowane. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <Constants.au3> Run('notepad.exe') Sleep(2000) $hGui = WinWait("[CLASS:Notepad]", "", 5) $aOld = WinGetPos($hGUI) Sleep(2000) _WinAPI_MoveWindow ($hGui, 350, 200, 200, 200) ;przesuwanie okna $a = WinGetPos($hGui) For $i=0 To 300 Step 0.01 _WinAPI_MoveWindow ($hGui, $a[1]+$i, $a[1]+$i/2, $a[2], $a[3]) Next ;powiększanie okna $a = WinGetPos($hGui) For $i=0 To 500 Step 0.01 _WinAPI_MoveWindow ($hGui, $a[0], $a[1], $a[2]+$i, $a[3]+$i) Next ;zmniejszanie okna bez zmiany położenia jego środka $a = WinGetPos($hGui) For $i=0 To 350 Step 0.01 _WinAPI_MoveWindow ($hGui, $a[0]+$i, $a[1]+$i, $a[2]-2*$i, $a[3]-2*$i) Next Sleep(1000) ;przywrócenie pierwotnego położenia i rozmiarów okna _WinAPI_MoveWindow ($hGui, $aOld[0], $aOld[1], $aOld[2], $aOld[3]) </syntaxhighlight> Przykład 2 (z oknem potomnym): <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include<WindowsConstants.au3> Local $iX = 50, $iY = 100, $iCX = 300, $iCY = 240, $style = BitOR($WS_CHILD, $WS_VSCROLL) $h = GUICreate ( "Test" , 650 , 600, 300, 300 ) GUICtrlCreateButton(' TEST ', 250, 360, 120, 28) $ch=GUICreate("", $iCX, $iCY, $iX, $iY, $style, -1, $h) GUICtrlCreateButton(' TEST ', 50, 60, 100, 28) GUISetBkColor(0xff0000) GUISetState(@SW_SHOW ,$h) GUISetState(@SW_SHOW ,$ch) Sleep(1000) For $i=0 To 250 Sleep(1) $iX += 1 $iY += 0.5 _WinAPI_MoveWindow ($ch, $iX, $iY, $iCX, $iCY) Next Sleep(3000) </syntaxhighlight> ===_WinAPI_GetDesktopWindow=== #include <WinAPI.au3> _WinAPI_GetDesktopWindow() Funkcja zwraca uchwyt do okna desktopu. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $win = _WinAPI_GetDesktopWindow() MsgBox(0, "Uchwyt desktopu:", $win) </syntaxhighlight> ===_WinAPI_GetWindow=== #include <WinAPI.au3> _WinAPI_GetWindow($hWnd, $iCmd) Funkcja zwraca uchwyt do okna pozostającego w określonym związku z danym oknem. Zwraca 0 gdy wystąpił błąd lub nie istnieje okno o zdefiniowanym związku. '''$hWnd''' - uchwyt do okna '''$iCmd''' - parametr określa zależność między określonym oknem, a oknem, którego uchwyt ma być zwrócony: <Constants.au3>| | Opis --------------------------------------------------------------------------------------------------------- $GW_CHILD | 5 | aktywne okno podrzędne $GW_HWNDFIRST | 0 | najwyżej stojące okno wg kolejności nakładania Z, posiadające to samo okno nadrzędne $GW_HWNDLAST | 1 | najniżej stojące okno wg kolejności nakładania Z, posiadające to samo okno nadrzędne $GW_HWNDNEXT | 2 | okno będące bezpośrednio poniżej danego okna wg kolejności nakładania Z $GW_HWNDPREV | 3 | okno będące bezpośrednio powyżej danego okna wg kolejności nakładania Z $GW_OWNER | 4 | okno nadrzędne danego okna ===_WinAPI_GetForegroundWindow=== #include <WinAPI.au3> _WinAPI_GetForegroundWindow() Funkcja zwraca uchwyt do aktywnego okna, lub 0 gdy wystąpił błąd. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0, "_WinAPI_GetForegroundWindow", _ "Uchwyt do aktywnego okna: " & _WinAPI_GetForegroundWindow()) </syntaxhighlight> ===_WinAPI_GetParent=== #include <WinAPI.au3> _WinAPI_GetParent($hWnd) Funkcja zwraca uchwyt do okna nadrzędnego, lub 0 gdy wystąpił błąd (pełne informacje o błędzie zwraca funkcja _WinAPI_GetLastError()). '''$hWnd''' - uchwyt do okna ===_WinAPI_SetParent=== #include <WinAPI.au3> _WinAPI_SetParent ( $hWndChild, $hWndParent ) Funkcja zmienia okno nadrzędne dla podanego okna potomnego. Zwraca uchwyt do poprzedniego okna nadrzędnego, lub 0 gdy wystąpił błąd (pełne informacje o błędzie zwraca funkcja _WinAPI_GetLastError()). '''$hWndChild''' - uchwyt do okna potomnego. '''$hWndParent''' - uchwyt do nowego okna nadrzędnego, jeżeli =0 to nowym oknem nadrzędnym będzie pulpit. <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> ;tworzenie dwóch okien GUI $hGUI1 = GUICreate("GUI 1", 400, 400, 200, 100) $hGUI2 = GUICreate("GUI 2", 400, 400, 1200, 200) ;tworzenie okna potomnego w oknie GUI 1 $hChild = GUICreate("Okno potomne", 200, 200, 50, 50, BitOR($WS_CHILD, $WS_CAPTION), -1, $hGUI1) ;wyświetlenie okien GUISetState(@SW_SHOW, $hGUI1) GUISetState(@SW_SHOW, $hChild) GUISetState(@SW_SHOW, $hGUI2) MsgBox(64,"","Okno potomne do GUI 2") _WinAPI_SetParent($hChild, $hGUI2) ;zmiana okna nadrzędnego MsgBox(64,"","Okno potomne do GUI 1") _WinAPI_SetParent($hChild, $hGUI1) ;zmiana okna nadrzędnego Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_GetAncestor=== #include <WinAPI.au3> _WinAPI_GetAncestor($hWnd [, $iFlags = 1]) Funkcja zwraca uchwyt okna nadrzędnego, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, którego przodka chcemy uzyskać, jeżeli jest to uchwyt do pulpitu to funkcja zwróci 0 '''$iFlags''' - określa jakiego okna uchwyt chcemy uzyskać: WindowsConstants.au3 | | Opis --------------------------------------------------------------------------------------- $GA_PARENT | 1 | zwraca uchwyt do rodzica obiektu przekazanego jako argument, | | jeżeli pierwszym w kolejności "rodzicem" nie jest | | okno programu lecz inny obiekt, to zwrócony zostanie | | uchwyt do tego obiektu, a nie do okna programu --------------------------------------------------------------------------------------- $GA_ROOT | 2 | zwraca uchwyt do okna obiektu przekazanego jako argument, | | poprzez przejście przez kolejnych "rodziców" (parent) | | wskazanego obiektu, aż natrafi na okno --------------------------------------------------------------------------------------- $GA_ROOTOWNER | 3 | --------------------------------------------------------------------------------------- Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <WindowsConstants.au3> $hWnd = GUICreate("TEST") $hParent = _WinAPI_GetAncestor($hWnd, $GA_PARENT) MsgBox(0, "GetAncestor dla " & $hWnd, _ 'Parent:' & @TAB & @TAB & $hParent & @CRLF & _ 'Root:' & @tab & @tab & _WinAPI_GetAncestor($hWnd, $GA_ROOT) & @CRLF & _ 'Root Owner:' & @tab & _WinAPI_GetAncestor($hWnd, $GA_ROOTOWNER)) </syntaxhighlight> ===_WinAPI_GetWindowLong=== #include <WinAPI.au3> _WinAPI_GetWindowLong($hWnd, $iIndex) Funkcja zwraca informacje o określonym oknie. Jeżeli wystąpi błąd makro @error zwraca kod błędu. '''$hWnd''' - uchwyt do okna '''$iIndex''' - rodzaj zwracanej informacji: <Constants.au3> | | Opis ------------------------------------------------------------------------------------------------ $GWL_EXSTYLE |-20 | rozszerzony styl okna $GWL_HINSTANCE | -6 | uchwyt do instancji programu $GWL_HWNDPARENT | -8 | uchwyt do okna nadrzędnego (jeśli dane okno ma rodzica) $GWL_ID |-12 | identyfikator okna potomnego $GWL_STYLE |-16 | styl okna $GWL_USERDATA |-21 | 32-bitowe dane użytkownika powiązane z oknem. Takie dane są przeznaczone | | do użycia przez program, który utworzył okno. Na początku ta wartość =0. $GWL_WNDPROC | -4 | adres procedury okna ===_WinAPI_SetWindowLong=== #include <WinAPI.au3> _WinAPI_SetWindowLong($hWnd, $iIndex, $iValue) Funkcja ustawia parametry okna o określonym uchwycie. Zwraca poprzednią wartość ustawianego parametru, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna '''$iIndex''' - rodzaj ustawianej informacji (jak dla _WinAPI_GetWindowLong) Przykłąd: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <Constants.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> $hGui = GUICreate('_WinAPI_SetWindowLong', 250, 260) $iButton = GUICtrlCreateButton('Zmiana stylu okna', 10, 10, 120, 28) $iExStyle = $WS_EX_TOOLWINDOW GUISetState() Do Switch GUIGetMsg() Case $iButton $iOldExStyle = _WinAPI_SetWindowLong($hGui, $GWL_EXSTYLE, $iExStyle) $iExStyle = $iOldExStyle GUISetState(@SW_HIDE) GUISetState(@SW_SHOW) Case $GUI_EVENT_CLOSE Exit EndSwitch Until 0 </syntaxhighlight> ===_WinAPI_GetWindowText=== #include <WinAPI.au3> _WinAPI_GetWindowText($hWnd) Funkcja zwraca tytuł z belki okna lub z kontrolki o podanym uchwycie. Jeżeli wystąpił błąd ustawiane jest makro @error. '''$hWnd''' - uchwyt do okna (kontrolki) Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hWin = WinGetHandle("[ACTIVE]") $hGui = GUICreate('Okno testowe') $iButton = GUICtrlCreateButton('Przycisk', 10, 10) GUISetState() MsgBox(0, 'Wyniki:', _ _WinAPI_GetWindowText($hWin) &@CRLF& _ _WinAPI_GetWindowText($hGui) &@CRLF& _ _WinAPI_GetWindowText(GUICtrlGetHandle($iButton))) </syntaxhighlight> ===_WinAPI_SetWindowText=== #include <WinAPI.au3> _WinAPI_SetWindowText($hWnd, $sText) Funkcja wstawia tytuł na belce okna lub kontrolce o podanym uchwycie. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna (kontrolki) '''$sText''' - wstawiany tekst tytułu okna lub kontrolki Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GUIConstantsEx.au3> $hGui = GUICreate('GUI testowy', 350, 260) $iButton = GUICtrlCreateButton('Przycisk', 10, 10, 160, 28) $hButton = GUICtrlGetHandle(-1) GUISetState() Do Switch GUIGetMsg() Case $iButton If _WinAPI_GetWindowText($hButton) = "Przycisk" Then _WinAPI_SetWindowText($hButton, "Klawisz") Else _WinAPI_SetWindowText($hButton, "Przycisk") EndIf $txt = _WinAPI_GetWindowText($hGui) & "!" _WinAPI_SetWindowText($hGui, $txt) Case $GUI_EVENT_CLOSE Exit EndSwitch Until False </syntaxhighlight> ===_WinAPI_GetClassName=== #include <WinAPI.au3> _WinAPI_GetClassName($hWnd) Funkcja zwraca nazwę klasy, do której należy okno. Jeżeli wystąpi błąd ustawiane jest makro @error. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hDesktop = _WinAPI_GetDesktopWindow() ;uchwyt do desktopu MsgBox(0, "Klasa okna desktopu", 'ClassName = "' & _WinAPI_GetClassName($hDesktop) & '"') $hwnd = GUICreate("test") ;uchwyt do okna skryptu $iButton = GUICtrlCreateButton('TEST', 10, 10, 120, 28) MsgBox(0, "Klasa okna skryptu", 'ClassName = "' & _WinAPI_GetClassName($hwnd) & '"') </syntaxhighlight> ===_WinAPI_SetWindowPos=== #include <WinAPI.au3> _WinAPI_SetWindowPos($hWnd, $hAfter, $iX, $iY, $iCX, $iCY, $iFlags) Funkcja zmienia rozmiar, położenie i Z-kolejność okna dziecka, pop-up, lub okna najwyższego poziomu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna. '''$hAfter''' - uchwyt do okna poprzedzającego dane okno w osi Z (znajdującego się bezpośrednio nad nim), lub jedna z poniższych wartości: Wg Constants.au3 | | Opis --------------------------------------------------------------------------------------------------------- $HWND_BOTTOM | 1 | Umieszcza okno na spodzie Z rzędu. --------------------------------------------------------------------------------------------------------- $HWND_NOTOPMOST | -2 | Umieszcza okno poniżej wszystkich okien najwyższego poziomu. Ustawienie tej | | flagi niczego nie zmienia, jeśli okno nie jest oknem najwyższego poziomu. --------------------------------------------------------------------------------------------------------- $HWND_TOP | 0 | Umieszcza okno na wierzchu Z rzędu. --------------------------------------------------------------------------------------------------------- $HWND_TOPMOST | -1 | Umieszcza okno powyżej wszystkich okien, które nie są oknami najwyższego poziomu. | | Okno utrzymuje swój stan okna najwyższego poziomu, nawet gdy jest dezaktywowane. --------------------------------------------------------------------------------------------------------- '''$iX''' i '''$iY''' - nowe współrzędne lewego górnego narożnika okna. '''$iCX''' i '''$iCY''' - nowa szerokość i wysokość okna. '''$iFlags''' - flaga: Wg Constants.au3 | Wartość| Opis ------------------------------------------------------------------------------------------------------------- $SWP_DRAWFRAME | 0x0020 | Rysuje ramkę wokół okna. ------------------------------------------------------------------------------------------------------------- $SWP_FRAMECHANGED | 0x0020 | Zmienia nowe style ramki używając funkcji _SetWindowLong. Wysyła komunikat | | WM_NCCALCSIZE do okna, nawet jeśli jego rozmiar nie zostanie zmieniony. | | Jeśli ta flaga nie jest ustawiona, komunikat WM_NCCALCSIZE jest wysyłany | | tylko podczas zmiany rozmiaru okna. ------------------------------------------------------------------------------------------------------------- $SWP_HIDEWINDOW | 0x0080 | Ukrywa okno. ------------------------------------------------------------------------------------------------------------- $SWP_NOACTIVATE | 0x0010 | Nie pozwala na aktywację okna. ------------------------------------------------------------------------------------------------------------- $SWP_NOCOPYBITS | 0x0100 | Nie kopiuje zawartości obszaru klienta. Jeśli ta flaga nie jest ustawiona, | | poprawna treść obszaru klienta jest zapisywana i kopiowana z powrotem | | do obszaru klienta po zmianie pozycji lub rozmiaru okna. ------------------------------------------------------------------------------------------------------------- $SWP_NOMOVE | 0x0002 | Zachowuje obecną pozycję (ignoruje wartości argumentów $iX i $iY). ------------------------------------------------------------------------------------------------------------- $SWP_NOOWNERZORDER | 0x0200 | Nie zmienia pozycji okna w osi Z. $SWP_NOREPOSITION | | ------------------------------------------------------------------------------------------------------------- $SWP_NOREDRAW | 0x0008 | Nie odrysowuje okna. Jeśli ta flaga jest ustawiona, okno nie jest odmalowywane. | | Kiedy ta flaga jest ustawiona, program musi jawnie odświeżyć lub odrysować | | określone części danego okna oraz okna nadrzędnego. ------------------------------------------------------------------------------------------------------------- $SWP_NOSENDCHANGING| 0x0400 | Zapobiega przechwytywaniu komunikatu WM_WINDOWPOSCHANGING przez dane okno. ------------------------------------------------------------------------------------------------------------- $SWP_NOSIZE | 0x0001 | Zachowuje obecny rozmiar okna (ignoruje argumenty $iCX i $iCY). ------------------------------------------------------------------------------------------------------------- $SWP_NOZORDER | 0x0004 | Zachowuje obecną kolejność elementów w osi Z (ignoruje argument $hAfter). ------------------------------------------------------------------------------------------------------------- $SWP_SHOWWINDOW | 0x0040 | Wyświetla dane okno. ------------------------------------------------------------------------------------------------------------- Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <Constants.au3> $hGui2 = GUICreate('Okno 1', 550, 350, 500, 200) GUISetState() Sleep(1000) $hGui1 = GUICreate('Okno 2', 350, 200, 100, 100) $iButton = GUICtrlCreateButton('TEST', 10, 10, 120, 28) GUISetState() Sleep(1000) ;przesuwanie okna (okno 1 za oknem 2) $a = WinGetPos($hGui1) For $i=0 To 300 Step 0.1 _WinAPI_SetWindowPos ($hGui1, $hGui2, $a[1]+$i, $a[1]+$i/2, $a[2], $a[3], $SWP_DRAWFRAME) Next ;powiększanie okna (okno 1 przed oknem 2) $a = WinGetPos($hGui1) For $i=0 To 500 Step 0.1 _WinAPI_SetWindowPos ($hGui1, $HWND_TOP, $a[0], $a[1], $a[2]+$i, $a[3]+$i, $SWP_DRAWFRAME) Next ;zmniejszanie okna bez zmiany położenia jego środka (okno 1 za oknem 2) $a = WinGetPos($hGui1) For $i=0 To 350 Step 0.1 _WinAPI_SetWindowPos ($hGui1, $hGui2, $a[0]+$i, $a[1]+$i, $a[2]-2*$i, $a[3]-2*$i, $SWP_DRAWFRAME) Next </syntaxhighlight> ===_WinAPI_WindowFromPoint=== #Include <WinAPI.au3> _WinAPI_WindowFromPoint (ByRef $tPoint) Funkcja zwraca uchwyt do okna znajdującego się w punkcie o podanych współrzędnych, lub 0 gdy wystąpił błąd. '''$tPoint''' - struktura $tagPOINT zawierająca współrzędne punktu '''UWAGA:''' Funkcja nie zwraca uchwytu do okien ukrytych lub wyłączonych, nawet gdy punkt znajduje się wewnątrz okna. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> HotKeySet("{ESC}", "Close") ;ESC - koniec programu $tStruct = DllStructCreate($tagPOINT) ;tworzenie struktury Do ToolTip("") ;odczyt współrzednych kursora i zapis do struktury DllStructSetData($tStruct, "x", MouseGetPos(0)) DllStructSetData($tStruct, "y", MouseGetPos(1)) ;odczyt uchwytu do okna pod kursorem $hWnd = _WinAPI_WindowFromPoint($tStruct) ToolTip($hWnd) ;wyświetlenie uchwytu do okna Sleep(100) Until 0 </syntaxhighlight> ===_WinAPI_GetFocus=== #include <WinAPI.au3> _WinAPI_GetFocus() Funkcja zwraca uchwyt do okna (kontrolki) z ustawionym focus'em, lub 0 gdy wystąpił błąd. '''UWAGA:''' '''Focus''' (z ang. skupienie) jest to jeden ze stanów elementu graficznego interfejsu użytkownika. Wszelkie zdarzenia związane z naciskaniem klawiszy przez użytkownika zostaną skierowane właśnie do tego elementu (np.kontrolki). Zazwyczaj w oknach można przenosić focus na następny element za pomocą klawisza TAB (i SHIFT-TAB). Focus jest najczęściej odpowiednio odwzorowany w wyglądzie elementu, np. przycisk dostaje dodatkowe obramowanie, w polu edycyjnym pojawia się migający kursor, itp. ===_WinAPI_SetFocus=== #include <WinAPI.au3> _WinAPI_SetFocus($hWnd) Funkcja ustawia focus dla danego okna (kontrolki). Zwraca uchwyt do okna (kontrolki), które poprzednio miało ustawiony focus, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna (kontrolki), dla której ustawiamy focus Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GUIConstantsEx.au3> $hGui = GUICreate("Focus - okno testowe", 370, 80, -1, 300) $hInput1 = GUICtrlCreateInput("Pole 1", 12, 28, 121, 21) $hInput2 = GUICtrlCreateInput("Pole 2", 232, 28, 121, 21) $hButton1 = GUICtrlCreateButton("<", 148, 24, 27, 25) $hButton2 = GUICtrlCreateButton(">", 184, 24, 27, 25) GUISetState(@SW_SHOW) Sleep(2000) $hFocus = _WinAPI_GetFocus() ;przycisk z focusem MsgBox(0, "Focus na kontrolce:", WinGetTitle($hFocus)) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $hButton1 _WinAPI_SetFocus(GUICtrlGetHandle($hInput1)) Case $hButton2 _WinAPI_SetFocus(GUICtrlGetHandle($hInput2)) EndSwitch WEnd </syntaxhighlight> ===_WinAPI_FlashWindow=== #include <WinAPI.au3> _WinAPI_FlashWindow ( $hWnd [, $bInvert = True] ) Funkcja powoduje pojedyncze mrugnięcie (flash) okna i przycisku na pasku zadań. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, które ma mrugnąć. Okno może być otwarte lub zminimalizowane. '''$bInvert''' - określa sposób zadziałania: True - powoduje mrugnięcie okna i przycisku na pasku zadań, jeżeli okno jest zminimalizowane mruga przycisk i zmienia barwę False - okno i przycisk nie mrugają, jeżeli okno jest zminimalizowane przycisk zmienia barwę bez uprzedniego mrugnięcia Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hWnd = GUICreate("_WinAPI_FlashWindow", 200, 200) $idBtnFlash = GUICtrlCreateButton("Mrugnięcie", 50, 85, 100, 30) GUISetState(@SW_SHOW) While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE Exit Case $iMsg = $idBtnFlash Sleep(2000) _WinAPI_FlashWindow($hWnd) EndSelect WEnd </syntaxhighlight> ===_WinAPI_FlashWindowEx=== #include <WinAPI.au3> _WinAPI_FlashWindowEx ( $hWnd [, $iFlags = 3 [, $iCount = 3 [, $iTimeout = 0]]] ) Funkcja powoduje mrugnie (flash) okna i przycisku na pasku zadań. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. W stosunku do _WinAPI_FlashWindow posiada większe możliwości konfigurowania. '''$hWnd''' - uchwyt do okna, które ma mrugać. Okno może być otwarte lub zminimalizowane. '''$iFlags''' - tryb działania: 0 - mruganie wyłączone, system przywraca okno do stanu pierwotnego 1 - mruganie okna 2 - mruganie przycisku na pasku zadań 4 - mruganie nieprzerwane, aż do zatrzymania 8 - mruga nieprzerwanie, aż okno wyjdzie na pierwszy plan '''$iCount''' - ilość mrugnięć okna '''$iTimeout''' - czas mrugnięcia w milisekundach, 0 - domyślny czas mrugnięcia kursora Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hWnd = GUICreate("_WinAPI_FlashWindowEx", 200, 200) $idBtnFlash = GUICtrlCreateButton("Mrugnięcia", 50, 85, 100, 30) GUISetState(@SW_SHOW) While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE Exit Case $iMsg = $idBtnFlash Sleep(1000) _WinAPI_FlashWindowEx($hWnd, 3, 6) EndSelect WEnd </syntaxhighlight> ==Mysz i klawiatura== ===_WinAPI_GetAsyncKeyState=== #include <WinAPI.au3> _WinAPI_GetAsyncKeyState ( $iKey ) Funkcja sprawdza czy został wciśnięty klawisz o podanym kodzie. Zwraca liczbę dwu bajtową w której: - ustawiony jest najstarszy bit jeżeli dany klawisz jest wciśnięty w momencie wywołania funkcji (wartość -32767) - ustawiony jest najmłodszy bit jeżeli dany klawisz był wciśnięty po poprzednim wywołaniu funkcji _WinAPI_GetAsyncKeyState (wartość 1, na tym rezultacie nie można jednak w 100% polegać) - ma wartość 0 gdy klawisz nie był wciśnięty, lub gdy wystąpił błąd '''$iKey''' - kod klawisza ([http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx MSDN Library - Virtual-Key Codes] '''UWAGA:''' 1. Funkcja rozpoznaje stan klawiszy klawiatury i myszy. 2. Funkcja rozpoznaje tylko klawisze fizyczne, a nie funkcjonalne. Przykładowo lewy klawisz myszy to konstrukcyjnie klawisz z lewej strony urządzenie, a nie klawisz mający funkcję lewego klawisza (w systemie operacyjnym osoba leworęczna można przypisać funkcję lewego klawisza do fizycznego klawisza prawego). Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $iKey = 0x1 ;lewy przycisk myszy Sleep(2000) MsgBox(0, "", _WinAPI_GetAsyncKeyState($iKey)) ;wyświetli -32767 gdy lewy przycisk myszy był wciśnięty w momencie ;wywołania funkcji, 1 gdy wciśniemy na krótko klawisz przed wywołaniem ;funkcji, 0 gdy w ogóle nie wciśniemy lewego klawisza myszy </syntaxhighlight> ===_WinAPI_Mouse_Event=== #include <WinAPI.au3> _WinAPI_Mouse_Event($iFlags [, $iX = 0 [, $iY = 0 [, $iData = 0 [, $iExtraInfo = 0]]]]) Funkcja symuluje ruchy myszy, wciskanie jej przycisków i obracanie kółkiem. Nie zwraca żadnej wartości. '''$iFlags''' - flaga określająca rodzaj symulowanej akcji myszy, może być każdą rozsądną kombinacją następujących wartości: wg Constants.au3 | | opis ------------------------------------------------------------------------------------ $MOUSEEVENTF_ABSOLUTE | 0x8000 | $iX i $iY są współrzędnymi absolutnymi kursora | | w przeciwnym razie są przesunięciami w danej osi ------------------------------------------------------------------------------------ $MOUSEEVENTF_MOVE | 0x0001 | przesunięcie myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_LEFTDOWN | 0x0002 | wciśnięty lewy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_LEFTUP | 0x0004 | zwolniony lewy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_RIGHTDOWN | 0x0008 | wciśnięty prawy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_RIGHTUP | 0x0010 | zwolniony prawy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_MIDDLEDOWN | 0x0020 | wciśnięty środkowy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_MIDDLEUP | 0x0040 | zwolniony środkowy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_WHEEL | 0x0800 | obrócone kółko myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_XDOWN | 0x0080 | wciśnięty X klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_XUP | 0x0100 | zwolniony X klawisz myszy '''$iX''' i '''$iY''' - nowe współrzędne absolutne kursora myszy ($MOUSEEVENTF_ABSOLUTE) lub przesunięcie kursora w odpowiedniej osi '''$iData''' - jeżeli ustawione $MOUSEEVENTF_WHEEL to jest to wielkość obrotu kółka myszy, wartość dodatnia - obrót do przodu, wartość ujemna - obrót do tyłu, jednostkowy obrót kółka to 120, jeżeli $MOUSEEVENTF_WHEEL nie jest ustawione to powinno być $iData = 0 '''$iExtraInfo''' - 32 bitowa wartość związana z myszą '''UWAGA:''' Współrzędne $iX i$iY odnoszą się do wirtualnego ekranu o wymiarach 65535x65535. Aby przeliczyć rzeczywiste współrzędne na wirtualne należy przyjąć: $iX=$x*65535/@DesktopWidth i $y=$y*65535/@DesktopHeight (gdzie $x i $y to rzeczywiste współrzędne ekranowe). Ta sama zasada dotyczy przesunięć przy nie ustawionym $MOUSEEVENTF_ABSOLUTE. Przykład: <syntaxhighlight lang="autoit"> #include <Constants.au3> #include <WinAPI.au3> Local $x = 500, $y = 400 ;przeliczenie współrzędnych na wirtualny ekran $iX = $x * 65535 / @DesktopWidth $iY = $y * 65535 / @DesktopHeight ;przesunięcie myszy _WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE), $iX, $iY) _WinAPI_Mouse_Event($MOUSEEVENTF_RIGHTDOWN) ;wciśnięcie prawego przycisku _WinAPI_Mouse_Event($MOUSEEVENTF_RIGHTUP) ;zwolnienie prawego przycisku </syntaxhighlight> ===_WinAPI_GetMousePos=== #include <WinAPI.au3> _WinAPI_GetMousePos([$fToClient = False [, $hWnd = 0]]) Funkcja zwraca bieżącą pozycję kursora myszy w postaci struktury $tagPOINT. Jeżeli wystąpił błąd ustawiane jest makro @error. '''$fToClient''' - False - współrzędne absolutne ekranu, True - współrzędne przestrzeni roboczej okna '''$hWnd''' - uchwyt do okna, tylko dla $fToClient = True Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hWnd = GUICreate("Okno testowe") GUISetState() $tPoint1 = _WinAPI_GetMousePos() $tPoint2 = _WinAPI_GetMousePos(True, $hWnd) MsgBox(0, "Położenie kursora myszy", _ "We współrzędnych absolutnych:" & @LF & _ "X = " & DllStructGetData($tPoint1, "X") & @LF & _ "y = " & DllStructGetData($tPoint1, "Y") & @LF & @LF & _ "We współrzędnych okna:" & @lf & _ "x = " & DllStructGetData($tPoint2, "X") & @lf & _ "y = " & DllStructGetData($tPoint2, "Y")) </syntaxhighlight> ===_WinAPI_GetMousePosX=== #Include <WinAPI.au3> _WinAPI_GetMousePosX ([$fToClient = False [, $hWnd = 0]]) Funkcja zwraca współrzędną poziomą kursora myszy. Jeżeli wystąpił błąd ustawiane jest makro @error. '''$fToClient''' - False - współrzędne absolutne ekranu, True - współrzędne przestrzeni roboczej okna '''$hWnd''' - uchwyt do okna, tylko dla $fToClient = True ===_WinAPI_GetMousePosY=== #Include <WinAPI.au3> _WinAPI_GetMousePosY ([$fToClient = False [, $hWnd = 0]]) Funkcja zwraca współrzędną poziomą kursora myszy. Jeżeli wystąpił błąd ustawiane jest makro @error. '''$fToClient''' - False - współrzędne absolutne ekranu, True - współrzędne przestrzeni roboczej okna '''$hWnd''' - uchwyt do okna, tylko dla $fToClient = True Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hWnd = GUICreate("Okno testowe") GUISetState() $x1 = _WinAPI_GetMousePosX() $x2 = _WinAPI_GetMousePosX(True, $hWnd) $y1 = _WinAPI_GetMousePosY() $y2 = _WinAPI_GetMousePosY(True, $hWnd) MsgBox(0, "Położenie kursora myszy", _ "We współrzędnych absolutnych:" & @LF & _ "X = " & $x1 & @LF & _ "y = " & $y1 & @LF & @LF & _ "We współrzędnych okna:" & @lf & _ "x = " & $x2 & @lf & _ "y = " & $y2) </syntaxhighlight> ===_WinAPI_EnableWindow=== #include <WinAPI.au3> _WinAPI_EnableWindow ( $hWnd [, $bEnable = True] ) Funkcja blokuje, lub odblokowuje dostęp myszki i klawiatury do określonego okna lub kontrolki. Zwraca True gdy okno (kontrolka) było poprzednio zablokowane, lub Felse gdy było odblokowane. ''$hWnd''' - uchwyt do okna lub kontrolki '''$bEnable''' - rodzaj operacji, True - odblokowanie, False - blokowanie Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("_WinAPI_EnableWindow", 400, 300) $hLab = GUICtrlCreateLabel("", 70, 80,220,70) GUISetState() _WinAPI_EnableWindow ( $hGUI, False) ;zablokowanie dostępu do okna GUICtrlSetData($hLab,"Kursor zablokowany na 5 sekund") Sleep(5000) _WinAPI_EnableWindow ( $hGUI, True) ;odblokowanie dostępu do okna GUICtrlSetData($hLab,"Kursor odblokowany") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_SetCapture=== #include <WinAPI.au3> _WinAPI_SetCapture($hWnd) Funkcja przechwytuje kursor myszki w danym oknie (kursor jest nieaktywny, ikona klepsydry). Zwraca uchwyt do okna, w którym poprzednio był przechwycony kursor, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, w którym zostanie przechwycony kursor ===_WinAPI_ReleaseCapture=== #include <WinAPI.au3> _WinAPI_ReleaseCapture() Funkcja zwalnia przechwytywanie kursora myszki. Zwraca True gdy sukces, lub False gdy wystąpił błąd. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("_WinAPI_SetCapture", 400, 300) $hLab = GUICtrlCreateLabel("KURSOR ZABLOKOWANY - Naciśnij ESC", 70, 80,220,70) GUISetState() Do _WinAPI_SetCapture($hGUI) ;przechwycenie kursora Until GUIGetMsg() = $GUI_EVENT_CLOSE _WinAPI_ReleaseCapture() ;zwolnienie kursora GUICtrlSetData($hLab,"KURSOR ODBLOKOWANY") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ==Pliki i programy== ===_WinAPI_CreateFile=== #include <WinAPI.au3> _WinAPI_CreateFile($sFileName, $iCreation [, $iAccess = 4 [, $iShare = 0 [, $iAttributes = 0 [, $pSecurity = 0]]]]) Funkcja tworzy lub otwiera plik o podanej nazwie. Zwraca otwarty uchwyt pliku, lub 0 gdy wystąpił błąd. '''$sFileName''' - nazwa pliku do utworzenia lub otwarcia '''$iCreation''' - działania odnoszące się do plików, które istnieją lub nie istnieją: 0 - tworzy nowy plik, funkcja nie działa, jeśli plik istnieje 1 - tworzy nowy plik, jeśli plik istnieje, to zostanie nadpisany 2 - otwiera plik, funkcja nie działa, jeśli plik nie istnieje 3 - otwiera plik, jeśli plik nie istnieje, funkcja tworzy plik 4 - otwiera plik i czyści go do rozmiaru 0 bajtów, funkcja nie działa, jeśli plik nie istnieje '''$iAccess''' - dostęp do obiektu: 1 - wykonanie 2 - odczytanie 4 - zapisanie '''$iShare''' - trybu udostępniania obiektu: 1 - usuwanie 2 - czytanie 4 - zapisanie '''$iAttributes''' - atrybuty pliku: 1 - plik archiwalny 2 - Plik ukryty 4 - plik tylko do odczytu 8 - jest częścią lub jest wykorzystywany wyłącznie przez system operacyjny '''$pSecurity''' - wskaźnik do struktury $tagSECURITY_ATTRIBUTES, która ustala, czy zwrócony uchwyt może być dziedziczony przez procesy potomne, jeśli $pSecurity = 0, uchwyt nie może być dziedziczony. ===_WinAPI_ReadFile=== #include <WinAPI.au3> _WinAPI_ReadFile($hFile, $pBuffer, $iToRead, ByRef $iRead [, $pOverlapped = 0]) Funkcja odczytuje dane z pliku. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$sFileName''' - nazwa pliku do utworzenia lub otwarcia '''$pBuffer''' - wskaźnik do bufora do którego będą wczytywane dane '''$iToRead''' - maksymalna liczba bajtów do odczytu '''$iRead''' - liczba odczytanych bajtów '''$pOverlapped''' - wskaźnik do $ tagOVERLAPPED ===_WinAPI_WriteFile=== #include <WinAPI.au3> _WinAPI_WriteFile($hFile, $pBuffer, $iToWrite, ByRef $iWritten [, $pOverlapped = 0]) Funkcja zapisuje w pliku, w położeniu określonym przez wskaźnik. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hFile''' - uchwyt do pliku '''$pBuffer''' - wskaźnik do bufora zawierającego dane do zapisu '''$iToWrite''' - liczba bajtów do zapisu '''$iWritten''' - liczba zapisanych bajtów '''$pOverlapped''' - wskaźnik do $ tagOVERLAPPED ===_WinAPI_SetFilePointer=== #include <WinAPI.au3> _WinAPI_SetFilePointer($hFile, $iPos [, $iMethod = 0]) Funkcja przesuwa wskaźnik pliku o podaną ilość pozycji. Zwraca nowe położenie wskaźnika. Jeżeli wystąpił błąd makro @error <> 0. Wskaźnik pliku to pozycja, od której rozpoczyna się zapis lub odczyt danych w pliku. '''$hFile''' - uchwyt do pliku '''$iPos''' - ilość bajtów, o które zostanie przesunięty wskaźnik pliku, wartość dodatnia oznacza przesunięcie w kierunku końca pliku, ujemna w kierunku początku (maksymalna wartość 2^32) '''$iMethod''' - początkowa pozycja wskaźnika, może to być jedna z następujących wartości: 0 - początek pliku (domyślnie) 1 - aktualne położenie wskaźnika 2 - koniec pliku '''UWAGA:''' Funkcja może być użyta do odczytu aktualnego położenia wskaźnika. W takim przypadku należy podać $iPos = 0 i $iMethod = 1. ===_WinAPI_SetEndOfFile=== #include <WinAPI.au3> _WinAPI_SetEndOfFile($hFile) Funkcja ustawia fizyczny rozmiar podanego pliku w bieżącej pozycji wskaźnika pliku. Zwraca True gdy sukces, lub False gdy wystąpił błąd (makro @extended zawiera kod błędu, taki jak zwracany przez _WinAPI_GetLastError). '''$hFile''' - uchwyt do pliku '''UWAGA:''' Funkcja ta może być użyta do zmniejszenia lub zwiększenia plik, a więc do ustawienia jego rozmiaru. Jeśli plik jest zwiększany zawartość pomiędzy starym i nowym końcem pliku nie jest zdefiniowana. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $nBytes, $sFile = 'test.txt' $sTxt1 = 'abcdefghijklmnopqrstuvwxyz' & @LF & '1234567890' $len1 = StringLen($sTxt1) $tBuffer = DllStructCreate("char[" & $len1 & "]") DllStructSetData($tBuffer, 1, $sTxt1) ;tworzenie struktury z danymi ;tworzenie pliku tekstowego $hFile = _WinAPI_CreateFile($sFile, 1) ;utworzenie pliku _WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), $len1, $nBytes) _WinAPI_CloseHandle($hFile) ;zamknięcie pliku MsgBox(0,"Test 1", FileRead($sFile)) ;odczyt 6 znaków z pliku, poczynając od poz. 3 $tBuffer = DllStructCreate("char[6]") $hFile = _WinAPI_CreateFile($sFile, 2, 2) ;otwarcie pliku do odczytu _WinAPI_SetFilePointer($hFile, 3) ;wskaźnik na poz. 3 _WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes) ;odczyt 6 bajtów _WinAPI_CloseHandle($hFile) MsgBox(0,"Test 2", DllStructGetData($tBuffer, 1)) ;wstawienie do pliku nowych danych 6 znaków od poz. 30 $sTxt2 = "#####" $len2 = StringLen($sTxt2) $tBuffer = DllStructCreate("char[" & $len2 & "]") DllStructSetData($tBuffer, 1, $sTxt2) $hFile = _WinAPI_CreateFile($sFile, 2, 4) _WinAPI_SetFilePointer($hFile, 28) _WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), $len2, $nBytes) _WinAPI_CloseHandle($hFile) MsgBox(0,"Test 3", FileRead($sFile)) ;skrócenie pliku na poz. 29 $hFile = _WinAPI_CreateFile($sFile, 2, 4) _WinAPI_SetFilePointer($hFile, 29) ;wskaźnik na poz. 29 _WinAPI_SetEndOfFile($hFile) ;ustawienie końca pliku _WinAPI_CloseHandle($hFile) MsgBox(0,"Test 4", FileRead($sFile)) </syntaxhighlight> ===_WinAPI_GetFileSizeEx=== #include <WinAPI.au3> _WinAPI_GetFileSizeEx($hFile) Funkcja zwraca wielkość pliku. Jeżeli wystąpi błąd ustawiane jest makro @error. '''$hFile''' - uchwyt do pliku ===_WinAPI_GetOpenFileName=== #include <WinAPI.au3> _WinAPI_GetOpenFileName ( [$sTitle = "" [, $sFilter = "All files ( *.* ) " [, $sInitalDir = "." [, $sDefaultFile = "" [, $sDefaultExt = "" [, $iFilterIndex = 1 [, $iFlags = 0 [, $iFlagsEx = 0 [, $hwndOwner = 0]]]]]]]]] ) Funkcja wywołuje systemowy selektor do otwarcia plików. Zwraca jednowymiarową tablicę z danymi wybranych plików. Jeżeli wystąpi błąd (np. nie wybrano żadnego pliku), zwracana jest jednoelementowa tablica zawierająca wartość 0. Zawartość zwracanej tablicy: $Tablica[0] - liczba łańcuchów tekstowych, jest równa ilości wybranych plików + 1 = n $Tablica[1] - ścieżka dostępu do wybranego pliku (plików) $Tablica[2] - nazwa wybranego pliku ... $Tablica[n] - nazwa wybranego pliku '''$sTitle''' - nazwa okna selektora '''$sFilter''' - zestaw filtrów określający jakie pliki będą wyświetlane. Każdy składa się z dwóch elementów. Pierwszym elementem to jego opis, który będzie wyświetlany w oknie selektora, np.: "Pliki tekstowe". Drugi element filtru opisuje maskę ​​pliku, np.: "*.txt". Aby opisać zestaw masek w jednym filtrze, należy rozdzielić je znakiem średnika (;), np.: "(*.TXT;*.DOC;*.BAK)". Maska może być kombinacją zwykłych znaków i symboli wieloznacznych (* - dowolna ilość dowolnych znaków, ? - jeden dowolny znak), np.: "a*.???" oznacza dowolną nazwę zaczynająca się na a, i dowolne 3-literowe rozszerzenie nazwy. Nie należy używać spacji w masce. Filtry można łączyć w zestawy rozdzielając poszczególne składniki znakiem pionowej kreski (|). Pełny zestaw filtrów może wyglądać np. tak: '''"Pliki Graficzne (*.bmp;*.jpg;*.gif) | Pliki tekstowe (*.txt) | Pliki audio (*.MP3;*.Wav;*.WMA)"''' '''$sInitalDir''' - początkowy folder, kropka (".") oznacza folder bieżący uruchomionego skryptu (wartość domyślna). '''$sDefaultFile''' - wyjściowa nazwa pliku, która będzie wyświetlona w polu "Nazwa pliku:", domyślnie jest string pusty czyli brak nazwy. '''$sDefaultExt''' - wyjściowe rozszerzenie nazwy pliku, domyślnie jest string pusty czyli brak wyjściowego rozszerzenia. '''$iFilterIndex''' - numer filtru, który będzie aktywny po wywołaniu selektora '''$iFlags''' - flaga, pełny opis w dokumentacji AutoIt'a, jak dla struktury $tagOPENFILENAME, np.: $OFN_ALLOWMULTISELECT = 0x80000 - możliwość wybrania większej ilości plików, $OFN_EXPLORER = 0x200 - selektor w nowym stylu. '''$iFlagsEx''' - flaga rozszerzona, pełny opis w dokumentacji AutoIt'a, jak dla struktury $tagOPENFILENAME. '''$hwndOwner''' - uchwyt do okna nadrzędnego Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $aFile = _WinAPI_GetOpenFileName( "Test selektora plików", _ "Pliki grafiki(*.jpg;*.bmp;*.gif) | Skrypt(*.au3)", _ "", "", "", 1, BitOR($OFN_ALLOWMULTISELECT, $OFN_EXPLORER)) $iFile = (UBound($aFile)>1 ? $aFile[0]-1 : 0) $txt = "Ilość wybranych plików: " & $iFile If $iFile Then $txt &= @LF & "Ścieżka do plików: " & $aFile[1] For $i = 1 To $iFile $txt &= @LF & "Nazwa pliku " & $i & ": "& $aFile[$i + 1] Next EndIf MsgBox(0, "Wybrane pliki", $txt) </syntaxhighlight> ===_WinAPI_GetSaveFileName=== #include <WinAPI.au3> _WinAPI_GetSaveFileName ( [$sTitle = "" [, $sFilter = "All files ( *.* ) " [, $sInitalDir = "." [, $sDefaultFile = "" [, $sDefaultExt = "" [, $iFilterIndex = 1 [, $iFlags = 0 [, $iFlagsEx = 0 [, $hwndOwner = 0]]]]]]]]] ) Funkcja wywołuje systemowy selektor do zapisywania pliku. Zwraca jednowymiarową tablicę z danymi wybranego pliku. Jeżeli wystąpi błąd (np. nie wybrano żadnego pliku), zwracana jest jednoelementowa tablica zawierająca wartość 0. Zawartość zwracanej tablicy: $Tablica[0] - liczba łańcuchów tekstowych, 2 jeśli wybrano plik $Tablica[1] - ścieżka dostępu do wybranego pliku $Tablica[2] - nazwa wybranego pliku Wszystkie parametry jak dla '''_WinAPI_GetOpenFileName'''. ===_WinAPI_FlushFileBuffers=== #include <WinAPI.au3> _WinAPI_FlushFileBuffers($hFile) Funkcja powoduje zapisanie buforowanych danych do pliku. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hFile''' - uchwyt do pliku ===_WinAPI_FindExecutable=== #include <WinAPI.au3> _WinAPI_FindExecutable($sFileName [, $sDirectory = ""]) Funkcja zwraca ścieżkę do programu (pliku wykonywalnego) skojarzonego z określonym plikiem, lub pusty string gdy wystąpił błąd (w @error ustawiony jest kod błędu). '''$sFileName''' - pełna ścieżka do istniejącego pliku '''$sDirectory''' - ścieżka do domyślnego katalogu Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $sPath = FileOpenDialog("Wybierz plik", @mydocumentsdir, "Wszystkie (*.*)", 1 + 2) If Not @error Then MsgBox(0, "Aplikacja skojarzone z plikiem", "Plik: " & @LF & $sPath & @LF & @LF & _ "Skojarzona aplikacja: " & @lf & _WinAPI_FindExecutable($sPath)) EndIf </syntaxhighlight> ===_WinAPI_GetModuleHandle=== #include <WinAPI.au3> _WinAPI_GetModuleHandle ( $sModuleName ) Funkcja zwraca uchwyt dla określonego modułu. Moduł musi być ładowany przez proces wywołujący. Gdy wystąpił błąd zwracane jest 0. '''$sModuleName''' - nazwa załadowanego modułu (*.dll lub *.exe). Jeżeli pominiemy rozszerzenie to domyślnie zostanie przyjęte jako .dll. Jeżeli moduł nie posiada rozszerzenia, to nazwę należy zakończyć kropką (np. moj_modul.). Wartość NULL zamiast nazwy oznacza, że zostanie zwrócony uchwyt do własnego procesu (skryptu). ==Powiadomienia i komunikaty== ===_WinAPI_MessageBeep=== #include <WinAPI.au3> _WinAPI_MessageBeep([$iType = 1]) Funkcja odtwarza określony dźwięk systemowy. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$iType''' - kod dźwięku 0 - normalny sygnał 1 - OK 2 - błąd 3 - pytanie 4 - wykrzyknik 5 - gwiazdka Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0,"Test dźwiękowy", "0 - Normalny dźwięk") _WinAPI_MessageBeep(0) MsgBox(0,"Test dźwiękowy", "1 - OK") _WinAPI_MessageBeep(1) MsgBox(0,"Test dźwiękowy", "2 - błąd") _WinAPI_MessageBeep(2) MsgBox(0,"Test dźwiękowy", "3 - pytanie") _WinAPI_MessageBeep(3) MsgBox(0,"Test dźwiękowy", "4 - wykrzyknik") _WinAPI_MessageBeep(4) MsgBox(0,"Test dźwiękowy", "5 - gwiazdka") _WinAPI_MessageBeep(5) </syntaxhighlight> ===_WinAPI_FatalAppExit=== #include <WinAPI.au3> _WinAPI_FatalAppExit ( $sMessage ) Funkcja wyświetla okno komunikatu i kończy działanie skryptu. Nie zwraca żadnej wartości. '''UWAGA:''' Używać _WinAPI_FatalAppExit tylko wtedy, gdy nie ma możliwości zakończenia skryptu w inny sposób. Funkcja może nie zwolnić całej pamięci używanej przez skrypt oraz nie zamknąć wszystkich używanych przez niego plików. Może to spowodować ogólną awarię systemu. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> _WinAPI_FatalAppExit ("To już konic!") MsgBox(0, "???", "To i tak się nie wyświetli!") </syntaxhighlight> ===_WinAPI_ShowError=== #include <WinAPI.au3> _WinAPI_ShowError($sText [, $fExit = True]) Funkcja wyświetla okienko powiadomienia o błędzie i generuje stosowny sygnał dźwiękowy. Nie zwraca żadnej wartości. '''$sText''' - treść powiadomienia '''$fExit''' - określa czy działanie skryptu ma być przerwane po zamknięciu okienka, True - tak, False - nie Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> _WinAPI_ShowError('Wystąpił przerażający błąd!', False) MsgBox(4096, 'Bardzo ważna informacja!', 'Mimo wszystko próbujmy działąć dalej.') _WinAPI_ShowError('Błąd jeszcze straszniejszy!') MsgBox(4096, 'Nie ma co pisać, i tak się nie wyświetli', '') </syntaxhighlight> ===_WinAPI_ShowMsg=== #include <WinAPI.au3> _WinAPI_ShowMsg($sText) Funkcja wyświetla okienko informacyjne i generuje stosowny sygnał dźwiękowy. Nie zwraca żadnej wartości. '''$sText''' - treść powiadomienia Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> _WinAPI_ShowMsg('To jest bardzo ważna informacja!') </syntaxhighlight> ===_WinAPI_MsgBox=== #include <WinAPI.au3> _WinAPI_MsgBox($iFlags, $sTitle, $sText) Funkcja wyświetla okienko komunikatu. Nie zwraca żadnej wartości. '''$iFlags''' - flaga (jak dla MsgBox) '''$sTitle''' - tekst na belce '''$sText''' - tekst wewnątrz okienka '''UWAGA:''' Funkcja jest bardzo podobna do '''MsgBox'''. Różnicą jest to, że nie można ustalić czasu, po którym okno automatycznie się zamknie. Ponieważ funkcja nie zwraca żadnej wartości, używanie flagi o większej ilości przycisków jest pozbawione sensu (nie można rozpoznać, który przycisk został użyty). W odróżnieniu od '''MsgBox''', '''_WinAPI_MsgBox''' powoduje automatyczne odblokowanie klawiatury i myszy, co ilustruje poniższy przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> BlockInput(1) _WinAPI_MsgBox(64, '_WinAPI_MsgBox', 'Automatyczne odblokowanie') BlockInput(1) MsgBox(64, 'MsgBox', 'Odblokowanie po 3 sek.',3) BlockInput(0) </syntaxhighlight> ===_WinAPI_GetLastError=== #include <WinAPI.au3> _WinAPI_GetLastError ( ) Funkcja zwraca kod ostatniego błędu powstałego w aktualnym wątku. ===_WinAPI_GetLastErrorMessage=== #include <WinAPI.au3> _WinAPI_GetLastErrorMessage ( ) Funkcja zwraca komunikat ostatniego błędu powstałego w aktualnym wątku. ===_WinAPI_SetLastError=== #include <WinAPI.au3> _WinAPI_SetLastError ( $iErrorCode ) Funkcja ustawia kod ostatniego błędu powstałego w aktualnym wątku. '''$iErrorCode''' - kod błędu Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> FileOpen ("ble ble ble") ;próba otwarcia nieistniejącego pliku celem wywołania błędu systemowego MsgBox(64, "Błąd:", _WinAPI_GetLastError() &" - " & _WinAPI_GetLastErrorMessage()) _WinAPI_SetLastError(66) ;"ręczne" ustawienie kodu błędu MsgBox(64, "Błąd:", _WinAPI_GetLastError() &" - " & _WinAPI_GetLastErrorMessage()) </syntaxhighlight> ===_WinAPI_PostMessage=== #include <WinAPI.au3> _WinAPI_PostMessage ( $hWnd, $iMsg, $wParam, $lParam ) Funkcja wysyła komunikat do okna )kontrolki). Zwraca True gdy sukces, lub False gdy wystąpił błąd (informacje o błedzie można odczytać funkcją _WinAPI_GetLastError. '''$hWnd''' - Uchwyt okna (kontrolki) która otrzyma komunikat. Jeśli parametr wynosi 0xFFFF (HWND_BROADCAST),to komunikat zostanie wysłany do wszystkich okien najwyższego poziomu w systemie, włączając w to okna nieaktywne, niewidoczne, pokrywające się i pop-up Komunikat nie jest natomiast wysyłana do okien podrzędnych. '''$iMsg''' - wysyłany komunikat '''$wParam''' - pierwszy parametr komunikatu (zależny od rodzaju komunikatu) '''$lParam''' - drugi parametr komunikatu (zależny od rodzaju komunikatu) Komunikat | Opis | $wParam | $lParam --------------------------------------------------------------------------------------------------------------------- $WM_LBUTTONDBLCLK | Dwukrotne wciśnięcie LPM (dwuklik) | Współrzędne x i y | "" $WM_LBUTTONDOWN | Wciśnięcie i przytrzymanie LPM | Współrzędne x i y | "" $WM_LBUTTONUP | Puszczenie LPM | Współrzędne x i y | "" --------------------------------------------------------------------------------------------------------------------- $WM_MBUTTONDBLCLK | J/w dla środkowego przycisku myszy | Współrzędne x i y | "" $WM_MBUTTONDOWN | | Współrzędne x i y | "" $WM_MBUTTONUP | | Współrzędne x i y | "" --------------------------------------------------------------------------------------------------------------------- $WM_RBUTTONDBLCLK | J/w dla prawego przycisku myszy | | $WM_RBUTTONDOWN | | Współrzędne x i y | "" $WM_RBUTTONUP | | Współrzędne x i y | "" --------------------------------------------------------------------------------------------------------------------- Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> Run("calc.exe") Sleep(1000) WinSetState("Kalkulator", "", @SW_HIDE) Sleep(200) Local $hHandle = ControlGetHandle("Kalkulator", "", "5") Local $iCoordinates = _WinAPI_MakeLong(10,10) For $i=1 To 5 _WinAPI_PostMessage($hHandle, $WM_LBUTTONDOWN, "", $iCoordinates ) _WinAPI_PostMessage($hHandle, $WM_LBUTTONUP, "", $iCoordinates ) Next Sleep(1000) WinSetState("Kalkulator", "", @SW_SHOW) </syntaxhighlight> ==System== ===_WinAPI_CloseHandle=== #include <WinAPI.au3> _WinAPI_CloseHandle($hObject) Funkcja zamyka otwarty uchwyt obiektu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hObject''' - uchwyt obiektu, np. okna, pliku, itp. ===_WinAPI_EnumDisplayDevices=== #include <WinAPI.au3> _WinAPI_EnumDisplayDevices ( $sDevice, $iDevNum ) Funkcja zwraca informacje na temat urządzeń wyświetlających w systemie. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. '''$sDevice''' - nazwa urządzenia. Jeżeli pusta, funkcja zwraca informacje dla kart graficznych. '''$iDevNum''' - numer (indeks) urządzenia Informacje są zwracane w postaci jednowymiarowej tablicy: [1] - True [2] - adapter lub monitor [3] - opis adaptera lub monitora [4] - flaga statusu urządzenia (suma następujących wartości): 1 - urządzenie jest częścią pulpitu 2 - podstawowy pulpit jest na tym urządzeniu, dla systemów z jedną kartą graficzną jest zawsze ustawione, dla systemów z wieloma kartami graficznymi, może być ustawione tylko dla jednej z nich. 4 - wirtualne urządzenie dla usług zdalnego dostępu 8 - urządzenie jest kompatybilne z VGA 16 - urządzenie wymienne, nie jest głównym wyświetlaczem 32 - urządzenie posiada więcej trybów wyświetlania niż wsparcie urządzeń wyjściowych Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $aDev, $i=0, $txt While 1 $aDev = _WinAPI_EnumDisplayDevices("", $i) If Not $aDev[0] Then ExitLoop $txt = "Sukces? " & $aDev[0] & @CRLF $txt &= "Urządzenie (Adapter lub monitor): " & $aDev[1] & @CRLF $txt &= "Opis (Adapter lub monitor): " & $aDev[2] & @CRLF $txt &= "Flaga statusu urządzenia: " & $aDev[3] & @CRLF If BitAND($aDev[3], 32) Then $txt &= @TAB & "- Urządzenie ma więcej trybów wyświetlania niż wsparcie urządzeń wyjściowych" & @CRLF If BitAND($aDev[3], 16) Then $txt &= @TAB & "- Urządzenie wymienne, nie jest głównym wyświetlaczem" & @CRLF If BitAND($aDev[3], 8) Then $txt &= @TAB & "- Urządzenie kompatybilne z VGA" & @CRLF If BitAND($aDev[3], 4) Then $txt &= @TAB & "- Wirtualne urządzenie dla usług zdalnego dostępu" & @CRLF If BitAND($aDev[3], 2) Then $txt &= @TAB & "- Urządzenie podstawowego pulpitu" & @CRLF If BitAND($aDev[3], 1) Then $txt &= @TAB & "- Urządzenie znajduje się w pulpicie" & @CRLF $txt &= "Ciąg identyfikatora Plug and Play: " & $aDev[4] & @CRLF MsgBox(0, "", $txt) $i += 1 WEnd </syntaxhighlight> ===_WinAPI_GlobalMemoryStatus=== #include <WinAPI.au3> _WinAPI_GlobalMemoryStatus ( ) Funkcja zwraca informacje na temat aktualnie dostępnej pamięci operacyjnej. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. Informacje są zwracane w postaci jednowymiarowej tablicy: [0] - procent zajętej pamięci [1] - całkowity rozmiar fizycznej pamięci [2] - rozmiar wolnej pamięci fizycznej [3] - całkowity rozmiar pliku stronicowania [4] - wolny obszar pliku stronicowania [5] - całkowity rozmiar pamięci użytkownika [6] - rozmiar wolnej pamięci użytkownika Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <WinAPI.au3> $aMemInfo = _WinAPI_GlobalMemoryStatus() $sMemInfo = "Procent zajętej pamięci: " & $aMemInfo[0] & "%" & @CRLF & @CRLF & _ "Całkowity rozmiar fizycznej pamięci:" & @TAB & $aMemInfo[1] & @CRLF & @CRLF & _ "Rozmiar wolnej pamięci fizyczne:" & @TAB & $aMemInfo[2] & @CRLF & @CRLF & _ "Całkowity rozmiar pliku stronicowania:" & @TAB & $aMemInfo[3] & @CRLF & @CRLF & _ "Wolny obszar pliku stronicowania:" & @TAB & $aMemInfo[4] & @CRLF & @CRLF & _ "Całkowity rozmiar pamięci użytkownika:" & @TAB & $aMemInfo[5] & @CRLF & @CRLF & _ "Rozmiar wolnej pamięci użytkownika:" & @TAB & $aMemInfo[6] MsgBox(64, "Pamięć operacyjna:", $sMemInfo) </syntaxhighlight> ===_WinAPI_ExpandEnvironmentStrings=== #include <WinAPI.au3> _WinAPI_ExpandEnvironmentStrings ( $sString ) Funkcja zwraca string odpowiadający danej zmiennej środowiskowej. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. '''$sString''' - nazwa zmiennej systemowej Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0, "String zmiennej środowiskowej", "%windir% = " & _ _WinAPI_ExpandEnvironmentStrings("%windir%")) </syntaxhighlight> ===_WinAPI_GetSystemMetrics=== #include <WinAPI.au3> _WinAPI_GetSystemMetrics($iIndex) Funkcja zwraca określoną metrykę lub ustawienie konfiguracji systemu. Jeżeli wystąpił błąd zwracane jest 0. '''$iIndex''' - indeks parametru systemu, który chcemy poznać 0 - szerokość ekranu w pikselach 1 - wysokość ekranu w pikselach 2 - szerokość pionowego paska przewijania w pikselach 3 - wysokość poziomego paska przewijania w pikselach 4 - wysokość paska tytułowego okna w pikselach 5 - szerokość obramowanie okna w pikselach 7 - grubość ramy na obwodzie okna 8 - szerokość pionowej ramki wokół obwodu okna, które ma tytuł, ale nie zmienia swojego rozmiaru 9 - wysokość thumbbox'a na pionowym pasku przewijania 10 - szerokość thumbbox'a na poziomym pasku przewijania 11 - domyślna szerokość ikony w pikselach 12 - domyślna wysokość ikony w pikselach 13 - szerokość kursora w pikselach 14 - wysokość kursora w pikselach 15 - wysokość pojedynczej linii paska menu 16 - szerokość obszaru roboczego dla okna pełnoekranowego 17 - wysokość obszaru roboczego dla okna pełnoekranowego 20 - wysokość pionowego paska przewijania 21 - szerokość poziomego paska przewijania 23 - wartość niezerowa, jeśli znacznie lewego i prawego przycisku myszy zostało zamienione, inaczej 0 28 - minimalna szerokość okna w pikselach 29 - minimalna wysokość okna w pikselach 30 - szerokość przycisku w tytule okna lub na pasku tytułowym 36 - szerokość prostokąta wokół obszaru pierwszego kliknięcia w sekwencji podwójnego kliknięcia. Drugie kliknięcie musi wystąpić w obszarze tego prostokąta, aby uznać dwa kliknięcia za podwójne kliknięcie. 37 - jak 36 lecz dla wysokości prostokąta 43 - liczba przycisków myszy, 0 gdy mysz nie zainstalowana 67 - określa jak system został uruchomiony 0 - normalnie 1 - w trybie awaryjny 2 - w trybie awaryjnym z obsługą sieci ===_WinAPI_SystemParametersInfo=== #include <WinAPI.au3> _WinAPI_SystemParametersInfo($iAction [, $iParam = 0 [, $vParam = 0 [, $iWinIni = 0]]]) Funkcja obiera albo ustawia wartość jednego z parametrów systemu. Funkcja ta może również zaktualizować profil użytkownika podczas ustawiania parametru. Zwraca True gdy sukces lub False gdy wystąpił błąd. ===_WinAPI_GetSysColor=== #include <WinAPI.au3> _WinAPI_GetSysColor($iIndex) Funkcja zwraca kod koloru elementów systemowych okien (w formacie BGR). '''$iIndex''' - kod elementu, którego kolor ma być zwrócony przez funkcję $COLOR_3DDKSHADOW | 21 | ciemny cień elementów trójwymiarowych $COLOR_3DFACE | 15 | kolor tła trójwymiarowych elementów dialogowych $COLOR_3DHILIGHT | 20 | kolor trójwymiarowego elementy ekranu (na krawędzi skierowanej do źródła światła) $COLOR_3DLIGHT | 22 | kolor trójwymiarowe elementy ekranu (na krawędzi skierowaną do źródła światła.) $COLOR_3DSHADOW | 16 | kolor cienia trójwymiarowe elementu ekranu (na krawędzi przeciwległych do źródła światła) $COLOR_ACTIVEBORDER | 10 | granice aktywnego okna $COLOR_ACTIVECAPTION | 2 | aktywny pasek tytułu $COLOR_APPWORKSPACE | 12 | obszar roboczy aplikacji (MDI). $COLOR_BTNTEXT | 18 | kolor tekstu na przycisku $COLOR_CAPTIONTEXT | 9 | kolor tekstu tytułu $COLOR_DESKTOP | 1 | kolor tła pulpitu $COLOR_GRADIENTACTIVECAPTION | 27 | kolor gradientu w prawej stronie tytułu aktywnego okna $COLOR_ACTIVECAPTION | 2 | kolor aktywnego paska tytułu $COLOR_GRADIENTINACTIVECAPTION | 28 |kolor gradientu w prawej stronie tytułu nieaktywnego okna $COLOR_INACTIVECAPTION | 3 | określa lewy kolor boczny $COLOR_GRAYTEXT | 17 | szary tekst (niedostępny) $COLOR_HIGHLIGHT | 13 | pozycja (pozycje) wybrana w kontrolce $COLOR_HIGHLIGHTTEXT | 14 | kolor tekstu elementu (elenentów) wybranego w kontrolce $COLOR_HOTLIGHT | 26 | kolor dla hiperłącza i pozycji "hot-tracked" $COLOR_INACTIVEBORDER | 11 | kolor ramki nieaktywnego okna $COLOR_INACTIVECAPTION | 3 | kolor tytuł nieaktywnego okna $COLOR_INACTIVECAPTIONTEXT | 19 | kolor tekstu w nagłówku nieaktywnego okna $COLOR_INFOBK | 24 | tło tooltip'u $COLOR_INFOTEXT | 23 | tekst na tooltip'ie $COLOR_MENU | 4 | kolor tła menu $COLOR_MENUHILIGHT | 29 | kolor pozycji menu, gdy menu jest płaskie $COLOR_MENUBAR | 30 | kolor tła menu, gdy menu jest płaskie $COLOR_MENUTEXT | 7 | kolor tekstu w menu $COLOR_SCROLLBAR | 0 | szary obszar paska przewijania $COLOR_WINDOW | 5 | kolor tła okna $COLOR_WINDOWFRAME | 6 | kolor ramy okna $COLOR_WINDOWTEXT | 8 | kolor tekstu w oknie ===_WinAPI_SetSysColors=== #include <WinAPI.au3> _WinAPI_SetSysColors($vElements, $vColors) Funkcja ustawia kolor elementów okien. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$vElements''' - kod elementu, lub tablica kodów (kody jak dla '''_WinAPI_SetGetColors''') '''$vColors''' - kod koloru, lub tablica kodów (format BRG) '''UWAGA:''' Zmiana kolorów będzie aktualna nawet po zakończeniu skryptu! Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> GUICreate("Testowy GUI", 300, 200) GUISetState() $xcol = 15 $wincol = _WinAPI_GetSysColor($xcol) ;odczyt koloru _WinAPI_SetSysColors($xcol, 0xff) ;ustawienie nowego koloru MsgBox(0, "Test", "Pierwotny kolor: " & Hex($wincol) & @LF & _ "Nowy kolor : " & Hex(_WinAPI_GetSysColor($xcol))) _WinAPI_SetSysColors($xcol, $wincol) ;odtworzenie pierwotnego koloru </syntaxhighlight> ===_WinAPI_SetDefaultPrinter=== #Include <WinAPI.au3> _WinAPI_SetDefaultPrinter ($Sprinter) Funkcja ustawia domyślną drukarkę dla bieżącego użytkownika na komputerze lokalnym. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$Sprinter''' - domyślna nazwa drukarki. Do zdalnego wydruku nazwa ma postać: "\\server\NazwaDrukarki", dla drukarki lokalnej: "NazwaDrukarki". Jeśli tym parametrem jest "" (pusty string), to funkcja nie robi nic, o ile drukarka domyślna jest już zdefiniowana. Jednakże, jeśli domyślna drukarka nie jest dostępna, to funkcja sprawia, że ​​pierwsza na liście drukarek będzie ustawiona jako domyślna (o ile jest jakaś drukarka na liście). ==Haki== Hak (ang. hook) - mechanizm pozwalający na przechwytywanie określonych wiadomości systemowych zanim dotrą do docelowej aplikacji. Wyróżniamy dwa typy haków: - lokalne (thread hooks) – pozwalają przechwytywać wiadomości skierowane do określonego wątku, - globalne (system-wide hooks) – pozwalają przechwytywać wszystkie wiadomości danego typu wysyłane przez system. Haki można podpiąć do wielu wiadomości systemowych. Podczas wystąpienia którejś z nich (np. wciśnięcie klawisza, tworzenie okna...) Windows sprawdza czy istnieją zarejestrowane dla niej haki. Jeżeli tak – normalne operacje związane z wykonaniem zadania zostają zawieszone i kontrolę nad zdarzeniem przejmuje funkcja haka. Do niej należy przekazanie sterowania do kolejnych haków oraz poprawne przetworzenia wiadomości. W przypadku zarejestrowania więcej niż jednego haka dla danego zdarzenia zostaje budowany tzw. łańcuch haków („hook chain”). Jest to struktura typu LIFO - funkcja zarejestrowana najpóźniej otrzymuje możliwość działania jako pierwsza. Co z tego wynika? Hak zainstalowany jako ostatni może skutecznie ograniczyć wcześniejszym dostęp do informacji. System operacyjny odzyskuje kontrolę po zakończeniu działania wszystkich haków. Haki mają wiele zastosowań. Programy antywirusowe mogą instalować swoje haki aby przechwytywać otrzymywane/wysyłane e-maile i sprawdzać ich bezpieczeństwo. Keyloggery gromadzą wciśnięcia wszystkich klawiszy. Nic nie stoi na przeszkodzie, aby nasz system wzbogadcić o obsługę gestów myszki. Dodanie specyficznych skrótów klawiszowych także nie będzie problemem. Haki umożliwiają też badanie aktywności użytkownika poprzez nasłuchiwanie aktywności klawiatury i myszki. Oprócz tego mogą być przydatne przy debugowaniu aplikacji – dają bezpośredni dostęp do komunikatów systemu dla danego programu. Procedury dla haków globalnych muszą obowiązkowo znajdować się w bibliotece DLL. ===_WinAPI_SetWindowsHookEx=== #include <WinAPI.au3> _WinAPI_SetWindowsHookEx ( $iHook, $pProc, $hDll [, $iThreadId = 0] ) Funkcja zakłada hak na początku łańcucha i zwraca uchwyt do niego. Jeżeli wystąpił błąd zwracane jest 0, a informację o błędzie można odczytać za pomocą funkcji _WinAPI_GetLastError(). _SetWindowsHookEx powinniśmy wywołać tam, gdzie wykonujemy inicjalizację naszej aplikacji - np. po stworzeniu głównego okna. '''$iHook''' - Określa typ procedury haka do zainstalowania: $WH_CALLWNDPROC oraz $WH_CALLWNDPROCRET - pozwalają monitorować komunikaty przeznaczone dla konkretnej procedury okna. $WH_CALLWNDPROC przechwytuje komunikat przed jego dotarciem do procedury okna, $WH_CALLWNDPROCRET - po. $WH_CBT - nazwa pochodzi od computer-based training (CBT), czyli komputerowej edukacji, dla którego to rodzaju aplikacji przede wszystkim powstał ten hak. Pozwala przechwytywać komunikaty przed utworzeniem, zniszczeniem, minimalizacją, maksymalizacją, przeniesieniem, zmianą rozmiaru okna, przed wykonaniem polecenia systemowego, przed zdjęciem komunikatu myszy lub klawiatury z kolejki komunikatów, przed ustawieniem fokusa oraz przed synchronizacją kolejki komunikatów. Dzięki temu możemy określić, czy nasza aplikacja "pozwala" na te operacje czy też nie. Teraz już co niektórzy mogą kojarzyć - tak, wszelkiego rodzaju komputerowe testy, quizy i programy egzaminacyjne korzystają z tego, by zablokować biednym studentom dostęp do pomocy naukowych. $WH_DEBUG - ten hak wywoływany jest zawsze przed wszystkimi innymi hakami, więc można go użyć do "odpluskwiania" innych haków. $WH_FOREGROUNDIDLE - hak pozwalający nam wykonywać różne zadania w tle, gdy system wykryje, że pierwszoplanowy wątek nic w danej chwili nie robi. $WH_GETMESSAGE - pozwala przechwycić komunikat, który właśnie ma być zwrócony przez GetMessage lub PeekMessage (w przeciwieństwie do $WH_CALLWNDPROC, który przechwytuje komunikat już po wywołaniu DispatchMessage). To jest właśnie najbardziej zalecany hak do przechwytywania komunikatów związanych z myszą i klawiaturą. $WH_JOURNALPLAYBACK - ciekawy hak, który umożliwia odtworzenie "nagranych" wcześniej zdarzeń wejściowych (np. ruchu myszy). Jest to hak globalny, dotyczący wszystkich wątków w systemie. $WH_JOURNALRECORD - "nagrywa" zdarzenia do późniejszego wykorzystania przez $WH_JOURNALPLAYBACK, oczywiście to również jest hak globalny. $WH_KEYBOARD_LL - przechwytuje niskopoziomowe (low-level) zdarzenia, wywołane przez klawiaturę. $WH_KEYBOARD - przechwytuje wysokopoziomowe zdarzenia klawiatury (jest to więc wyspecjalizowany wariant haka $WH_GETMESSAGE). $WH_MOUSE_LL - przechwytuje niskopoziomowe zdarzenia myszy. $WH_MOUSE - przechwytuje wysokopoziomowe zdarzenia myszy (kolejna wyspecjalizowana wersja $WH_GETMESSAGE). $WH_MSGFILTER oraz $WH_SYSMSGFILTER - dzięki tym hakom możemy monitorować komunikaty pochodzące z menu, pasków przewijania, message box'ów oraz okien dialogowych. Możemy też wykrywać aktywację okna przy pomocy Alt+Tab lub Alt+Esc. Normalnie nie możemy tego wszystkiego zrobić, gdy wykonywana jest jakakolwiek pętla modalna np. wewnętrzna pętla message box'a). $WH_SYSMSGFILTER ma działanie globalne, zaś $WH_MSGFILTER dotyczy jedynie aplikacji, która zainstalowała hak. $WH_SHELL - został stworzony po to, byśmy w aplikacji shell'owej mogli otrzymywać istotne powiadomienia systemowe. Domyślnie jest to aktywacja aplikacji shell'owej oraz utworzenie/zniszczenie jej głównego okna. '''$pProc''' - wskaznik do procedury haka. Jeśli parametr $iThreadId wynosi zero lub określa identyfikator wątku utworzone przez inny proces, parametr $pProc musi wskazywać procedury haka w DLL. '''$hDll''' - uchwyt do biblioteki DLL zawierającej procedurę haka wskazywana przez parametr $pProc. Dla lokalnych haków należy podać wartość NULL. '''$iThreadId''' - określa identyfikator wątku, z którym procedura haka ma być związana. Jeśli parametr ten ma wartość zero, procedura haka jest związany z wszystkimi istniejącymi wątkami działającymi na tym samym pulpicie co wątek wywołujący. '''UWAGA:''' Ponieważ funkcje haków globalnych muszą znajdować się w bibliotece DLL, za pomocą sanego AutoIt'a nie można założyć haków tego rodzaju (AutoIt nie umożliwia tworzenia plików DLL). Można natomiast zakładać haki globalne z wykorzystaniem plików DLL utworzonych za pomocą innych języków programowania. ===_WinAPI_UnhookWindowsHookEx=== #include <WinAPI.au3> _WinAPI_UnhookWindowsHookEx ( $hHook ) Funkcja usuwa haka zainstalowanego w łańcuchu haków za pomocą funkcji WinAPI_SetWindowsHookEx. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hHook''' - uchwyt do usuwanego haka ===_WinAPI_CallNextHookEx=== #include <WinAPI.au3> _WinAPI_CallNextHookEx ( $hHook, $iCode, $wParam, $lParam ) Funkcja przekazuje sterowanie do procedury następnego haka w łańcuchu haków. '''$hHook''' - ten parametr jest ignorowany '''$iCode''' - '''$wParam''' - '''$lParam''' - Przykład założenia łańcucha haków na klawiaturę: <syntaxhighlight lang="autoit"> #include <StructureConstants.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> OnAutoItExitRegister("Cleanup") ;rejestracja funkcji wywoływanej przy zakończeniu skryptu Global $hHook1, $hKeyProc1, $hHook2, $hKeyProc2, $sLog $hKeyProc1 = DllCallbackRegister("_KeyProc1", "long", "int;wparam;lparam") ;rejestracja funkcji callback pierwszego haka $hHook1 = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hKeyProc1), Null) ;założenie pierwszego haka $hKeyProc2 = DllCallbackRegister("_KeyProc2", "long", "int;wparam;lparam") ;rejestracja funkcji callback drugiego haka $hHook2 = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hKeyProc2), Null) ;założenie drugiego haka ;pętla główna skryptu While 1 Sleep(10) WEnd #Region Definicje funkcji ;funkcja callback dla pierwszego haka Func _KeyProc1($nCode, $wParam, $lParam) Local $tKEYHOOKS $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam) If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook1, $nCode, $wParam, $lParam) ;wywołanie kolejnego haka EndIf If $wParam = $WM_KEYDOWN Then Modified_action_key1($tKEYHOOKS.vkCode) EndIf Return _WinAPI_CallNextHookEx($hHook1, $nCode, $wParam, $lParam) ;wywołanie kolejnego haka EndFunc ;funkcja callback dla drugiego haka Func _KeyProc2($nCode, $wParam, $lParam) Local $tKEYHOOKS1 $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam) If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook2, $nCode, $wParam, $lParam) ;;wywołanie kolejnego haka EndIf If $wParam = $WM_KEYDOWN Then Modified_action_key2($tKEYHOOKS.vkCode) EndIf Return _WinAPI_CallNextHookEx($hHook2, $nCode, $wParam, $lParam) ;wywołanie kolejnego haka EndFunc ;funkcja obsługi klawiatury przez pierwszego haka Func Modified_action_key1($iKeyCode) If $iKeyCode = 27 Then Exit ;zakończenie skryptu If $iKeyCode = 49 Then Beep(262, 200) ;klawisze 1 do 8 grają gamę If $iKeyCode = 50 Then Beep(294, 200) If $iKeyCode = 51 Then Beep(330, 200) If $iKeyCode = 52 Then Beep(349, 200) If $iKeyCode = 53 Then Beep(392, 200) If $iKeyCode = 54 Then Beep(440, 200) If $iKeyCode = 55 Then Beep(494, 200) If $iKeyCode = 56 Then Beep(523, 200) If $iKeyCode = 65 Then ToolTip ("AutoIt to jest to!", 500, 200) ;klawisz A $sLog &= Chr($iKeyCode) ;log klawiatury EndFunc ;funkcja obsługi klawiatury przez drugiego haka Func Modified_action_key2($iKeyCode) If $iKeyCode = 66 Then ToolTip ("AutoIt to jest lipa!", 500, 250) ;klawisz B EndFunc ;funkcja kończąca skrypt po wciśnięciu ESC ;zwalnia zasoby i wyświetla historię użycia klawiatury (prymitywny keylogger) Func Cleanup() _WinAPI_UnhookWindowsHookEx($hHook1) ;usunięcie pierwszego haka _WinAPI_UnhookWindowsHookEx($hHook2) ;usunięcie drugiego haka DllCallbackFree($hKeyProc1) ;wyrejestrowanie funkcji callback pierwszego haka DllCallbackFree($hKeyProc2) ;wyrejestrowanie funkcji callback drugiego haka MsgBox(64, 'Log klawiatury:', $sLog) ;wyświetlenie loga EndFunc #EndRegion Koniec definicji funkcji </syntaxhighlight> ==Arytmetyka bitowa== ===_WinAPI_HiWord=== #include <WinAPI.au3> _WinAPI_HiWord($iLong) Funkcja zwraca starsze słowo (2-bajtowe) z podwójnego słowa (4-bajtowego). '''$iLong''' - podwójnego słowa (4-bajtowe) ===_WinAPI_LoWord=== #include <WinAPI.au3> _WinAPI_LoWord($iLong) Funkcja zwraca młodsze słowo (2-bajtowe) z podwójnego słowa (4-bajtowego). '''$iLong''' - podwójnego słowa (4-bajtowe) Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $iWord = 0xAAFFFF MsgBox(0, $iWord, "Starsze słowo: " & Hex(_WinAPI_HiWord($iWord)) & @CRLF & _ "Młodsze słowo: " & Hex(_WinAPI_LoWord($iWord))) </syntaxhighlight> ===_WinAPI_FloatToInt=== #include <WinAPI.au3> _WinAPI_FloatToInt($nFloat) Funkcja zamienia liczbę zmiennoprzecinkową (typ Float) na odpowiadającą jej 4-bajtową liczbę całkowitą (typ Integer). '''$nFloat''' - liczba zmiennoprzecinkowa Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $float = 10.55 $INT = _WinAPI_FloatToInt($float) $text = "Liczba zmiennoprzecinkowa " & $float & " przkonwertowano na liczbę całkowitą " & $INT & " (Hex = " & Hex($INT) & ")" MsgBox(4096, "_WinAPI_FloatToInt", $text) </syntaxhighlight> ===_WinAPI_IntToFloat=== #include <WinAPI.au3> _WinAPI_IntToFloat($iInt) Funkcja zamienia 4-bajtową liczbę całkowitą (typ Integer) na odpowiadającą jej liczbę zmiennoprzecinkową (typ Float). Jeżeli wystąpi błąd zwracany jest string "-1.#QNAN". '''$nFloat''' - 4-bajtowa liczba całkowita '''UWAGA:''' Funkcja nie zmienia typu liczby (jak np. funkcja Int()), lecz sposób interpretacji bitowego zapisu liczby w pamięci komputera. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0, "", _WinAPI_IntToFloat(1000000)) </syntaxhighlight> ===_WinAPI_MakeLong=== #include <WinAPI.au3> _WinAPI_MakeLong($iLo, $iHi) Funkcja łączy dwa 2-bajtowe słowa w 4-bajtowe podwójne słowo. '''$iLo''' - 2-bajtowe młodsze słowo '''$iHi''' - 2-bajtowe starsze słowo Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $iWord = _WinAPI_MakeLong(0xaa, 0xbb) MsgBox(4096, "_WinAPI_MakeLong", Hex($iWord)) </syntaxhighlight> ===_WinAPI_MakeQWord=== #include <WinAPI.au3> _WinAPI_MakeQWord($LoDWORD, $HiDWORD) Funkcja łączy dwa 4-bajtowe podwójne słowa w 8-bajtowe poczwórne słowo (Int64). '''$LoDWORD''' - 4-bajtowe młodsze słowo '''$HiDWORD''' - 4-bajtowe starsze słowo Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $iWord = _WinAPI_MakeQWord(0xaa, 0xbb) MsgBox(4096, "_WinAPI_MakeQWord", Hex($iWord)) </syntaxhighlight> ===_WinAPI_MulDiv=== #include <WinAPI.au3> _WinAPI_MulDiv($iNumber, $iNumerator, $iDenominator) Funkcja mnoży dwie 32-bitowe liczby i dzieli 64-bitowy wynik przez trzecią 32-bitową liczbę. Zwraca wynik, lub -1 gdy wystąpił błąd. Jeśli wynik nie jest liczbą całkowitą, jest zaokrąglany zgodnie z ogólnymi zasadami. '''$iNumber i $iNumerator''' - dwie mnożone liczby '''$iDenominator''' - liczba przez którą dzielimy Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0, '_WinAPI_MulDiv', _WinAPI_MulDiv(3, 8, 6) & ' = ' & 3 * 8 / 6) </syntaxhighlight> 5qagl370nifcmm0ztqnlhvxo93kk7we 558427 558426 2026-10-03T15:35:25Z Wasta 12503 558427 wikitext text/x-wiki ==Co to jest WinAPI== Wg Wiki: Windows API, lub krócej: WinAPI – interfejs programistyczny systemu Microsoft Windows – jest to zbiór niezbędnych funkcji, stałych i zmiennych umożliwiających działanie programu w systemie operacyjnym Microsoft Windows. Zbiór ten jest bardzo obszerny i zawiera funkcje do tworzenia okien programów, elementów interfejsu graficznego, obsługi zdarzeń oraz umożliwiające dostęp do innych aplikacji, funkcji sieciowych czy sprzętu w komputerze. Mianem WinAPI określamy standardowe funkcje przychodzące wraz z plikami bibliotek DLL dostarczanymi z systemem, np. kernel32.dll, user32.dll, gdi32.dll, wsock32.dll, znajdującymi się w katalogu \Windows\System. Funkcje korzystające z WinAPI zawarte są w UDF'ie '''WinAPI.au3'''. Jest to największy UDF, ale część zawartych w nim funkcji dubluje funkcje wbudowane interpretera lub innych UDF'ów np.: '''GDIPlus.au3'''. W niniejszym opisie skupię się więc na funkcjach udostępniających nowe możliwości. ==Struktury (rekordy)== Niektóre funkcje znajdujące się w UDF'ie wykorzystują struktury jako parametry wywołania lub używają ich do zwracania wyników. Tworzenie takich struktur ułatwia plik '''StructureConstants.au3''', który zawiera predefiniowane stringi z opisem budowy typowych struktur. Nie musimy dołączać go dyrektywą '''#include''', gdyż robi to już sam UDF. Poniżej przykład tworzenia struktury zawierającej dane o wielkości i położeniu prostokątnego obszaru: <syntaxhighlight lang="autoit"> ;tworzenie struktury na podstawie stringu $tagRECT ;z biblioteki StructureConstants.au3 $tRect = DllStructCreate($tagRECT) ;nadanie wartości poszczególnym polom struktury DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) ;jeżeli zamiast samej struktury potrzebny jest wskaźnik do niej ;należy dodatkowo użyć funkcji odczytującej ten wskaźnik $ptrRect = DllStructGetPtr($tRect) ;dalsza część progamu </syntaxhighlight> Można też tak, wykorzystując skrócony sposób nadawania wartości pól struktury: <syntaxhighlight lang="autoit"> ;tworzenie struktury na podstawie stringu $tagRECT ;z biblioteki StructureConstants.au3 $tRect = DllStructCreate($tagRECT) ;nadanie wartości poszczególnym polom struktury (sposób uproszczony) $tRect.Left = 20 $tRect.Top = 50 $tRect.Right = 200 $tRect.Bottom = 200 ;dalsza część progamu </syntaxhighlight> Dokładniejszy opis dotyczący struktur i funkcji na nich operujących, w rozdziale [[AutoIt/Biblioteki DLL|'''Korzystanie z bibliotek DLL''']]. ===_WinAPI_PtInRect=== #include <WinAPI.au3> _WinAPI_PtInRect($tRect, $tPoint) Funkcja zwraca True gdy punkt znajduje się wewnątrz prostokątnego obszaru, lub False w przeciwnym przypadku. '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru '''$tPoint''' - struktura $tagPOINT zawierająca współrzędne sprawdzanego punktu Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> ;opis prostokąta $tRect = DllStructCreate($tagRECT) $tRect.Left = 20 $tRect.Top = 50 $tRect.Right = 200 $tRect.Bottom = 200 ;współrzędne sprawdzanego punktu $tPoint = DllStructCreate($tagPOINT) $tPoint.X = 120 $tPoint.Y = 120 If _WinAPI_PtInRect($tRect, $tPoint) Then $sTxt = "Punkt wewnątrz prostokąta" Else $sTxt = "Punkt na zewewnątrz prostokąta" EndIf MsgBox(4096, 'Test PtInRect', $sTxt) </syntaxhighlight> ===_WinAPI_RectIsEmpty=== #include <WinAPI.au3> _WinAPI_RectIsEmpty($tRect) Funkcja zwraca True gdy struktura opisująca prostokąt zawiera same zera, lub False w przeciwnym przypadku. '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> ;opis prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 0) DllStructSetData($tRect, "Top", 0) DllStructSetData($tRect, "Right", 0) DllStructSetData($tRect, "Bottom", 0) MsgBox(4096, 'RectIsEmpty', _ "Czy prostokąt jest pusty: " & _WinAPI_RectIsEmpty($tRect)) </syntaxhighlight> ===_WinAPI_PointFromRect=== #include <WinAPI.au3> _WinAPI_PointFromRect($tRect [, $fCenter = True]) Funkcja zwraca w postaci struktury $tagPOINT współrzędne środka, lub lewego górnego narożnika prostokątnego obszaru. '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru '''$fCenter''' - jeśli True zwraca punkt środkowy tego prostokąta, jeśli False jego współrzędne lewego górnego narożniku Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> ;opis prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) $tPoint = _WinAPI_PointFromRect($tRect) $iX = DllStructGetData($tPoint, 1) $iY = DllStructGetData($tPoint, 2) MsgBox(4096, "PointFromRect", _ "Punkt środkowy prostokąta:" & @LF & _ "x = " & $iX & @LF & "y = " & $iY) </syntaxhighlight> ===_WinAPI_GetXYFromPoint=== #include <WinAPI.au3> _WinAPI_GetXYFromPoint($tPoint, ByRef $iX, ByRef $iY) Funkcja zwraca przez referencję współrzędne punktu. '''$tPoint''' - struktura $tagPOINT zawierająca współrzędne punktu '''$iX''' i '''$iY''' - zmienne zawierające współrzędne punktu (nadpisywane przez referencję) Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $iX = 10, $iY = 10 ;opis prostokąta $tPoint = DllStructCreate($tagPOINT) DllStructSetData($tPoint, "X", 100) DllStructSetData($tPoint, "Y", 666) ;odczyt współrzędnych (przez referencję) _WinAPI_GetXYFromPoint($tPoint, $iX, $iY) MsgBox(4096, "GetXYFromPoint", _ "Odczytane współrzędne punktu:" & @LF & _ "x = " & $iX & @LF & "y = " & $iY) </syntaxhighlight> ==Funkcje związane z kontekstem urządzenia (DC)== Wszystkie funkcje graficzne WinAPI operują na kontekstach urządzeń. Podstawowe informacje o kontekstach można znaleźć w rozdziale [[AutoIt/Funkcje interfejsu GDI+|'''Funkcje interfejsu GDI+''']]. Teraz postaram się opisać temat nieco dokładniej, gdyż UDF dostarcza dużej ilości funkcji operujących na kontekstach i głębsze zrozumienie problemu będzie bardzo pomoncne w ich efektywnym wykorzystaniu. Twórcy Windows postanowili uprościć i ujednolicić operacje graficzne w systemie operacyjnym. Zamiast całej masy przypadków przesyłania informacji pomiędzy obiektami graficznymi (np. desktop -> okno, okno -> okno, okno -> bitmapa ... itd.) postanowili sprowadzić wszystko do jednego schematu: [Kontekst źródłowy] -> [Kontekst docelowy] Konteksty to jednak abstrakcje, same w sobie nie reprezentujące żadnego rzeczywistego obiektu. Dlatego kontekst musi być powiązany z rzeczywistym obiektem. Powiązanie to oznacza, że operacje wykonywane na kontekście będą jednocześnie wykonywane w tle na rzeczywistym obiekcie, bez konieczności zagłębiania się przez programistę w sam przebieg tego procesu. Wymiana informacji między kontekstami przebiega zawsze w ten sam sposób, natomiast przepływ informacji [obiekt] <-> [kontekst] jest realizowany przez OS bez udziału programisty: [Obiekt źródłowy]-[Kontekst źródłowy] -> [Kontekst docelowy]-[Obiekt docelowy] Oczywiście aby cały proces był możliwy do realizacji, konteksty i obiekty muszą być ze sobą zgodne (kompatybilne), tzn. zdolne do wymiany informacji. Rozpatrzmy dwa przykłady: '''1. Skopiowanie fragmentu desktopu do utworzonego okna GUI:''' Mamy do czynienia z dwoma istniejącymi obiektami, które są ze sobą z natury kompatybilne (wszak okno to nic innego jak część desktopu). Należy więc pobrać z systemu konteksty do obu obiektów (funkcja _WinAPI_GetDC), a następnie przesłać dane z kontekstu desktopu do kontekstu okna. Prosto i bez wnikania w szczegóły procesu. Przykładowy kod dla tego przypadku w opisie funkcji [[AutoIt/WinAPI#WinAPI_BitBlt|_WinAPI_BitBlt]]'''. '''2. Skopiowanie fragmentu desktopu do bitmapy:''' W tym przypadku istnieje tylko jeden obiekt (desktop), drugi obiekt (bitmapa) należy samodzielnie utworzyć. Rozpoczynamy od pobrania kontekstu do desktopu (_WinAPI_GetDC), następnie tworzymy nowy kontekst kompatybilny z kontekstem desktopu (_WinAPI_CreateCompatibleDC). Teraz tworzymy bitmapę kompatybilną z utworzonym kontekstem (_WinAPI_CreateCompatibleBitmap) i tworzymy powiązania pomiędzy kontekstem i bitmapą (_WinAPI_SelectObject). Mamy teraz powiązanie między desktopem, a bitmapą (poprzez kompatybilne konteksty) i możemy przesłać dane obrazu. Przykładowy kod dla tego przypadku w opisie funkcji [[AutoIt/WinAPI#WinAPI_CreateCompatibleBitmap|_WinAPI_CreateCompatibleBitmap]]. ===_WinAPI_GetDC=== #include <WinAPI.au3> _WinAPI_GetDC($hWnd) Funkcja odczytuje i zwraca kontekst do obszaru roboczego okna, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna Zwolnienie kontekstu za pomocą funkcji #_WinAPI_ReleaseDC. Przykład: <syntaxhighlight lang="autoit"> #Include <WinAPI.au3> $hWnd = GUICreate ("Test") $hDC = _WinAPI_GetDC($hWnd) MsgBox (0, "", "Uchwyt DC: " & $hDC) _WinAPI_ReleaseDC ($hWnd, $hDC) </syntaxhighlight> ===_WinAPI_GetWindowDC=== #include <WinAPI.au3> _WinAPI_GetWindowDC($hWnd) Funkcja odczytuje i zwraca kontekst do całego okna, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, jeżeli wstawimy 0 to będzie to oznaczało cały ekran (desktop). Zwolnienie kontekstu za pomocą funkcji '''_WinAPI_ReleaseDC '''. Przykład: <syntaxhighlight lang="autoit"> #Include <WinAPI.au3> $hWnd = GUICreate ("Test") $hDC = _WinAPI_GetWindowDC($hWnd) MsgBox (0, "", "Uchwyt DC: " & $hDC) _WinAPI_ReleaseDC ($hWnd, $hDC) </syntaxhighlight> ===_WinAPI_CreateCompatibleDC=== #include <WinAPI.au3> _WinAPI_CreateCompatibleDC($hDC) Funkcja tworzy kontekst zgodny z istniejącym kontekstem urządzenia. Zwraca uchwyt do tego kontekstu, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do istniejącego kontekstu DC Likwidacja kontekstu za pomocą funkcji '''_WinAPI_DeleteDC '''. ===_WinAPI_DeleteDC=== #include <WinAPI.au3> _WinAPI_DeleteDC($hDC) Funkcja likwiduje kontekst. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu DC Funkcji należy używać do usunięcia kontekstów utworzonych w skrypcie (_WinAPI_CreateCompatibleDC), a już nie wykorzystywanych, celem zwolnienia zasobów. ===_WinAPI_ReleaseDC=== #include <WinAPI.au3> _WinAPI_ReleaseDC($hWnd, $hDC) Funkcja zwalnia wcześniej pobrany kontekst. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna '''$hDC''' - uchwyt do kontekstu DC Funkcji należy używać do zwolnienia kontekstów pobranych w skrypcie (_WinAPI_GetDC lub _WinAPI_GetWindowDC), a już nie wykorzystywanych, celem zwolnienia zasobów. ===_WinAPI_SelectObject=== #include <WinAPI.au3> _WinAPI_SelectObject($hDC, $hGDIObj) Funkcja przypisuje obiekt do określonego kontekstu urządzenia. Zwraca uchwyt do pierwotnego obiektu (tego który był poprzednio przypisany do kontekstu), lub liczbę ujemną gdy wystąpił błąd. Obiekt musi być jednego z następujących typów: Bitmap, Brush, Font, Pen lub Region. '''$hDC''' - uchwyt do kontekstu DC '''$hGDIObj''' - uchwyt do przypisywanego obiektu Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> ;odczytanie kontekstu do desktopu $hDC = _WinAPI_GetWindowDC(0) ;tworzenie piór $hPen1 = _WinAPI_CreatePen($PS_SOLID, 12, 0x0000FF) $hPen2 = _WinAPI_CreatePen($PS_SOLID, 20, 0x00FF00) ;przypisanie pióra 1 do kontekstu _WinAPI_SelectObject($hDC, $hPen1) ;rysowanie linni w kontekście _WinAPI_DrawLine($hDC, 400, 500, 800, 700) ;przypisanie pióra 2 do kontekstu $hOld = _WinAPI_SelectObject($hDC, $hPen2) ;rysowanie linni w kontekście _WinAPI_DrawLine($hDC, 400, 700, 800, 400) Sleep(5000) ;jeżeli chcemy wrócić do poprzedniego przypisania _WinAPI_SelectObject($hDC, $hOld) ;zwolnienie zasobów _WinAPI_DeleteObject($hPen1) _WinAPI_DeleteObject($hPen2) _WinAPI_ReleaseDC(0, $hDC) </syntaxhighlight> ===_WinAPI_DeleteObject=== #include <WinAPI.au3> _WinAPI_DeleteObject ( $hObject ) Funkcja usuwa logiczne, obiekty takie jak pióro, pędzel, czcionka, bitmapa, region lub paleta. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hObject''' - uchwyt do usuwanego obiektu ===_WinAPI_BitBlt=== #include <WinAPI.au3> _WinAPI_BitBlt($hDestDC, $iXDest, $iYDest, $iWidth, $iHeight, $hSrcDC, $iXSrc, $iYSrc, $iROP) Funkcja kopiuje blok grafiki pomiędzy dwoma kontekstami urządzeń. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDestDC''' - uchwyt do kontekstu docelowego '''$iXDest''' i '''$iYDest''' - współrzędne lewego górnego narożnika wstawianego bloku w kontekście docelowym '''$iWidth''' i '''$iHeight''' - szerokość i wysokość kopiowanego bloku '''$hSrcDC''' - uchwyt do kontekstu źródłowego '''$iXSrc''' i '''$iYSrc''' - współrzędne lewego górnego narożnika kopiowanego bloku w kontekście źródłowym '''$iROP''' - kod operacji. Kody te określają, w jaki sposób dane kolorowego prostokątnego bloku kopiowanego z kontekstu źródłowego zostaną połączone z kolorami znajdującymi się w prostokącie docelowym: Nazwy stałych wg '''<WindowsConstants.au3>''' --------------------------------------------------------------------------------------------------------- $BLACKNESS = 0x00000042 | Wypełnia prostokąt docelowy używając koloru związanego z indeksem 0 | w palecie fizycznej (ten kolor jest czarny dla domyślnej palety). --------------------------------------------------------------------------------------------------------- $CAPTUREBLT = 0x40000000 | Zawiera wszystkie okna, które są nakładane na górze okna w obraz wynikowy. --------------------------------------------------------------------------------------------------------- $DSTINVERT = 0x00550009 | Negatyw prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $MERGECOPY = 0x00C000CA | Łączy za pomocą operatora AND kolor prostokąta źródłowego z kolorem | aktualnie wybranego w $hDestDC pędzla. --------------------------------------------------------------------------------------------------------- $MERGEPAINT = 0x00BB0226 | Łączy za pomocą operatora OR negatyw prostokąta źródłowego | z kolorami prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $NOMIRRORBITMAP = 0x80000000 | --------------------------------------------------------------------------------------------------------- $NOTSRCCOPY = 0x00330008 | Kopiuje negatyw prostokąta źródłowego do miejsca przeznaczenia. --------------------------------------------------------------------------------------------------------- $NOTSRCERASE = 0x001100A6 | Łączy za pomocą operatora OR kolory prostokąta źródłowego i docelowego, | a następnie wykonuje negatyw powstałych kolorów. --------------------------------------------------------------------------------------------------------- $PATCOPY = 0x00F00021 | Kopiuje pędzel aktualnie wybranego w $hDestDC, do bitmapy docelowej. --------------------------------------------------------------------------------------------------------- $PATINVERT = 0x005A0049 | Łączy za pomocą operatora XOR kolor pędzla aktualnie wybranego w $hDestDC, | z kolorami prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $PATPAINT = 0x00FB0A09 | Łączy za pomocą operatora OR, kolor pędzla aktualnie wybranego w $hDestDC, | z negatywem prostokąta źródłowego. Wynik tej operacji jest połączony | za pomocą operatora OR, z kolorami prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $SRCAND = 0x008800C6 | Łączy za pomocą operatora AND, kolory prostokąta źródłowego i docelowego. --------------------------------------------------------------------------------------------------------- $SRCCOPY = 0x00CC0020 | Kopiuje prostokąt źródłowy bezpośrednio do prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $SRCERASE = 0x00440328 | Łączy za pomocą operatora AND, negatyw prostokąta docelowego | z kolorami prostokąta źródłowego. --------------------------------------------------------------------------------------------------------- $SRCINVERT = 0x00660046 | Łączy za pomocą operatora XOR, kolory prostokąta źródłowego i docelowego. --------------------------------------------------------------------------------------------------------- $SRCPAINT = 0x00EE0086 | Łączy za pomocą operatora OR, kolory prostokąta źródłowego i docelowego. --------------------------------------------------------------------------------------------------------- $WHITENESS = 0x00FF0062 | Wypełnia prostokąt docelowy używając koloru związanego z indeksem 1 | w palecie fizycznej (ten kolor jest biały dla domyślnej palety). Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <GDIPlus.au3> #region tworzenie testowego obrazka $hGUI = GUICreate("GDI+", 400, 450) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie elipsy domyślnym pędzlem _GDIPlus_GraphicsfillEllipse($hGraphic, 160, 100, 150, 100) $hBrush = _GDIPlus_BrushCreateSolid(0xB0FF0000) ;tworzenie pędzla _GDIPlus_GraphicsFillEllipse($hGraphic, 210, 30, 120, 250, $hBrush) Sleep(200) ;chwila na zakończenie tworzenia obrazka ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() #endregion tworzenie testowego obrazka $hGUIDC = _WinAPI_GetDC($hGUI) ;kontekst do obszaru roboczego GUI $hDC = _WinAPI_GetWindowDC(0) ;kontekst do desktopu ;kopiowanie fragmentów desktopu do GUI _WinAPI_BitBlt($hGUIDC, 0, 0, 300, 200, $hDC, 0, 0, $SRCCOPY) _WinAPI_BitBlt($hGUIDC, 100, 220, 250, 200, $hDC, 20, 0, $SRCAND) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_ReleaseDC (0, $hDC) _WinAPI_ReleaseDC ($hGUI, $hGUIDC) </syntaxhighlight> ===_WinAPI_SetTextColor=== #include <WinAPI.au3> _WinAPI_SetTextColor($hDC, $iColor) Funkcja ustawia kolor aktualnej czcionki w danym kontekście urządzenia. Zwraca kod poprzedniego koloru, lub -1 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iColor''' - kod koloru w formacie RGB ===_WinAPI_SetBkColor=== #include <WinAPI.au3> _WinAPI_SetBkColor($hDC, $iColor) Funkcja ustawia kolor tła w danym kontekście urządzenia. Zwraca kod poprzedniego koloru, lub -1 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iColor''' - kod koloru w formacie RGB ===_WinAPI_GetBkMode=== #include <WinAPI.au3> _WinAPI_GetBkMode($hDC) Funkcja zwraca tryb wyświetlania tła w danym kontekście urządzenia, lub 0 gdy wystąpił bład. Zwracane wartości: 1 ($TRANSPARENT) - tło przezroczyste 2 ($OPAQUE) - tło nieprzezroczyste '''$hDC''' - uchwyt do kontekstu ===_WinAPI_SetBkMode=== #include <WinAPI.au3> _WinAPI_SetBkMode($hDC, $iBkMode) Funkcja ustawia tryb wyświetlania tła w danym kontekście urządzenia. Zwraca kod poprzedniego trybu, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iBkMode''' - kod trybu wyświetlania tła: 1 ($TRANSPARENT) - tło przezroczyste 2 ($OPAQUE) - tło nieprzezroczyste Przykład: <syntaxhighlight lang="autoit"> #include <FontConstants.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> Global $hDC, $hFont, $hFont_old, $iTextColor = 0xFF0000 HotKeySet("{ESC}", "_Exit") ;rejestrowanie funkcji zamykającej skrypt ;definiowanie prostokątnego obszaru, w którym będziemy wpisywali tekst $tRECT = DllStructCreate($tagRect) $tRECT.Left = 850 $tRECT.Top = 300 $tRECT.Right = 1250 $tRECT.Bottom = 550 $hDC = _WinAPI_GetDC(0) ;pobranie kontekstu do desktopu $hFont = _WinAPI_CreateFont(50, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _ $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial') ;definicja fontów $hFont_old = _WinAPI_SelectObject($hDC, $hFont) ;zapamiętanie pierwotnych fontów i ustawienie nowych _WinAPI_SetBkColor($hDC, 0x000000) ;definicja koloru tła _WinAPI_SetBkMode($hDC, $TRANSPARENT) ;tło przezroczyste Do _WinAPI_SetTextColor($hDC, $iTextColor) ;ustawienie koloru tekstu _WinAPI_DrawText($hDC, "AUTOIT jest super!", $tRECT, $DT_CENTER) ;wypisanie tekstu Sleep(50) Until False ;funkcja zwalniająca zasoby i zamykająca skrypt Func _Exit() _WinAPI_SelectObject($hDC, $hFont_old) _WinAPI_DeleteObject($hFont) _WinAPI_ReleaseDC(0, $hDC) _WinAPI_InvalidateRect(0, 0) $tRECT = 0 Exit EndFunc </syntaxhighlight> ==Funkcje związane z tworzeniem i przetwarzaniem grafiki== ===_WinAPI_CreateBitmap=== #include <WinAPI.au3> _WinAPI_CreateBitmap($iWidth, $iHeight [, $iPlanes = 1 [, $iBitsPerPel = 1 [, $pBits = 0]]]) Funkcja tworzy bitmapę o określonej szerokości, wysokość, kolorze i formacie. Zwraca uchwyt do bitmapy, lub 0 gdy wystąpił błąd. '''$iWidth''' - szerokość bitmapy w pikselach '''$iHeight''' - wysokość bitmapy w pikselach '''$iPlanes''' - określa liczbę płaszczyzn kolorów używanych przez urządzenia '''$iBitsPerPel''' - liczba bitów potrzebnych do określenia barwy pojedynczego piksela '''$pBits''' - wskaźnik do tablicy danych kolorów używanych do ustawienia kolorów pikseli. Jeżeli parametr ten ma wartość 0, zawartość nowej bitmapy jest niezdefiniowana. ===_WinAPI_CreateCompatibleBitmap=== #include <WinAPI.au3> _WinAPI_CreateCompatibleBitmap($hDC, $iWidth, $iHeight) Funkcja tworzy bitmapę zgodną z określonym kontekstem urządzenia. Zwraca uchwyt do bitmapy, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu urządzenia '''$iWidth''' - szerokość bitmapy w pikselach '''$iHeight''' - wysokość bitmapy w pikselach Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GDIPlus.au3> Const $SRCCOPY = 0x00CC0020 Local $iX = 500, $iY = 300 _GDIPlus_Startup() ;pobranie kontekstu desktopu $hDDC = _WinAPI_GetWindowDC(0) ;utworzenie kontekstu kompatybilnego do kontekstu desktopu $hCDC = _WinAPI_CreateCompatibleDC($hDDC) ;utworzenie bitmapy kompatybilnej z kontekstem urządzenia $hHBMP = _WinAPI_CreateCompatibleBitmap($hDDC, $iX, $iY) ;przypisanie bitmapy do kontekstu urządzenia _WinAPI_SelectObject($hCDC, $hHBMP) ;kopiowanie danych obrazu między kontekstami _WinAPI_BitBlt($hCDC, 0, 0, $iX, $iY, $hDDC, 30, 35, $SRCCOPY) ;tworzenie obiektu Bitmap z bitmapy $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBMP) ;zapis bitmapy na dysku _GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Test.jpg") ;zwolnienie zasobów _GDIPlus_BitmapDispose($hBitmap) _WinAPI_DeleteObject($hHBMP) _WinAPI_DeleteDC($hCDC) _GDIPlus_Shutdown() ;wyświetlenie utworzonego obrazka SplashImageOn("Test", @ScriptDir & "\Test.jpg", $iX, $iY) Sleep(5000) </syntaxhighlight> ===_WinAPI_CreateSolidBitmap=== #include <WinAPI.au3> _WinAPI_CreateSolidBitmap($hWnd, $iColor, $iWidth, $iHeight [, $bRGB = True]) Funkcja tworzy bitmapę typu solid (jednokolorową). Zwraca uchwyt do bitmapy, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, w którym wyświetlona będzie bitmapa '''$iColor''' - kolor bitmapy w formacie RGB '''$iWidth''' - szerokość bitmapy w pikselach '''$iHeight''' - wysokość bitmapy w pikselach '''$bRGB''' - jeżeli True to $iColor łącznie z kanałem alfa (0x00RRGGBB) Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> ;tworzenie GUI $hwnd = GUICreate("", 400, 300) $Button = GUICtrlCreateButton("", 100, 30, 100, 100, 0x40) $hDCDest = _WinAPI_GetDC($hwnd) ;kontekst do GUI ;tworzenie kompatybilnego kontekstu $hDCSource = _WinAPI_CreateCompatibleDC($hDCDest) ;tworzenie bitmapy typu solid $hHBitmap = _WinAPI_CreateSolidBitmap($hwnd, 0xff0000, 300, 300) ;przypisanie bitmapy do kompatybilnego kontekstu _WinAPI_SelectObject($hDCSource, $hHBitmap) GUISetState() Do $msg = GUIGetMsg() ;przeniesienie fragmentu bitmapy na przycisk _WinAPI_BitBlt($hDCDest, 102, 32, 96, 96, $hDCSource, 0, 0, $SRCCOPY) Until $msg = $GUI_EVENT_CLOSE Or $msg = $Button ;zwolnienie zasobów _WinAPI_ReleaseDC($hwnd, $hDCDest) _WinAPI_DeleteDC($hDCSource) _WinAPI_DeleteObject($hHBitmap) </syntaxhighlight> ===_WinAPI_CreatePen=== #include <WinAPI.au3> _WinAPI_CreatePen($iPenStyle, $iWidth, $nColor) Funkcja tworzy pióro (obiekt pen). Zwraca uchwyt do pióra, lub 0 gdy wystąpił błąd. '''$iPenStyle''' - styl pióra: PS_SOLID | linia ciągła PS_DASH | linia przerywana PS_DOT | linia punktowa PS_DASHDOT | na przemian kreska i kropka PS_DASHDOTDOT | na przemian kreska i dwie kropki PS_NULL | pióro jest niewidoczne PS_INSIDEFRAME | linia ciągła do wnętrza konturu zamkniętego '''$iWidth''' - szerokość linii rysowanej przez pióro (w pikselach) '''$nColor''' - kolor pióra w formacie BBGGRR (np. 0xAAF009) Aby użyć pióra należy przypisać go do kontekstu urządzenia za pomocą funkcji '''_WinAPI_SelectObject'''. Jeżeli wartość określona przez $nWidth jest większa niż 1, parametr $iPenStyle może być tylko PS_NULL, PS_SOLID lub PS_INSIDEFRAME. Niepotrzebne już pióro należy usunąć funkcją '''_WinApi_DeleteObject''' celem zwolnienia zasobów. Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> $hDC = _WinAPI_GetWindowDC(0) ;kontekst do desktopu ;tworzenie pędzla $hPen = _WinAPI_CreatePen($PS_SOLID, 12, 0x0000FF) ;przypisanie pędzla do kontekstu desktopu $obj = _WinAPI_SelectObject($hDC, $hPen) ;rysowanie linii _WinAPI_DrawLine($hDC, 400, 500, 900, 700) ;zmiana pędzla $hPen = _WinAPI_CreatePen($PS_DASHDOTDOT, -1, -1) $obj = _WinAPI_SelectObject($hDC, $hPen) _WinAPI_DrawLine($hDC, 400, 800, 900, 500) ; Sleep(2000) ;zwolnienie zasobów _WinAPI_DeleteObject($hPen) _WinAPI_ReleaseDC(0, $hDC) </syntaxhighlight> ===_WinAPI_CreateSolidBrush=== #include <WinAPI.au3> _WinAPI_CreateSolidBrush($nColor) Funkcja tworzy pędzel (obiekt brush)typu solid. Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. '''$nColor''' - kolor pędzla w formacie BBGGRR (np. 0xAAF009) Niepotrzebny już pędzel należy usunąć funkcją '''_WinApi_DeleteObject''' celem zwolnienia zasobów. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("WinAPI", 400, 300) $hDC = _WinAPI_GetWindowDC($hGUI) GUISetState() ;tworzenie pędzla $hBrush = _WinAPI_CreateSolidBrush(0x0000FF) ;tworzenie struktury z danymi prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) ;odczyt wskaźnika do struktury $ptrRect = DllStructGetPtr($tRect) ;rysowanie ramki wokół prostokąta _WinAPI_FrameRect($hDC, $ptrRect, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC($hGUI, $hDC) </syntaxhighlight> ===_WinAPI_CreateFont=== #include <WinAPI.au3> _WinAPI_CreateFont($nHeight, $nWidth [, $nEscape = 0 [, $nOrientn = 0 [, $fnWeight = $FW_NORMAL [, $bItalic = False [, $bUnderline = False [, $bStrikeout = False [, $nCharset = $DEFAULT_CHARSET [, $nOutputPrec = $OUT_DEFAULT_PRECIS [, $nClipPrec = $CLIP_DEFAULT_PRECIS [, $nQuality = $DEFAULT_QUALITY [, $nPitch = 0 [, $szFace = 'Arial']]]]]]]]]]]]) Funkcja tworzy logiczną czcionkę o podanych cechach. Zwraca uchwyt do czcionki, lub 0 gdy wystąpił błąd. '''$nHeight''' - wysokość czcionki '''$nWidth''' - średnia szerokość czcionki '''$nEscape''' - kąt pochylenia linii tekstu w dziesiętnych stopnia '''$nOrientn''' - '''$fnWeight''' - waga czcionki: $FW_DONTCARE - 0 $FW_THIN - 100 $FW_EXTRALIGHT - 200 $FW_LIGHT - 300 $FW_NORMAL - 400 $FW_MEDIUM - 500 $FW_SEMIBOLD - 600 $FW_BOLD - 700 $FW_EXTRABOLD - 800 $FW_HEAVY - 900 '''$bItalic''' - italik True/False '''$bUnderline''' - podkreślenie True/False '''$bStrikeout''' - przekreślenie True/False '''$nCharset''' - zestaw znaków, następujące wartości są predefiniowane: $ANSI_CHARSET - 0 $BALTIC_CHARSET - 186 $CHINESEBIG5_CHARSET - 136 $DEFAULT_CHARSET - 1 $EASTEUROPE_CHARSET - 238 $GB2312_CHARSET - 134 $GREEK_CHARSET - 161 $HANGEUL_CHARSET - 129 $MAC_CHARSET - 77 $OEM_CHARSET - 255 $RUSSIAN_CHARSET - 204 $SHIFTJIS_CHARSET - 128 $SYMBOL_CHARSET - 2 $TURKISH_CHARSET - 162 $VIETNAMESE_CHARSET - 163 '''$nOutputPrec''' - '''$nClipPrec''' - '''$nQuality''' - '''$nPitch''' - '''$szFace''' - nazwa czcionki, np.: Arial, Arial Black, Courier, Courier New, Lucida Console, MS Sans Serif, Roman, Script, Times New Roman, itd. Niepotrzebną już czcionkę należy usunąć funkcją '''_WinApi_DeleteObject''' celem zwolnienia zasobów. ===_WinAPI_CreateFontIndirect=== #include <WinAPI.au3> _WinAPI_CreateFontIndirect($tLogFont) Funkcja tworzy logiczną czcionkę o podanych cechach. Zwraca uchwyt do czcionki, lub 0 gdy wystąpił błąd. '''$tLogFont''' - struktura $tagLOGFONT , określająca cechy czcionki logicznej. Pola struktury: Nazwa pola | Typ pola | Opis ------------------------------------------------------------------------------ Height | int | wysokość czcionki Width | int | średnia szerokość czcionki, 0 szerokość domyślna Escapement | int | kąt pochylenia linii tekstu w dziesiętnych stopnia Orientation | int | Weight | int | waga czcionki Italic | byte | czcionka pochylona - italik (True/False) Underline | byte | czcionka podkreślenie (True/False) StrikeOut | byte | czcionka przekreślenie (True/False) CharSet | byte | zestaw znaków OutPrecision | byte | ClipPrecision | byte | Quality | byte | PitchAndFamily | byte | FaceName | chr[32] | nazwa czcionki Można używać predefiniowanych stałych, tak jak w '''_WinAPI_CreateFont'''. Po wybraniu czcionki za pomocą SelectObject, GDI-font-Mapper próbuje dopasować czcionki logiczne do istniejącej czcionki fizycznej. Jeśli nie można znaleźć dokładne dopasowanie, zapewnia alternatywną czcionkę, której cechy są najbardziej zbieżne. Niepotrzebny już czcinkę należy usunąć funkcją '''_WinApi_DeleteObject''' celem zwolnienia zasobów. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GUIConstants.au3> #include <GuiListBox.au3> #include <GuiButton.au3> $hGUI = GUICreate("_WinAPI_CreateFontIndirect", 350, 200) $hBtn = _GUICtrlButton_Create($hGUI, "Przycisk", 10, 10, 270, 34) $hListBox = _GUICtrlListBox_Create($hGUI, "Dyski logiczne:", 10, 50, 270, 150) _GUICtrlListBox_BeginUpdate($hListBox) _GUICtrlListBox_Dir($hListBox, "", $DDL_DRIVES, False) _GUICtrlListBox_EndUpdate($hListBox) ;tworzenie struktury $tLogFont = DllStructCreate($tagLOGFONT) DllStructSetData($tLogFont, "Height", 22) DllStructSetData($tLogFont, "Weight", 700) DllStructSetData($tLogFont, "Italic", True) DllStructSetData($tLogFont, "FaceName", 'Arial') ;tworzenie czcionek $hFont1 = _WinAPI_CreateFontIndirect($tLogFont) DllStructSetData($tLogFont, "Italic", False) DllStructSetData($tLogFont, "FaceName", 'Courier new') $hFont2 = _WinAPI_CreateFontIndirect($tLogFont) ;ustawienie czcionek _WinAPI_SetFont($hBtn, $hFont1) _WinAPI_SetFont($hListBox, $hFont2) GUISetState() Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hFont1) _WinAPI_DeleteObject($hFont2) </syntaxhighlight> ===_WinAPI_GetStockObject=== #include <WinAPI.au3> _WinAPI_GetStockObject($iObject) Funkcja zwraca uchwyt do jednego z wbudowanych szablonów pióra, pędzla, czcionki lub palety. Jeżeli wystąpił błąd zwracane jest 0. '''$iObject''' - wskazuje rodzaj obiektu. Parametr ten może być jedną z następujących wartości: $BLACK_BRUSH - pędzel czarny $DKGRAY_BRUSH - pędzel ciemnoszary $GRAY_BRUSH - pędzel szary $HOLLOW_BRUSH - pędzel Null, to samo co $NULL_BRUSH $LTGRAY_BRUSH - pędzel jasnoszary $NULL_BRUSH - pędzel Null (niemalujący) $WHITE_BRUSH - pędzel biały $BLACK_PEN - pióro czarne $NULL_PEN - pióro Null $WHITE_PEN - pióro białe $ANSI_FIXED_FONT - czcionka systemowa nieproporcjonalna (o stałej szerokości) $ANSI_VAR_FONT - czcionka systemowa proporcjonalna (o zmiennej szerokości) $DEVICE_DEFAULT_FONT - czcionka domyślna zależna od urządzenia $DEFAULT_GUI_FONT - czcionka domyślna dla obiektów interfejsu użytkownika $OEM_FIXED_FONT - czcionka nieproporcjonalna OEM $SYSTEM_FONT - czcionka systemowa $SYSTEM_FIXED_FONT - czcionka systemowa nieproporcjonalna stosowana w systemach Windows wcześniejszych niż 3.0 $DEFAULT_PALETTE - paleta domyślna Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("GetStockObject", 400, 300) $hDC = _WinAPI_GetWindowDC($hGUI) GUISetState() ;ciemnoszary pędzel $hBrush = _WinAPI_GetStockObject($DKGRAY_BRUSH) $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 380) DllStructSetData($tRect, "Bottom", 300) $ptrRect = DllStructGetPtr($tRect) _WinAPI_FillRect($hDC, $ptrRect, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC($hGUI, $hDC) </syntaxhighlight> ===_WinAPI_DrawText=== #include <WinAPI.au3> _WinAPI_DrawText($hDC, $sText, ByRef $tRect, $iFlags) Funkcja wstawia tekst do podanego kontekstu. Zwraca wysokość tekstu, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$sText''' - wstawiany tekst '''$tRect''' - struktura $tagRECT, zawierająca współrzędne prostokąta, w którym będzie wstawiony tekst '''$iFlags''' - flaga określająca jak ma być formatowany tekst: $DT_BOTTOM - wyrównanie tekstu do dolnej krawędzi prostokąta $DT_CALCRECT - oblicza szerokość i wysokość wymaganego prostokąta, wynik zwracany przez referencję w strukturze $DT_CENTER - centrowanie tekstu poziomo w prostokącie $DT_EDITCONTROL - jeżeli tekst jest wielowierszowy , to wiersz który nie mieści się w całości na wysokości prostokąta nie będzie wyświetlany, ma sens tylko w parze z $DT_WORDBREAK ($DT_WORDBREAK) + $DT_EDITCONTROL) $DT_END_ELLIPSIS - zastępuje część tekstu wielokropkiem, jeżeli nie mieści się w prostokącie $DT_EXPANDTABS - rozszerza znaki tabulacji, domyślny rozmiar tabulacji wynosi 8 znaków $DT_EXTERNALLEADING - $DT_HIDEPREFIX - nie jest wyświetlane podkreślenie znaku za prefiksem (&) $DT_INTERNAL - używa trzcinki systemowej do wyliczenia wielkości tekstu $DT_LEFT - wyrównanie tekstu do lewej $DT_MODIFYSTRING - $DT_NOCLIP - tekst nie jest przycinany gdy nie mieści się w prostokącie $DT_NOFULLWIDTHCHARBREAK - $DT_NOPREFIX - prefiks (&) jest wyświetlany jak zwykły znak $DT_PATH_ELLIPSIS - jeżeli tekst nie mieści się w prostokącie, a zawiera odwrotny ukośnik (\), część tekstu od ostatniego (\) w lewo jest zastąpiona wielokropkiem. Ten styl jest używany do wyświetlania ścieżek do plików. $DT_PREFIXONLY - wyświetla podkreślenie w miejscu znaku po prefiksie (&), inne znaki nie są wyświetlane $DT_RIGHT - wyrównanie tekstu do prawej $DT_RTLREADING - tekst od prawej do lewej, tylko dla czcionek arabskich i hebrajskich $DT_SINGLELINE - tekst jest wyświetlany w jednym wierszu, część niemieszcząca się jest przycinana $DT_TABSTOP - $DT_TOP - wyrównanie tekstu do górnej krawędzi prostokąta (tylko tekst w jednej linii) $DT_VCENTER - centrowanie tekstu w pionie (tylko tekst w jednej linii) $DT_WORDBREAK - niemieszczący się wyrazy przenoszone są do następnego wiersza, także znak końca wiersza powoduje jego złamanie, jeżeli $DT_WORDBREAK nie jest użyte to tekst jest zawsze wyświetlany w jednym wierszu $DT_WORD_ELLIPSIS - tnie dowolne słowo, które nie mieści się w prostokącie i dodaje wielokropek Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <WindowsConstants.au3> #include <FontConstants.au3> ;tworzenie struktury $tRECT = DllStructCreate($tagRect) DllStructSetData($tRECT, "Left", 500) DllStructSetData($tRECT, "Top", 250) DllStructSetData($tRECT, "Right", 1100) DllStructSetData($tRECT, "Bottom", 650) ;kontekst do desktopu $hDC = _WinAPI_GetDC(0) ;tworzenie trzcionki logicznej $hFont = _WinAPI_CreateFont(50, 0, 0, 0, 400, False, True, False, _ -1, -1, -1, -1, 0, 'Times New Roman') ;powiązanie czcionki z kontekstem $hOldFont = _WinAPI_SelectObject($hDC, $hFont) ;wypisanie tekstu _WinAPI_DrawText($hDC, "AutoIt is the best!", $tRECT, $DT_CENTER) Sleep(3000) ;zwolnienie zasobów _WinAPI_SelectObject($hDC, $hOldFont) _WinAPI_DeleteObject($hFont) _WinAPI_ReleaseDC(0, $hDC) _WinAPI_InvalidateRect(0, 0) </syntaxhighlight> ===_WinAPI_DrawLine=== #include <WinAPI.au3> _WinAPI_DrawLine($hDC, $iX1, $iY1, $iX2, $iY2) Funkcja rysuje w kontekście odcinek linii prostej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iX1''' i '''$iY1''' - współrzędne, pozioma i pionowa początku odcinka '''$iX2''' i '''$iY2''' - współrzędne, pozioma i pionowa końca odcinka ===_WinAPI_LineTo=== #include <WinAPI.au3> _WinAPI_LineTo($hDC, $iX, $iY) Funkcja rysuje odcinek od bieżącego punktu do punktu o współrzędnych podanych jako parametry. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iX''' i '''$iY''' - współrzędne, pozioma i pionowa końca odcinka ===_WinAPI_MoveTo=== #include <WinAPI.au3> _WinAPI_MoveTo($hDC, $iX, $iY) Funkcja przesuwa aktualną pozycję do określonego punktu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iX''' i '''$iY''' - nowa współrzędne, pozioma i pionowa aktualnego pozycji Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> $hDC = _WinAPI_GetWindowDC(0) ;kontekst do pulpitu ;tworzenie pióra $hPen = _WinAPI_CreatePen($PS_SOLID, 3, 0xFF) ;przypisanie pióra do kontekstu $obj_orig = _WinAPI_SelectObject($hDC, $hPen) _WinAPI_DrawLine($hDC, 400, 300, 1000, 250) $del = 50 ;przesunięcie punktu aktualnego _WinAPI_MoveTo($hDC, 0, @DesktopHeight/2 - $del) For $x = $del To @DesktopWidth Step 50 $y = @DesktopHeight/2 + $del _WinAPI_LineTo($hDC, $x, $y) ;rysowanie linii $del = -$del Next Sleep(4000) ;powrót do pierwotnego pióra _WinAPI_SelectObject($hDC, $obj_orig) ;zwolnienie zasobów _WinAPI_DeleteObject($hPen) _WinAPI_ReleaseDC(0, $hDC) </syntaxhighlight> ===_WinAPI_DrawEdge=== #include <WinAPI.au3> _WinAPI_DrawEdge($hDC, $ptrRect, $nEdgeType, $grfFlags) Funkcja rysuje krawędzie prostokąta. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu kontekst '''$ptrRect''' - wskaźnik do struktury $tagRECT z opisem położenie i wielkości prostokąta '''$nEdgeType''' - określa rodzaj krawędzi $BDR_RAISEDINNER - wypukła wewnętrzna krawędź $BDR_SUNKENINNER - wklęsła wewnętrzna krawędź $BDR_RAISEDOUTER - wypukła zewnętrzna krawędź $BDR_SUNKENOUTER - wklęsła zewnętrzna krawędź $EDGE_BUMP - kombinacja $BDR_RAISEDOUTER i $BDR_SUNKENINNER $EDGE_ETCHED - kombinacja $BDR_SUNKENOUTER i $BDR_RAISEDINNER $EDGE_RAISED - kombinacja $BDR_RAISEDOUTER i $BDR_RAISEDINNER $EDGE_SUNKEN - kombinacja $BDR_SUNKENOUTER i $BDR_SUNKENINNER '''$grfFlags''' - określa rodzaj obramowania. Parametr ten może być kombinacją następujących wartości: $BF_ADJUST - $BF_BOTTOM - dolna krawędź prostokąta $BF_BOTTOMLEFT - dolna i lewa krawędź prostokąta $BF_BOTTOMRIGHT - dolna i prawa krawędź prostokąta $BF_DIAGONAL - przekątna $BF_DIAGONAL_ENDBOTTOMLEFT - przekątna, od prawego-górnego do lewego-dolnego $BF_DIAGONAL_ENDBOTTOMRIGHT - przekątna, od lewego-górnego do prawego-dolnego $BF_DIAGONAL_ENDTOPLEFT - przekątna, od prawego-dolnego do lewego-górnego $BF_DIAGONAL_ENDTOPRIGHT - przekątna, od lewego-dolnego do prawego-górnego $BF_FLAT - obramowanie niewidoczne $BF_LEFT - lewa krawędź prostokąta $BF_MIDDLE - wnętrze prostokąta zamalowane (przekątne nie będą widoczne) $BF_MONO - obramowanie pojedynczą linią (wszystkie elementy jednakową) $BF_RECT - cały obwód od prostokąta $BF_RIGHT - prawa krawędź prostokąta $BF_SOFT - $BF_TOP - górna krawędź prostokąta $BF_TOPLEFT - górna i lewa krawędź prostokąta $BF_TOPRIGHT - górna i prawej krawędź prostokąta Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <BorderConstants.au3> ;tworzenie GUI $hGUI = GUICreate("_WinAPI_DrawEdge", 410, 300) GUISetState() ;kontekst do przestrzeni roboczej okna $hDC = _WinAPI_GetDC($hGUI) ;tworzenie struktury z opisem prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) $ptrRect = DllStructGetPtr($tRect) ;rysowanie prostokąta _WinAPI_DrawEdge($hDC, $ptrRect, $EDGE_RAISED , $BF_RECT) ;przesunięcie prostokąta poprzez zmianę wartości pól w strukturze DllStructSetData($tRect, "Left", 220) DllStructSetData($tRect, "Right", 400) ;rysowanie nowego prostokąta z przekątnymi _WinAPI_DrawEdge($hDC, $ptrRect, $EDGE_BUMP, $BF_DIAGONAL_ENDBOTTOMLEFT) _WinAPI_DrawEdge($hDC, $ptrRect, $EDGE_BUMP, $BF_DIAGONAL_ENDBOTTOMRIGHT) _WinAPI_DrawEdge($hDC, $ptrRect, $EDGE_BUMP, $BF_RECT) ;zwolnienie zasobów _WinAPI_ReleaseDC($hGUI, $hDC) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_DrawFrameControl=== #include <WinAPI.au3> _WinAPI_DrawFrameControl($hDC, $ptrRect, $nType, $nState) Funkcja rysuje elementy kontrolek określonego typu i stylu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$tRect''' - struktura $tagRECT, zawierająca współrzędne prostokąta, w którym będzie wrysowany element '''$nType''' - typ rysowanego elementu. Parametr ten może być jedną z następujących wartości: $DFC_BUTTON - standardowy przycisk $DFC_CAPTION - pasek tytułu $DFC_MENU - pasek menu $DFC_POPUPMENU - element menu podręcznego $DFC_SCROLL - pasek przewijania '''$nState''' - określa początkowy stan ramki kontrolki: ------------------------------------------------------------------------------------ Jeśli $nType jest $DFC_BUTTON to $nState może być jedną z następujących wartości: ------------------------------------------------------------------------------------ $DFCS_BUTTON3STATE - przycisk 3-stanowy $DFCS_BUTTONCHECK - pole wyboru $DFCS_BUTTONPUSH - przycisk $DFCS_BUTTONRADIO - przycisk radio $DFCS_BUTTONRADIOIMAGE - Obraz dla przycisku opcji ( nonsquare potrzebuje obrazu ) $DFCS_BUTTONRADIOMASK - Maska dla przycisku opcji ( nonsquare potrzebuje maski ) ------------------------------------------------------------------------------------ Jeśli $nType jest $DFC_CAPTION , $nState może być jedną z następujących wartości: ------------------------------------------------------------------------------------ $DFCS_CAPTIONCLOSE - przycisk Zamknij $DFCS_CAPTIONHELP - przycisk Help $DFCS_CAPTIONMAX - przycisk Maksymalizuj $DFCS_CAPTIONMIN - przycisk Minimalizuj $DFCS_CAPTIONRESTORE - przycisk Restore ------------------------------------------------------------------------------------ Jeśli $nType jest $DFC_MENU , $ nState może być jedną z następujących wartości : ------------------------------------------------------------------------------------ $DFCS_MENUARROW - strzałka w prawo (rozwijanie podmenu) $DFCS_MENUARROWRIGHT - strzałka w lewo $DFCS_MENUBULLET - kropka $DFCS_MENUCHECK - zaznaczenia ------------------------------------------------------------------------------------ Jeśli $nType jest $DFC_SCROLL , $nState może być jedną z następujących wartości : ------------------------------------------------------------------------------------ $DFCS_SCROLLCOMBOBOX - strzałka w dół (pasek przewijania Combo box) $DFCS_SCROLLDOWN - strzałka w dół z paska przewijania $DFCS_SCROLLLEFT - strzałka w lewo z paska przewijania $DFCS_SCROLLRIGHT - Strzałka w prawo z paska przewijania $DFCS_SCROLLSIZEGRIP - uchwyt zmiany wielkości okna (prawy) $DFCS_SCROLLSIZEGRIPRIGHT - uchwyt zmiany wielkości okna (lewy) $DFCS_SCROLLUP - strzałka w górę z paska przewijania ------------------------------------------------------------------------------------ Następujących wartości mogą być dodane w celu ustawienia stanu elementu: ------------------------------------------------------------------------------------ $DFCS_CHECKED - przycisk jest zaznaczony $DFCS_FLAT - przycisk z płaskim obramowaniem $DFCS_INACTIVE - przycisk jest nieaktywny (szary) $DFCS_PUSHED - przycisk jest wciśnięty Przykład: <syntaxhighlight lang="autoit"> #include <FrameConstants.au3> #include <GUIConstantsEx.au3> #include <WinAPI.au3> ;tworzenie GUI $hGUI = GUICreate("_WinAPI_DrawFrameControl", 300, 300) GUISetState() $hDC = _WinAPI_GetDC($hGUI) $tRect = DllStructCreate($tagRECT) $ptrRect = DllStructGetPtr($tRect) $DFC = $DFC_CAPTION ;elementy paska tytułu SetPosSize($tRect, 20, 25, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_CAPTIONCLOSE) SetPosSize($tRect, 50, 25, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_CAPTIONHELP + $DFCS_INACTIVE) SetPosSize($tRect, 80, 25, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_CAPTIONMIN) SetPosSize($tRect, 110, 25, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_CAPTIONRESTORE + $DFCS_PUSHED) $DFC = $DFC_MENU ;elementy menu SetPosSize($tRect, 20, 65, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_MENUARROW) SetPosSize($tRect, 50, 65, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_MENUARROWRIGHT) SetPosSize($tRect, 80, 65, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_MENUBULLET) SetPosSize($tRect, 110, 65, 40, 40) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_MENUCHECK) ;zwolnienie zasobów _WinAPI_ReleaseDC($hGUI, $hDC) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE Func SetPosSize(ByRef $tRect, $x, $y, $w, $h) DllStructSetData($tRect, "Left", $x) DllStructSetData($tRect, "Top", $y) DllStructSetData($tRect, "Right", $x + $w) DllStructSetData($tRect, "Bottom", $y + $h) EndFunc </syntaxhighlight> ===_WinAPI_FillRect=== #include <WinAPI.au3> _WinAPI_FillRect($hDC, $ptrRect, $hBrush) Funkcja zamalowuje prostokąt podanym pędzlem. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$ptrRect''' - wskaźnik do struktury $tagRECT z opisem położenie i wielkości prostokąta '''$hBrush''' - uchwyt do pędzla, lub powiększony o 1 kod jednego z kolorów systemowych. Kody kolorów systemowych od 0 do 30 (np. 13 to kolor wybranej pozycji w kontrolce). Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("WinAPI", 400, 300) $hDC = _WinAPI_GetWindowDC($hGUI) GUISetState() ;tworzenie pędzla (czerwony) $hBrush = _WinAPI_CreateSolidBrush(0x0000FF) ;tworzenie struktury z danymi prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) ;odczyt wskaźnika do struktury $ptrRect = DllStructGetPtr($tRect) ;zamalowanie prostokąta zdefiniowanym pędzlem _WinAPI_FillRect($hDC, $ptrRect, $hBrush) DllStructSetData($tRect, "Left", 210) DllStructSetData($tRect, "Right", 390) ;zamalowanie prostokąta standardowym kolorem _WinAPI_FillRect($hDC, $ptrRect, 29+1) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC($hGUI, $hDC) </syntaxhighlight> ===_WinAPI_FrameRect=== #include <WinAPI.au3> _WinAPI_FrameRect($hDC, $ptrRect, $hBrush) Funkcja rysuje ramkę wokół prostokątnego obszaru za pomocą podanego pędzla. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$ptrRect''' - wskaźnik do struktury $tagRECT z opisem położenie i wielkości prostokąta '''$hBrush''' - uchwyt do pędzla Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("WinAPI", 400, 300) $hDC = _WinAPI_GetWindowDC($hGUI) GUISetState() ;tworzenie pędzla $hBrush = _WinAPI_CreateSolidBrush(0x0000FF) ;tworzenie struktury z danymi prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) ;odczyt wskaźnika do struktury $ptrRect = DllStructGetPtr($tRect) ;rysowanie ramki wokół prostokąta _WinAPI_FrameRect($hDC, $ptrRect, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC($hGUI, $hDC) </syntaxhighlight> ==Ikony i kursory== ===_WinAPI_DrawIcon=== #include <WinAPI.au3> _WinAPI_DrawIcon($hDC, $iX, $iY, $hIcon) Funkcja rysuje ikonę w określonym kontekście urządzenia. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu urządzenia '''$iX''' i '''$iY''' - współrzędne lewego górnego rogu ikony '''$hIcon''' - uchwyt do ikony ===_WinAPI_DrawIconEx=== #include <WinAPI.au3> _WinAPI_DrawIconEx($hDC, $iX, $iY, $hIcon [, $iWidth = 0 [, $iHeight = 0 [, $iStep = 0 [, $hBrush = 0 [, $iFlags = 3]]]]]) Funkcja rysuje ikonę w określonym kontekście urządzenia. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu urządzenia '''$iX''' i '''$iY''' - współrzędne lewego górnego rogu ikony '''$hIcon''' - uchwyt do ikony '''$iWidth''' i '''$iHeight''' - szerokość i wysokość ikony lub kursora, 0 szerokość domyślna '''$iStep''' - indeks kadru animowanego kursora, parametr jest ignorowany gdy ikona nie jest animowanym kursorem '''$hBrush''' - uchwyt pędzla do tworzenia migotania kursora '''$iFlags''' - parametr ten może być jedna z następujących wartości: 1 - rysowanie ikony lub kursora za pomocą maski 2 - rysowanie ikony lub kursora za pomocą obrazu 3 - rysowanie ikony lub kursora za pomocą maski i obrazu ===_WinAPI_LoadShell32Icon=== #include <WinAPI.au3> _WinAPI_LoadShell32Icon($iIconID) Funkcja odczytuje i zwraca uchwyt do ikony z pliku '''Shell32.dll''', lub 0 gdy wystąpił błąd. '''$iIconID''' - ID ikony w pliku '''Shell32.dll''' ===_WinAPI_CopyIcon=== #include <WinAPI.au3> _WinAPI_CopyIcon($hIcon) Funkcja tworzy duplikat ikony. Zwraca uchwyt do duplikatu, lub 0 gdy wystąpił błąd. '''$hIcon''' - uchwyt do kopiowanej ikony ===_WinAPI_DestroyIcon=== #include <WinAPI.au3> _WinAPI_DestroyIcon($hIcon) Funkcja usuwa z pamięci ikonę o podanym uchwycie. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hIcon''' - uchwyt do usuwanej ikony Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> ;tworzenie GUI $hGUI = GUICreate("_WinAPI_DrawIcon", 400, 300) $hDC = _WinAPI_GetDC($hGUI) GUISetState() ;odczyt uchwytu do ikony $hIcon1 = _WinAPI_LoadShell32Icon(4) ;rysowanie ikony _WinAPI_DrawIcon($hDC, 20, 40, $hIcon1) ;tworzenie duplikatu ikony $hIcon2 = _WinAPI_CopyIcon($hIcon1) ;rysowanie ikony _WinAPI_DrawIconEx($hDC, 100, 40, $hIcon2, 160, 160) ;zwolnienie zasobów _WinAPI_ReleaseDC($hGUI, $hDC) _WinAPI_DestroyIcon($hIcon1) _WinAPI_DestroyIcon($hIcon2) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_SetCursor=== #include <WinAPI.au3> _WinAPI_SetCursor($hCursor) Funkcja ustawia kształt kursora. Zwraca uchwyt do poprzedniego kursora (o ile taki istniał), lub gdy nie było kursora. '''$hCursor''' - uchwyt do nowego kursora Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hCursor = 0x1000b $hGUI = GUICreate("_WinAPI_SetCursor", 400, 300) GUISetState() Do _WinAPI_SetCursor($hCursor) Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_GetCursorInfo=== #include <WinAPI.au3> _WinAPI_GetCursorInfo() Funkcja zwraca informacje o kursorze w postaci jednowymiarowej tablicy. Jeżeli wystąpi błąd makro @error<>0. Informacje w zwracanej tablicy: [0] - zawsze True [1] - True jeżeli kursor jest widoczny, w przeciwnym razie False [2] - uchwyt do kursora [3] - współrzędna pozioma kursora (globalna) [4] - współrzędna pionowa kursora (globalna) Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> ;odczyt informacji o kursorze $arr = _WinAPI_GetCursorInfo() ;tekst do wyświetlenia $Cursorinfo = " Zawsze : " & $arr[0] & @LF & _ " Widoczny?: " & $arr[1] & @LF & _ " Uchwyt : " & $arr[2] & @LF & _ " Pozycja X: " & $arr[3] & @LF & _ " Pozycja Y: " & $arr[4] ;tworzenie GUI $hGUI = GUICreate("Kursor", 200, 300) GUICtrlCreateLabel("DANE KURSORA", 58, 20,120,70) GUICtrlCreateLabel("IKONA KURSORA", 58, 150,120,70) $lab = GUICtrlCreateLabel($Cursorinfo, 40, 40,120,70) GUICtrlSetBkColor($lab,0xffff00) $hDC = _WinAPI_GetDC($hGUI) GUISetState() ;rysowanie ikony kursora _WinAPI_DrawIconEx($hDC, 60, 190, $arr[2], 100, 100) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_GetIconInfo=== #include <WinAPI.au3> _WinAPI_GetIconInfo($hIcon) Funkcja zwraca w postaci jednowymiarowej tablicy informacje o określonej ikonie lub kursorze. Jeżeli wystąpi błąd makro @error<>0. Informacje w zwracanej tablicy: [0] - zawsze True [1] - True oznacza ikonę, False kursor [2] - współrzędna pozioma "hot spotu" kursora [3] - współrzędna pionowa "hot spotu" kursora [4] - uchwyt do maski ikony [5] - uchwyt do kolorowej bitmapy ikony Dla ikon "hot spot" jest zawsze w środku ikony. '''$hIcon''' - uchwyt do ikony lub jeden z poniższych kodów (dla W7): 0x10003 - normalna strzałka 0x10005 - pionowy kursor tekstowy (I) 0x10007 - koło (oczekiwanie na zakończenie operacji) 0x10009 - krzyż 0x1000B - strzałka w górę 0x1000D - dwustronna strzałka pochylona w prawo 0x1000F - dwustronna strzałka pochylona w prawo 0x10011 - dwustronna strzałka pozioma 0x10013 - dwustronna strzałka pionowa 0x10015 - krzyż z 4 strzałkami na ramionach 0x10017 - znak "STOP" 0x10019 - strzałka z kółkiem 0x1001B - strzałka ze znakiem zapytania 0x1001D - pióro 0x1001F - rączka 0x10021 - przycisk 0x10023 - strzałka z płytą 0x10025 - ikona aplikacji 0x10027 - ikona aplikacji 0x10029 - ostrzeżenie (wykrzyknik w żółtym trójkącie) 0x1002B - znak zapytania 0x1002D - krzyż w czerwonym kole 0x1002F - informacja (i w niebieskim kole) 0x10031 - ikona aplikacji 0x10033 - tarcza Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $kod=0x00002D ;odczyt informacji o kursorze $arr = _WinAPI_GetIconInfo($kod) ;tekst do wyświetlenia $IconInfo = " KOD=" & $kod & " (" & Ptr($kod) & ")" & @LF & _ "-------------------------------------" & @LF & _ " Zawsze : " & $arr[0] & @LF & _ " Ikona? : " & $arr[1] & @LF & _ " X hot spot : " & $arr[2] & @LF & _ " Y hot spot : " & $arr[2] & @LF & _ " Uchwyt maski: " & $arr[4] & @LF & _ " Uchwyt bitmapy: " & $arr[5] ;tworzenie GUI $hGUI = GUICreate("Kursor", 200, 305) GUICtrlCreateLabel("DANE IKONY", 58, 15,120,70) GUICtrlCreateLabel("WYGLĄD IKONY", 58, 180,120,70) $hLab = GUICtrlCreateLabel($IconInfo, 15, 35,170,135) GUICtrlSetBkColor($hLab,0xffff00) GUISetState() ;odczyt uchwytu do kontekstu przestrzeni roboczej okna $hDC = _WinAPI_GetDC($hGUI) ;rysowanie ikony _WinAPI_DrawIconEx($hDC, 50, 200, $kod, 100, 100) Do Sleep(50) _WinAPI_DrawIconEx($hDC, 50, 200, $kod, 100, 100) Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_ReleaseDC ($hGUI, $hDC) </syntaxhighlight> ===_WinAPI_ShowCursor=== #include <WinAPI.au3> _WinAPI_ShowCursor($fShow) Funkcja włącza/wyłącza wyświetlanie kursora w oknie skryptu. Zwraca nowy stan licznika wyświetlania, 0 - kursor wyświetlany, -1 - kursor ukryty. '''$fShow''' - True - kursor będzie wyświetlany, False - kursor będzie ukryty Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GUIConstantsEx.au3> $iCount = 0 $hGui = GUICreate('Kursor widoczny', 350, 200) $iButton = GUICtrlCreateButton('Schowaj kursor', 10, 10, 330, 28) GUISetState() Do Switch GUIGetMsg() Case $iButton If $iCount Then $iCount = _WinAPI_ShowCursor(True) GUICtrlSetData($iButton, 'Schowaj kursor') WinSetTitle($hGui, '','Kursor widoczny, licznik = ' & $iCount) Else $iCount = _WinAPI_ShowCursor(False) GUICtrlSetData($iButton, 'Pokaż kursor') WinSetTitle($hGui, '','Kursor niewidoczny, licznik = ' & $iCount) EndIf Case $GUI_EVENT_CLOSE Exit EndSwitch Until False </syntaxhighlight> ===_WinAPI_SaveHICONToFile=== #include <WinAPIGdi.au3> _WinAPI_SaveHICONToFile ( $sFilePath, $vIcon [, $bCompress = False [, $iStart = 0 [, $iEnd = -1]]] ) Funkcja zapisuje ikonę na dysku. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''$sFilePath''' - nazwa pliku ze ścieżką dostępu '''$vIcon''' - uchwyt do ikony lub tablica uchwytów ikon (jeżeli plik ma zawierać kolekcję ikon) '''$bCompress''' - określa czy użyć kompresji PNG przy zapisie ikon 32-bitowych. True - tak, False - nie '''$iStart''' - (tylko dla tablicy uchwytów) indeks pierwszej ikony do zapisu na dysku '''$iEnd''' - (tylko dla tablicy uchwytów) indeks ostatniej ikony do zapisu, domyślna wartość -1 oznacza ostatni indeks w tablicy Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> ;#include <WinAPIGdi.au3> nie jest konieczne, gdyż GDIPlus.au3 używa WinAPIGdi.au3 Opt('TrayMenuMode', 3) _GDIPlus_Startup() $sFile = FileOpenDialog("Wybierz obrazek", "", "Obrazy (*.bmp;*.png;*.jpg;*.gif;*.tif)") $hBitmap = _GDIPlus_ImageLoadFromFile($sFile) ;wczytanie bitmapy z dysku $hIcon = _GDIPlus_HICONCreateFromBitmap($hBitmap) ;tworzenie ikony z bitmapy _WinAPI_SaveHICONToFile('MyIcon.ico', $hIcon) ;zapisanie ikony na dysku ;zwolnienie zasobów _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() ;tworzenie menu w tray'u $hMenu = TrayItemGetHandle(0) $idView = TrayCreateItem('Wyświetlenie obrazu ikony') TrayCreateItem('') $idExit = TrayCreateItem('Koniec') TraySetIcon('MyIcon.ico') ;zmiana ikony w tray'u TraySetState() TrayTip("Uwaga", 'Zmiana ikony w tray', 30) Do $idMsg = TrayGetMsg() If $idMsg = $idExit Then Exit if $idMsg = $idView Then SplashImageOn('', $sFile) Sleep(3000) SplashOff() EndIf Until 0 </syntaxhighlight> ==Regiony (Window Regions)== Każde okno w Windows ma zdefiniowany region, który jest widoczny dla użytkownika. Normalnie system operacyjny ustala ten region na całą powierzchnię okna. Istnieją jednak możliwość programowego ograniczenia widocznego obszaru okna poprzez zdefiniowanie własnego regionu. Po za tym regionem okno będzie niewidoczne i przeźroczyste. Samo ustalenie regionu nie ma wpływu na kształt całego okna, więc istnieje możliwość zmiany regonu w czasie działania skryptu. Samo okno nie zmienia się, zmienia się tylko kształt obszaru, w którym to okno jest widoczne. '''UWAGA:''' 1. Wszystkie współrzędne używane do definiowania regionów odnoszą się do całego okna, a nie jego przestrzeni roboczej. 2. Nie należy usuwać uchwytów regionu. System sam usuwa uchwyty, gdy nie są już potrzebne. Poniżej kilka funkcji do operowania regionami. ===_WinAPI_CreateRectRgn=== #include <WinAPI.au3> _WinAPI_CreateRectRgn($iLeftRect, $iTopRect, $iRightRect, $iBottomRect) Funkcja tworzy prostokątny region. Zwraca uchwyt do regionu, lub 0 gdy wystąpił błąd. '''$iLeftRect''' i '''$iTopRect''' - współrzędna lewego górnego narożnika prostokąta '''$iRightRect''' i '''$iBottomRect''' - współrzędna prawego dolnego narożnika prostokąta '''UWAGA:''' 1. Wszystkie współrzędne używane do definiowania regionów odnoszą się do całego okna, a nie jego przestrzeni roboczej. 2. Nie należy usuwać uchwytów regionu. System sam usuwa uchwyty, gdy nie są już potrzebne. ===_WinAPI_CreateRoundRectRgn=== #include <WinAPI.au3> _WinAPI_CreateRoundRectRgn($iLeftRect, $iTopRect, $iRightRect, $iBottomRect, $iWidthEllipse, $iHeightEllipse) Funkcja tworzy prostokątny region z zaokrąglonymi narożnikami. Zwraca uchwyt do regionu, lub 0 gdy wystąpił błąd. '''$iLeftRect''' i '''$iTopRect''' - współrzędna lewego górnego narożnika prostokąta '''$iRightRect''' i '''$iBottomRect''' - współrzędna prawego dolnego narożnika prostokąta '''$iRightRect''' i '''$iBottomRect''' - szerokość i wysokość elipsy tworzącej zaokrąglenia narożników ===_WinAPI_CombineRgn=== #include <WinAPI.au3> _WinAPI_CombineRgn($hRgnDest, $hRgnSrc1, $hRgnSrc2, $iCombineMode) Funkcja tworzy region będący kombinacją dwóch innych regionów. Zwraca typ powstałego regionu, lub 0 gdy wystąpił błąd. Zwracane wartości: $NULLREGION = 1 - region jest pusty $SIMPLEREGION = 2 - pojedynczy prostokąt $COMPLEXREGION = 3 - region kompleksowy zawierający więcej elementów Parametry: '''$hRgnDest''' - uchwyt do nowego regionu o wymiarach odpowiadających kombinacji dwóch pozostałych regionów. Region ten musi być wcześniej zdefiniowany w sposób dowolny, gdyż i tak zostanie nadpisany poprzez referencję. '''$hRgnSrc1''' i '''$hRgnSrc2''' - uchwyty do dwóch regionów, których kombinację tworzymy '''$iCombineMode''' - parametr określający sposób łączenia dwóch regionów. Może być jedną z poniższych wartości: $RGN_AND = 1 - część wspólna $RGN_OR = 2 - suma obu regionów $RGN_XOR = 3 - suma regionów z wyłączeniem części wspólnej $RGN_DIFF = 4 - drugi region odjęty od pierwszego $RGN_COPY = 5 - kopia pierwszego regionu ===_WinAPI_SetWindowRgn=== #include <WinAPI.au3> _WinAPI_SetWindowRgn($hWnd, $hRgn [, $bRedraw]) Funkcja aktywuj region o podanym uchwycie. Zwraca liczbę <>0 gdy sukces, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, którego dotyczyć będzie aktywowany region '''$hRgn''' - uchwyt do zdefiniowanego regionu '''$bRedraw''' - określa czy system ma odświeżyć okno po aktywowaniu regionu Przykład manipulowania regionami: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState(@SW_SHOW) $pos = WinGetPos($hGUI) $width = $pos[2] $height = $pos[3] ;okno normalne Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;region prostokątny $rgn = _WinAPI_CreateRectRgn(10, 10, 200, 200) _WinAPI_SetWindowRgn($hGUI, $rgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;region z zaokrąglonymi narożnikami $rgn = _WinAPI_CreateRoundRectRgn(0, 0, $width, $height,$width, $height) _WinAPI_SetWindowRgn($hGUI, $rgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;region kombinowany $rgn = _WinAPI_CreateRectRgn(0, 0, $width, $height) $rgn1 = _WinAPI_CreateRoundRectRgn(0, 0,200, 200,200, 200) $rgn2 = _WinAPI_CreateRoundRectRgn(220, 100,350,210, 50, 50) _WinAPI_CombineRgn($rgn, $rgn1, $rgn2, 2) _WinAPI_SetWindowRgn($hGUI, $rgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;region kombinowany z przezroczystym tłem $rgn = _WinAPI_CreateRectRgn(0, 0, $width, $height) $rgn2 = _WinAPI_CreateRectRgn(8, 28, 349, 232) $rgn3 = _WinAPI_CreateRectRgn(104, 176, 252, 199) _WinAPI_CombineRgn($rgn, $rgn, $rgn2, 3) _WinAPI_CombineRgn($rgn, $rgn, $rgn3, 2) _WinAPI_SetWindowRgn($hGUI, $rgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit </syntaxhighlight> ===_WinAPI_GetWindowRgn=== #include <WinAPI.au3> _WinAPI_GetWindowRgn($hWnd, $hRgn) Funkcja odczytuje uchwyt do aktualnie ustawionego regionu. Zwraca typ regionu (jak '''_WinAPI_CombineRgn'''), lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, którego region będzie odczytywany '''$hRgn''' - uchwyt do regionu, może być dowolny, gdyż zostanie nadpisany przez referencję odczytywanym regionem okna. Najprościej stworzyć dowolny region funkcją '''_WinAPI_CreateRectRgn'''. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState(@SW_SHOW) ;okno wyjściwe Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;ustalenie regionu _WinAPI_SetWindowRgn($hGUI, _WinAPI_CreateRectRgn(0, 0, 200, 210)) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;tworzenie dowolnego regionu $hrgn = _WinAPI_CreateRectRgn(0, 0, 0, 0) ;odczyt uchwytu aktualnego regionu _WinAPI_GetWindowRgn($hGUI, $hrgn) ;zmiana regionu _WinAPI_SetWindowRgn($hGUI, _WinAPI_CreateRectRgn(0, 0, 200, 20)) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;odtworzenie regionu _WinAPI_SetWindowRgn($hGUI, $hrgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit </syntaxhighlight> ==Funkcje związane z oknami i ekranem== W systemie Windows istnieje wiele różnych typów okien. Okna '''overlapped''' to standardowe okna z ramką i napisem tytułowym. Okna typu '''child''' to okna potomne, wyświetlane w obszarze roboczym swojego okna rodzica. Kiedy przesuwasz po ekranie okno rodzica, to razem z nim przesuwają się wszystkie jego okna-dzieci. Okna typu '''popup''' to również okna potomne, wyświetlane jednak niezależnie od położenia i rozmiarów okna rodzica. Okna potomne znajdują się zawsze nad swoim oknem-rodzicem (nie mogą być przez nie zasłonięte). Również obiekty sterujące typu: przyciski, listbox'y, paski przewijania i inne opisane niżej obiekty są oknami. ===_WinAPI_CreateWindowEx=== #include <WinAPI.au3> _WinAPI_CreateWindowEx($iExStyle, $sClass, $sName, $iStyle, $iX, $iY, $iWidth, $iHeight, $hParent [, $hMenu = 0 [, $hInstance = 0 [, $pParam = 0]]]) Funkcja zwraca uchwyt do tworzonego okna, lub 0 gdy wystąpił błąd. '''$iExStyle''' - rozszerzony styl okna '''$sClass''' - nazwa klasy okna, np.: BUTTON, COMBOBOX, EDIT, LISTBOX, MDICLIENT, SCROLLBAR, STATIC '''$sName''' - nazwa okna '''$iStyle''' - styl okna '''$iX''', '''$iY''' - współrzędne lewego górnego narożnika okna '''$iWidth''', '''$iHeight''' - szerokość i wysokość okna '''$hParent''' - uchwyt okna nadrzędnego '''$hMenu''' - uchwyt do menu lub numer kontrolki '''$hInstance''' - uchwyt instancji '''$pParam''' - parametr używany przy tworzeniu okna MDI (Multiple Document Interface) UWAGA: $iExStyle i $iStyle wg rozdziału [[AutoIt/GUI#Tworzenie okna GUI|AutoIt / GUI / Opis funkcji GUI / Tworzenie okna GUI]]. ===_WinAPI_DestroyWindow=== #include <WinAPI.au3> _WinAPI_DestroyWindow($hWnd) Funkcja niszczy okno o podanym uchwycie. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> $hGui = GUICreate('CreateWindowEx', 240, 60) $hEdit = _WinAPI_CreateWindowEx($WS_EX_CLIENTEDGE, "Edit", "Mały test", _ BitOR($WS_CHILD, $WS_VISIBLE), 10, 10, 140, 22, $hGui) $hButton = _WinAPI_CreateWindowEx($WS_EX_DLGMODALFRAME, "Button", "Przycisk", _ BitOR($WS_CHILD, $WS_VISIBLE), 160, 10, 70, 22, $hGui) GUISetState() Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _WinAPI_DestroyWindow($hEdit) Sleep(1000) _WinAPI_DestroyWindow($hButton) Sleep(1000) </syntaxhighlight> ===_WinAPI_ShowWindow=== #include <WinAPI.au3> _WinAPI_ShowWindow ( $hWnd [, $iCmdShow = 5] ) Funkcja ustawia określony stan wyświetlanego okna. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt okna '''$iCmdShow''' - określa w jaki sposób wyświetlane jest okno: @SW_HIDE - ukrywa okno @SW_MAXIMIZE - maksymalizuje okno @SW_MINIMIZE - minimalizuje okno i aktywuje następne w kolejności wg kolejności nakładania (Z-order) @SW_RESTORE - wyświetla i aktywuje okno @SW_SHOW - wyświetla i aktywuje okno w domyślnej wielkości i położeniu @SW_SHOWDEFAULT - ustawia stan wyświetlania okna w oparciu o SW_flag określonej w strukturze STARTUPINF @SW_SHOWMAXIMIZED - wyświetla i aktywuje zmaksymalizowane okno @SW_SHOWMINIMIZED - wyświetla i aktywuje zminimalizowane okno @SW_SHOWMINNOACTIVE - wyświetla zminimalizowane okno @SW_SHOWNA - wyświetla okno z aktualnymi ustawieniami @SW_SHOWNOACTIVATE - wyświetla w domyślnej wielkości i położeniu @SW_SHOWNORMAL - wyświetla i aktywuje okno ===_WinAPI_RedrawWindow=== #include <WinAPI.au3> _WinAPI_RedrawWindow ( $hWnd [, $tRECT = 0 [, $hRegion = 0 [, $iFlags = 5]]] ) Funkcja aktualizuje określony prostokąt lub region, w obszarze roboczym danego okna. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt okna '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru, parametr jest ignorowany, gdy w $hRegion podano uchwyt do zdefiniowanego regionu aktualizacji '''$hRegion''' - uchwyt do zdefiniowanego regionu aktualizacji, jeżeli $hRegion=0 i $tRect=0 aktualizowany jest cały obszar klienta '''$iFlags''' - flaga definiująca sposób przerysowania okna, może być kombinacją następujących wartości (zdefiniowane w <WindowsConstants.au3>): $RDW_ERASE - Causes the window to receive a WM_ERASEBKGND message when the window is repainted $RDW_FRAME - Causes any part of the nonclient area of the window that intersects the update region to receive a WM_NCPAINT message. $RDW_INTERNALPAINT - Causes a WM_PAINT message to be posted to the window regardless of whether any portion of the window is invalid. $RDW_INVALIDATE - Invalidates $tRECT or $hRegion. If both are 0, the entire window is invalidated. $RDW_NOERASE - Suppresses any pending $WM_ERASEBKGND messages $RDW_NOFRAME - Suppresses any pending $WM_NCPAINT messages $RDW_NOINTERNALPAINT - Suppresses any pending internal $WM_PAINT messages $RDW_VALIDATE - Validates $tRECT or $hRegion $RDW_ERASENOW - Causes the affected windows to receive $WM_NCPAINT and $WM_ERASEBKGND messages, if necessary, before the function returns $RDW_UPDATENOW - Causes the affected windows to receive $WM_NCPAINT, $WM_ERASEBKGND, and $WM_PAINT messages, if necessary, before the function returns. $RDW_ALLCHILDREN - Includes child windows in the repainting operation $RDW_NOCHILDREN - Excludes child windows from the repainting operation ===_WinAPI_InvalidateRect=== #include <WinAPI.au3> _WinAPI_InvalidateRect($hWnd [, $tRect = 0 [, $fErase = True]]) Funkcja powoduje odświeżenie prostokątnego obszaru okna. '''$hWnd''' - uchwyt okna, 0 oznacza cały desktop '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru '''$fErase''' - określa czy ma być kasowane tło okna, True - tło kasowane, False - tło bez zmian Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <GDIPlus.au3> Local $tRect = DllStructCreate($tagRECT) $hGUI = GUICreate("Okno testowe", 400, 450, 200, 200) GUISetState() test_picture() MsgBox(0, "", "Odświerzenie obszaru wewnątrz okna") DllStructSetData($tRect, "Left", 100) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 250) DllStructSetData($tRect, "Bottom", 300) _WinAPI_InvalidateRect($hGui, $tRect) MsgBox(0, "", "Odświerzenie całego okna") _WinAPI_InvalidateRect($hGui, 0) Sleep(3000) Func test_picture() $hGUIDC = _WinAPI_GetDC($hGUI) $hDC = _WinAPI_GetWindowDC(0) _WinAPI_BitBlt($hGUIDC, 0, 0, 400, 450, $hDC, 0, 0, $SRCCOPY) _WinAPI_ReleaseDC (0, $hDC) _WinAPI_ReleaseDC ($hGUI, $hGUIDC) EndFunc </syntaxhighlight> ===_WinAPI_IsWindow=== #include <WinAPI.au3> _WinAPI_IsWindow($hWnd) Funkcja sprawdza czy podany uchwyt jest uchwytem istniejącego okna. Zwraca True gdy jest, lub False gdy nie jest. '''$hWnd''' - sprawdzany uchwyt ===_WinAPI_IsWindowVisible=== #include <WinAPI.au3> _WinAPI_IsWindowVisible($hWnd) Funkcja sprawdza czy podany uchwyt jest uchwytem widocznego okna. Zwraca True gdy jest, lub False gdy nie jest. '''$hWnd''' - sprawdzany uchwyt Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hGui = GUICreate('') MsgBox(0, 'Test 1', _WinAPI_IsWindowVisible($hGui)) GUISetState() MsgBox(0, 'Test 2', _WinAPI_IsWindowVisible($hGui)) </syntaxhighlight> ===_WinAPI_EnumWindows=== #include <WinAPI.au3> _WinAPI_EnumWindows([$fVisible = True [, $hwnd = Default]]) Funkcja zwraca listę wszystkich otwartych okien w postaci dwuwymiarowej tablicy: [0][0] - liczba okien (n) - [1][0] - uchwyt pierwszego okna [1][1] - nazwa klasy pierwszego okna ... [n][0] - uchwyt n-tego okna [n][1] - nazwa klasy n-tego okna '''$fVisible''' - określa które okna mają być uwzględnione, True - tylko widoczne, False - wszystkie '''$hwnd''' - uchwyt do okna startowego, domyślnie jest to pulpit Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $aWindows = _WinAPI_EnumWindows() For $i = 1 To $aWindows[0][0] $text = "Uchwyt okna: " & $aWindows[$i][0] & @LF & @LF $text &= "Klasa okna: " & $aWindows[$i][1] & @LF & @LF $text &= "Nazwa okna: " & WinGetTitle($aWindows[$i][0]) & @LF & @LF $text &= "Tekst w oknie: " & WinGetText($aWindows[$i][0]) & @LF & @LF $text &= "Nr procesu okna: " & WinGetProcess($aWindows[$i][0]) MsgBox(0, "Otwarte okna: " & $i & " of " & $aWindows[0][0], $text) Next </syntaxhighlight> ===_WinAPI_EnumWindowsPopup=== #include <WinAPI.au3> _WinAPI_EnumWindowsPopup() Funkcja zwraca listę wszystkich otwartych okien typu popup w postaci dwuwymiarowej tablicy: [0][0] - liczba okien (n) - [1][0] - uchwyt pierwszego okna [1][1] - nazwa klasy pierwszego okna ... [n][0] - uchwyt n-tego okna [n][1] - nazwa klasy n-tego okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $aWindows = _WinAPI_EnumWindowsPopup() If $aWindows[0][0] = 0 Then MsgBox(0, "Otwarte okna popup: ", "Brak okien popup.") else For $i = 1 To $aWindows[0][0] $text = "Uchwyt okna: " & $aWindows[$i][0] & @LF & @LF $text &= "Klasa okna: " & $aWindows[$i][1] & @LF & @LF $text &= "Nazwa okna: " & WinGetTitle($aWindows[$i][0]) & @LF & @LF $text &= "Tekst w oknie: " & WinGetText($aWindows[$i][0]) & @LF & @LF $text &= "Nr procesu okna: " & WinGetProcess($aWindows[$i][0]) MsgBox(0, "Otwarte okna popup: " & $i & " of " & $aWindows[0][0], $text) Next EndIf </syntaxhighlight> ===_WinAPI_EnumWindowsTop=== #include <WinAPI.au3> _WinAPI_EnumWindowsTop() Funkcja zwraca listę wszystkich otwartych okien najwyższego poziomu w postaci dwuwymiarowej tablicy: [0][0] - liczba okien (n) - [1][0] - uchwyt pierwszego okna [1][1] - nazwa klasy pierwszego okna ... [n][0] - uchwyt n-tego okna [n][1] - nazwa klasy n-tego okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $aWindows = _WinAPI_EnumWindowsTop() For $i = 1 To $aWindows[0][0] $text = "Uchwyt okna: " & $aWindows[$i][0] & @LF & @LF $text &= "Klasa okna: " & $aWindows[$i][1] & @LF & @LF $text &= "Nazwa okna: " & WinGetTitle($aWindows[$i][0]) & @LF & @LF $text &= "Tekst w oknie: " & WinGetText($aWindows[$i][0]) & @LF & @LF $text &= "Nr procesu okna: " & WinGetProcess($aWindows[$i][0]) MsgBox(0, "Otwarte okna: " & $i & " of " & $aWindows[0][0], $text) Next </syntaxhighlight> ===_WinAPI_EnableWindow=== #include <WinAPI.au3> _WinAPI_EnableWindow($hWnd [, $fEnable = True]) Funkcja włącza i wyłącza dostęp myszy i klawiatury do określonego okna i jego kontrolek. Zwraca poprzedni stan okna: True - okno i kontrolki były dostępne False - okno i kontrolki nie były dostępne '''$hWnd''' - uchwyt do okna '''$fEnable''' - True - udostępnienie okna, False - zablokowanie dostępu Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <GUIConstantsEx.au3> $hGui = GUICreate('Okno testowe', 250, 260, 700, -1, $WS_VISIBLE, $WS_EX_TOPMOST) $hButton = GUICtrlCreateButton("Przycisk", 90, 30, 70) _WinAPI_EnableWindow($hGui, False) MsgBox(0x40000, 'Test', 'W tej chwili okno testowe jest niedostępne,' & @LF & 'po naciśnięciu OK zostanie udostępnione.') _WinAPI_EnableWindow($hGui, True) MsgBox(0x40000, 'Test', 'Okno testowe jest dostępne.') </syntaxhighlight> ===_WinAPI_ClientToScreen=== #include <WinAPI.au3> _WinAPI_ClientToScreen($hWnd, ByRef $tPoint) Funkcja przelicza współrzędne obszaru roboczego okna na współrzędne ekranowe (bezwzględne). Zwraca strukturę ze współrzędnymi ekranowymi. Jeżeli wystąpi błąd makeo @error przyjmuje kod błędu. '''$hWnd''' - uchwyt do okna '''$tPoint''' - struktura '''$tagPOINT''' za współrzędnymi przestrzeni roboczej okna. W wyniku działania struktura przez referencję przyjmie dane dla współrzędnych ekranowych, czyli takie same jakie funkcja zwraca. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> ;tworzenie testowego GUI $hwnd = GUICreate("TOkno testowe", 200, 200,400,300) GUISetState() $xc = 0 $yc = 0 ;tworzenie struktury i nadanie wartości $tpoint = DllStructCreate($tagPOINT) DllStructSetData($tpoint, "X", $xc) DllStructSetData($tpoint, "Y", $yc) ;odczyt współrzędnych ekranowych _WinAPI_ClientToScreen($hwnd, $tpoint) $xs = DllStructGetData($tpoint, "X") $ys = DllStructGetData($tpoint, "Y") MsgBox(4096, "_WinAPI_ClientToScreen", "Współrzędne przestrzeni rogoczej okna:" _ & @LF & "Xc = " & $xc & @TAB & @TAB & "Yc = " & $yc & @LF & @LF & _ "Współrzędne ekranu:" & @LF & "Xs = " & $xs & @TAB & @TAB & "Ys = " & $ys & @LF) </syntaxhighlight> ===_WinAPI_ScreenToClient=== #include <WinAPI.au3> _WinAPI_ScreenToClient($hWnd, ByRef $tPoint) Funkcja przelicza współrzędne ekranowe (bezwzględne), na współrzędne obszaru roboczego okna . Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna '''$tPoint''' - struktura '''$tagPOINT''' za współrzędnymi ekranowymi. W wyniku działania struktura przez referencję przyjmie dane dla współrzędnych przestrzeni roboczej okna. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hWnd = GUICreate("Testowe okno", 400, 200) GUISetState() Do $MousePos = MousePos($hWnd) ToolTip("Ekran:" & @LF & "Xs= " & $MousePos[0] & @LF & "Ys= " & $MousePos[1] & @LF _ & @LF & "Okno:" & @LF & "Xc= " & $MousePos[2] & @LF & "Yc= " & $MousePos[3]) Until GUIGetMsg() = $GUI_EVENT_CLOSE Func MousePos($hWnd) Local $MousePos[4], $tPoint = DllStructCreate($tagPOINT) $MousePos[0] = MouseGetPos(0) $MousePos[1] = MouseGetPos(1) DllStructSetData($tPoint, "X", $MousePos[0]) DllStructSetData($tPoint, "Y", $MousePos[1]) ;przeliczenie współrzędnych ekranowych na współrzędne okna _WinAPI_ScreenToClient($hWnd, $tPoint) $MousePos[2] = DllStructGetData($tPoint, "X") $MousePos[3] = DllStructGetData($tPoint, "Y") Return $MousePos EndFunc </syntaxhighlight> ===_WinAPI_GetClientRect=== #include <WinAPI.au3> _WinAPI_GetClientRect($hWnd) Funkcja zwraca współrzędne obszaru roboczego okna w postaci struktury $tagRECT. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna '''UWAGA:''' Zwracane wyniki są we współrzędnych obszaru roboczego więc poszczególne pola struktury zawierają: "Left" - 0 "Right" - szerokość przestrzeni roboczej okna "Top" - 0 "Bottom" - wysokość przestrzeni roboczej okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $tRect = _WinAPI_GetClientRect($hwnd) MsgBox(4096, "Obszar roboczy:", _ "Lewo..: " & DllStructGetData($tRect, "Left") & @LF & _ "Prawo.: " & DllStructGetData($tRect, "Right") & @LF & _ "Góra...: " & DllStructGetData($tRect, "Top") & @LF & _ "Dół....: " & DllStructGetData($tRect, "Bottom")) </syntaxhighlight> ===_WinAPI_GetClientHeight=== #include <WinAPI.au3> _WinAPI_GetClientHeight($hWnd) Funkcja zwraca wysokość obszaru roboczego okna. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $h = _WinAPI_GetClientHeight($hwnd) MsgBox(4096, "Obszar roboczy:", "Wysokość = " & $h) </syntaxhighlight> ===_WinAPI_GetClientWidth=== #include <WinAPI.au3> _WinAPI_GetClientWidth($hWnd) Funkcja zwraca szerokość obszaru roboczego okna. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $w = _WinAPI_GetClientWidth($hwnd) MsgBox(4096, "Obszar roboczy:", "Szerokość = " & $w) </syntaxhighlight> ===_WinAPI_GetWindowRect=== #include <WinAPI.au3> _WinAPI_GetWindowRect($hWnd) Funkcja zwraca współrzędne okna w postaci struktury $tagRECT. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna '''UWAGA:''' Zwracane wyniki są we współrzędnych ekranu. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $tRect = _WinAPI_GetWindowRect($hwnd) MsgBox(4096, "Współrzędnr okna:", _ "Lewo..: " & DllStructGetData($tRect, "Left") & @LF & _ "Prawo.: " & DllStructGetData($tRect, "Right") & @LF & _ "Góra...: " & DllStructGetData($tRect, "Top") & @LF & _ "Dół....: " & DllStructGetData($tRect, "Bottom")) </syntaxhighlight> ===_WinAPI_GetWindowPlacement=== #include <WinAPI.au3> _WinAPI_GetWindowPlacement ( $hWnd ) Funkcja zwraca w postaci struktury $tagWINDOWPLACEMENT informację o umiejscowieniu i wielkości okna na ekranie. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera, a szczegółowe informacje o błędzie można uzyskać wywołując funkcję _WinAPI_GetLastError(). '''$hWnd''' - uchwyt do okna Znaczenie pól struktury $tagWINDOWPLACEMENT: '''"length"''' - wielkość struktury w bajtach '''"flags"''' - określa flagę, która kontroluje pozycję zminimalizowanego okna i metodę, dzięki której okno zostanie przywrócone. Parametr tem może mieć jedną lub więcej z następujących wartości: $WPF_ASYNCWINDOWPLACEMENT | 4 | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- $WPF_RESTORETOMAXIMIZED | 2 | Określa, że przywrócone zostanie zmaksymalizowane okno, niezależnie od tego, czy zostało ono zmaksymalizowane zanim został zminimalizowane. | | To ustawienie jest ważne tylko przy następnym przywróceniu okna. | | Nie zmienia to zachowanie domyślnego (ustalonego przez parametr funkcji WinSetState() lub GUISetState()) . | | Flaga ta jest ważna tylko wtedy, gdy pole "showcmd" ma wartość @SW_SHOWMINIMIZED. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- $WPF_SETMINPOSITION | 1 | Określa, że współrzędne zminimalizowanego okna mogą być zmienione. Flaga ta musi być ustawiona, jeśli współrzędne okna są zmieniane w polu ptMinPosition. '''"showCmd"''' - określa aktualny stan wyświetlania okna @SW_HIDE | 0 | Ukrywa okno. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_MAXIMIZE | 3 | Maksymalizuje okno. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_MINIMIZE | 6 | Minimalizuje okno. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_RESTORE | 9 | Uaktywnia i wyświetla okno. W przypadku, gdy okno jest zminimalizowane lub zmaksymalizowane, system przywraca je do pierwotnego rozmiaru i położenia. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOW | 5 | Uaktywnia okno i wyświetla je w swojej obecnej wielkości i położeniu. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWMAXIMIZED | 3 | Uaktywnia okno i wyświetla je jako zmaksymalizowane. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWMINIMIZED | 2 | Uaktywnia okno i wyświetla je jako zminimalizowane. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWMINNOACTIVE | 7 | Wyświetla okno jako zminimalizowane. W odróżnieniu od @SW_SHOWMINIMIZED okno nie jest uaktywniane. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWNA | 8 | Wyświetla okno w swojej obecnej wielkości i położeniu. W odróżnieniu od @SW_SHOW okno nie jest uaktywniane. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWNOACTIVATE | 4 | Wyświetla okno w swojej najnowszyej wielkości i położeniu. Wartość ta jest podobna do @SW_SHOWNORMAL, z wyjątkiem tego, że okno nie jest aktywne. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWNORMAL | 1 | Uaktywnia i wyświetla okno. W przypadku, gdy okno jest zminimalizowane lub zmaksymalizowane, system przywraca je do swojego pierwotnego rozmiaru i położenia. '''"ptMinPosition"''' - Określa współrzędne lewego górnego narożnika okna, gdy okno jest zminimalizowane. Pole jest 2-elementową tablicą. '''"ptMaxPosition"''' - Określa współrzędne lewego górnego narożnika okna, gdy okno jest zmaksymalizowane. Pole jest 2-elementową tablicą. '''"rcNormalPosition"''' - Określa współrzędne domyślne narożników okna (lewy-górny, prawy-dolny). Pole jest 4-elementową tablicą. ===_WinAPI_SetWindowPlacement=== #include <WinAPI.au3> _WinAPI_SetWindowPlacement ( $hWnd, $tWindowPlacement ) Funkcja ustawia wielkość i współrzędne okna za pomocą struktury $tagWINDOWPLACEMENT. Zwraca True gdy sukces, Lub False gdy wystąpił błąd. Szczegółowe informacje o błędzie można uzyskać wywołując funkcję _WinAPI_GetLastError(). '''$hWnd''' - uchwyt do okna '''$tWindowPlacement''' - struktura z danymi okna. Znaczenie pól struktury jak dla _WinAPI_GetWindowPlacement. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Run("notepad.exe") ;uruchomienie notatnika $hWnd = WinWait("[CLASS:Notepad]") ;oczekiwanie na otwarcie okna notatnika i odczyt uchwytu do niego WinMove($hWnd, "", 256, 256, 400, 400) ;przesunięcie i zmiana rozmiarów okna Sleep(1000) WinSetState($hWnd, "", @SW_MINIMIZE) ;zminimalizowanie okna Sleep(1000) $tRET = _WinAPI_GetWindowPlacement($hWnd) ;odczyt do struktury typu $stWindowPlacement danych o umiejscowieniu okna If @error = 0 Then ;formatowanie danych zodczytanych ze struktury $tagWindowPlacement $sMsg = "Pola struktury $tagWindowPlacement:" & @CRLF & "-----------------------------------------------" & @CRLF $sMsg &= "length = " & $tRET.length & " bajty" & @CRLF $sMsg &= "flags = " & $tRET.flags & @CRLF $sMsg &= "showCmd = " & $tRET.showCmd & @CRLF & @CRLF $sMsg &= "ptMinPosition:" & @CRLF $sMsg &= @TAB & "MinX = " & $tRET.ptMinPosition(1) & @CRLF $sMsg &= @TAB & "MinY = " & $tRET.ptMinPosition(2) & @CRLF & @CRLF $sMsg &= "ptMaxPosition:" & @CRLF $sMsg &= @TAB & "MaxX = " & $tRET.ptMaxPosition(1) & @CRLF $sMsg &= @TAB & "MaxY = " & $tRET.ptMaxPosition(2) & @CRLF & @CRLF $sMsg &= "rcNormalPosition:" & @CRLF $sMsg &= @TAB & "left = " & $tRET.rcNormalPosition(1) & @CRLF $sMsg &= @TAB & "top = " & $tRET.rcNormalPosition(2) & @CRLF $sMsg &= @TAB & "right = " & $tRET.rcNormalPosition(3) & @CRLF $sMsg &= @TAB & "bottom = " & $tRET.rcNormalPosition(4) MsgBox(64, "", $sMsg) ;wprowadzenie za pomocą struktury nowych danych okna notatnika $tRET.rcNormalPosition(1) = 50 ;lewy $tRET.rcNormalPosition(2) = 120 ;górny $tRET.rcNormalPosition(3) = @DesktopWidth - 50 ;prawy $tRET.rcNormalPosition(4) = @DesktopHeight - 120 ;dolny $iRET = _WinAPI_SetWindowPlacement($hWnd, $tRET) WinSetState($hWnd, "", @SW_RESTORE) ;aktywowanie nowych ustawień okna ControlSetText($hWnd, "", "Edit1", "Pełny sukces!") ;wstawienie tekstu do notatnika Sleep(3000) WinKill($hWnd) ;zamknięcie okna notatnika Else MsgBox(16, "", "Błąd!") EndIf </syntaxhighlight> ===_WinAPI_GetWindowHeight=== #include <WinAPI.au3> _WinAPI_GetWindowHeight($hWnd) Funkcja zwraca wysokość okna. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $h = _WinAPI_GetWindowHeight($hwnd) MsgBox(4096, "Okno:", "Wysokość = " & $h) </syntaxhighlight> ===_WinAPI_GetWindowWidth=== #include <WinAPI.au3> _WinAPI_GetWindowWidth($hWnd) Funkcja zwraca szerokość okna. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $h = _WinAPI_GetWindowWidth($hwnd) MsgBox(4096, "Okno:", "Szerokość = " & $h) </syntaxhighlight> ===_WinAPI_SetFont=== #include <WinAPI.au3> _WinAPI_SetFont($hWnd, $hFont [, $fRedraw = True]) Funkcja ustawia czcionkę w oknie o podanym uchwycie. Nie zwraca żadnej wartości. '''$hWnd''' - uchwyt do okna '''$hFont''' - uchwyt do czcionki '''$fRedraw''' - określa czy okno ma być odświeżona w momencie wywołania funkcji, True (domyślnie) - tak, False - nie. Przykład: <syntaxhighlight lang="autoit"> #include <GuiListBox.au3> #include <GuiButton.au3> #include <FontConstants.au3> $hGUI = GUICreate(@ScriptName, 320, 120) $hBtn1 = _GUICtrlButton_Create($hGUI, "Przycisk 1", 10, 10, 300, 34) $hBtn2 = _GUICtrlButton_Create($hGUI, "Przycisk 2", 10, 60, 300, 34) ;definiowanie czcionek $hFont1 = _WinAPI_CreateFont(30, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _ $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Comic Sans MS') $hFont2 = _WinAPI_CreateFont(15, 0, 0, 0, 700) ;ustawienie czcionek _WinAPI_SetFont($hBtn1, $hFont1) _WinAPI_SetFont($hBtn2, $hFont2) GUISetState() Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hFont1) _WinAPI_DeleteObject($hFont2) </syntaxhighlight> ===_WinAPI_GetLayeredWindowAttributes=== #include <WinAPI.au3> _WinAPI_GetLayeredWindowAttributes($hWnd, ByRef $i_transcolor, ByRef $Transparency [, $asColorRef = False]) Funkcja odczytuje atrybuty warstwy okna. Gdy sukces zwraca: 0 - nic nie ustawiono 1 - ustawiony kolor przezroczysty 2 - ustawiona przezroczystość okna 3 - ustawione oba parametry Jeżeli wystąpił błąd zwraca 0, a makro @error zawiera kod błędu. '''$hWnd''' - uchwyt do okna '''$i_transcolor''' - zmienna w której przez referencję funkcja zapisuje kolor przezroczysty '''$Transparency''' - zmienna w której przez referencję funkcja zapisuje stopień przezroczystości okna '''$asColorRef''' - określa format kodu koloru zwracany w $i_transcolor, True - format 0x00bbggrr, False (domyślnie) - format RGB '''UWAGA:''' Wartość 0 zwrócona przez funkcję oznacza błąd tylko wtedy, gdy jednocześnie makro @error ma wartość większą od zera. ===_WinAPI_SetLayeredWindowAttributes=== #include <WinAPI.au3> _WinAPI_SetLayeredWindowAttributes($hWnd, $i_transcolor [, $Transparency = 255 [, $dwFlags = 0x03 [, $isColorRef = False]]]) Funkcja ustawia atrybuty warstwy okna. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd (makro @error = 4 - działanie funkcji nie powiodło się, @extended - dodatkowe dane o przyczynach błędu). '''$hWnd''' - uchwyt do okna '''$i_transcolor''' - kod koloru przezroczystego w formacie RGB (domyślnie) lub 0x00bbggrr, w zależności od parametru $isColorRef (-1 lub Default - kolor domyślny) '''$Transparency''' - stopień przezroczystości okna, 0 - całkowicie przezroczyste, 255 (0xff) - całkowicie nieprzezroczyste '''$dwFlags''' - flaga określająca jakie własności należy ustawić: 1 - ustawić kolor przezroczysty, 2 - ustawić przezroczystość okna, 3 - ustawić oba parametry (domyślne) '''$isColorRef''' - określa format kodu koloru w $i_transcolor, True - format 0x00bbggrr, False (domyślnie) - format RGB Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> Local $transcolor, $alpha ;tworzenie okna demonstracyjnego, warstwowego (styl $WS_EX_LAYERED) $gui = GUICreate("Przezroczystość", 400, 400, -1, -1, -1, $WS_EX_LAYERED) GUISetBkColor(0xABCDEF) ;kolor tła GUI GUICtrlCreateLabel("To jest okno demonstracyjne", 100, 150) ;początkowa przezroczystość okna =0, domyślny kolor przezroczysty _WinAPI_SetLayeredWindowAttributes($gui, -1) GUISetState() ;tworzenie okna kontrolnego $guicontrol = GUICreate("Test WinAPI", 300, 250, 100, 100) $checkTrans = GUICtrlCreateCheckbox("Kolor tła przezroczysty", 10, 10) GUICtrlCreateLabel("Suwak przezroczystości okna", 10, 50) $slidTrans = GUICtrlCreateSlider(10, 70, 200, 30) ;suwak przezroczystości GUICtrlSetLimit($slidTrans, 255, 0) GUICtrlSetData(-1, 255) $Butt = GUICtrlCreateButton("Info", 10, 150, 40) ;przycisk informacji GUISetState() Do $extMsg = GUIGetMsg(1) $msg = $extMsg[0] Switch $extMsg[1] Case $guicontrol Select Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $checkTrans Or $msg = $slidTrans If GUICtrlRead($checkTrans) = $GUI_CHECKED Then ;tło przezroczyste (kolor 0xABCDEF) _WinAPI_SetLayeredWindowAttributes($gui, 0xABCDEF, GUICtrlRead($slidTrans)) Else ;bez przezroczystego tła _WinAPI_SetLayeredWindowAttributes($gui, -1, GUICtrlRead($slidTrans)) EndIf Case $msg = $Butt $info=_WinAPI_GetLayeredWindowAttributes($gui, $transcolor, $alpha) MsgBox(0, "Info", "Kolor przezroczysty: " & Hex($transcolor) & @LF & _ "Stopień przezroczystości: " & $alpha & @LF & _ "Kod ustawień: " & $info) EndSelect Case $gui If $msg = $GUI_EVENT_CLOSE Then Exit EndSwitch Until 0 </syntaxhighlight> ===_WinAPI_UpdateLayeredWindow=== #include <WinAPI.au3> _WinAPI_UpdateLayeredWindow($hWnd, $hDCDest, $pPTDest, $pSize, $hDCSrce, $pPTSrce, $iRGB, $pBlend, $iFlags) Funkcja aktualizacje położenie, wielkość, kształt, treść i przezroczystość okna warstwowego. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do warstwowego okna. Warstwowe okno jest tworzone przez użycie rozszerzonego stylu $WS_EX_LAYERED. '''$hDCDest''' - uchwyt do kontekstu urządzenie na ekranie. '''$pPTDest''' - wskaźnik do struktury $tagPOINT, która określa nową pozycję warstwowego okna. Wartość 0 oznacza, że pozycja okna nie zmienia się. '''$pSize''' - wskaźnik do struktury $tagSIZE, która określa nowy rozmiar warstwowego okna. Wartość 0 oznacza, że rozmiar okna nie zmienia się. '''$hDCSrce''' - uchwyt kontekstu urządzenia na powierzchni, która zawiera warstwowe okno. Uchwyt ten może być uzyskać wywołując funkcję _WinAPI_CreateCompatibleDC. '''$pPTSrce''' - wskaźnik do struktury $tagPOINT, która określa położenie warstwy w kontekście urządzenia. '''$iRGB''' - kod koloru stosowanego przy komponowaniu warstwowego okna. '''$pBlend''' - wskaźnik do struktury $tagBLENDFUNCTION, która określa wartość przezroczystości stosowanej przy komponowania warstwowego okna. '''$iFlags''' - parametr ten może być jedna z następujących wartości: $ULW_ALPHA - użyj $tblend jako funkcji mieszania $ULW_COLORKEY - użyj $iRGB jako kolor przezroczystości $ULW_OPAQUE - rysowanie nieprzezroczystego warstwowego okna Przykład (należy przygotować bitmapy tła okna): <syntaxhighlight lang="autoit"> #include<WindowsConstants.au3> #include<GDIPlus.au3> #include <WinAPI.au3> HotKeySet("{ESC}","_exit_") _GDIPlus_Startup() ;wczytanie bitmap tła okna Global $sGUI=_GDIPlus_ImageLoadFromFile('1.jpg') Global $subGUI=_GDIPlus_ImageLoadFromFile('2.jpg') $hGUI=GUICreate("", 493, 900, -1, 200, -1, $WS_EX_LAYERED) GUISetState() SetBitmap($hGUI,$sGUI,150) Sleep(2000) SetBitmap($hGUI,$subGUI,255) Sleep(1000) ;tworzenie okna potomnego $sb_GUI = GUICreate("", 400, 600, 50, 30, $WS_POPUP, BitOR($WS_EX_MDICHILD, $WS_EX_LAYERED), $hGUI) GUISetBkColor(0x666666, $sb_GUI) $listview = GUICtrlCreateListView("col1 |col2|col3 ", 10, 10, 380, 585) GUICtrlSetBkColor(-1, 0x666666) GUICtrlSetColor(-1, 0xF0F0F0) ;ustawienie koloru przezroczystego _WinAPI_SetLayeredWindowAttributes($sb_GUI, 0x666666) For $i = 0 To 100 ;tworzenie listy testowej GUICtrlCreateListViewItem("Item" & Random(1, 100, 1) & "|" & "Item" & Random(1, 100, 1) & _ "|" & "Item" & Random(1, 100, 1), $listview) Next GUISetState(@SW_SHOW, $sb_GUI) ;wyświetlenie okna potomnego While 1 Sleep(30) WEnd Func _exit_() _GDIPlus_ImageDispose($sGUI) _GDIPlus_ImageDispose($subGUI) _GDIPlus_Shutdown() Exit EndFunc ;funkcja wstawia bitmapę jako tło okna, jednocześnie można zmieniać przezroczystość okna Func SetBitmap($hGUI,$hImage,$iOpacity) Local $hScrDC,$hMemDC,$hBitmap,$hOld,$pSize,$tSize,$pSource,$tSource,$pBlend,$tBlend $hScrDC=_WinAPI_GetDC(0) $hMemDC=_WinAPI_CreateCompatibleDC($hScrDC) $hBitmap=_GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) $hOld=_WinAPI_SelectObject($hMemDC,$hBitmap) $tSize=DllStructCreate($tagSIZE) $pSize=DllStructGetPtr($tSize) DllStructSetData($tSize,"X",_GDIPlus_ImageGetWidth($hImage)) DllStructSetData($tSize,"Y",_GDIPlus_ImageGetHeight($hImage)) $tSource=DllStructCreate($tagPOINT) $pSource=DllStructGetPtr($tSource) $tBlend=DllStructCreate($tagBLENDFUNCTION) $pBlend=DllStructGetPtr($tBlend) DllStructSetData($tBlend,"Alpha",$iOpacity) DllStructSetData($tBlend,"Format", 1) _WinAPI_UpdateLayeredWindow($hGUI,$hScrDC,0,$pSize,$hMemDC,$pSource,0,$pBlend,$ULW_ALPHA) ;zwolnienie zasobów _WinAPI_ReleaseDC(0,$hScrDC) _WinAPI_SelectObject($hMemDC,$hOld) _WinAPI_DeleteObject($hBitmap) _WinAPI_DeleteDC($hMemDC) EndFunc ;SetBitmap </syntaxhighlight> ===_WinAPI_MoveWindow=== #include <WinAPI.au3> _WinAPI_MoveWindow($hWnd, $iX, $iY, $iWidth, $iHeight [, $fRepaint = True]) Funkcja zmienia położenie i rozmiar okna. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna. '''$iX''' i '''$iY''' - nowe współrzędne lewego górnego narożnika okna. '''$iCX''' i '''$iCY''' - nowa szerokość i wysokość okna. '''$fRepaint''' - True - okno potomne jest przerysowywane po przesunięciu lub zmianie wymiarów (wartość domyślna), False - okno nie jest przerysowane. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <Constants.au3> Run('notepad.exe') Sleep(2000) $hGui = WinWait("[CLASS:Notepad]", "", 5) $aOld = WinGetPos($hGUI) Sleep(2000) _WinAPI_MoveWindow ($hGui, 350, 200, 200, 200) ;przesuwanie okna $a = WinGetPos($hGui) For $i=0 To 300 Step 0.01 _WinAPI_MoveWindow ($hGui, $a[1]+$i, $a[1]+$i/2, $a[2], $a[3]) Next ;powiększanie okna $a = WinGetPos($hGui) For $i=0 To 500 Step 0.01 _WinAPI_MoveWindow ($hGui, $a[0], $a[1], $a[2]+$i, $a[3]+$i) Next ;zmniejszanie okna bez zmiany położenia jego środka $a = WinGetPos($hGui) For $i=0 To 350 Step 0.01 _WinAPI_MoveWindow ($hGui, $a[0]+$i, $a[1]+$i, $a[2]-2*$i, $a[3]-2*$i) Next Sleep(1000) ;przywrócenie pierwotnego położenia i rozmiarów okna _WinAPI_MoveWindow ($hGui, $aOld[0], $aOld[1], $aOld[2], $aOld[3]) </syntaxhighlight> Przykład 2 (z oknem potomnym): <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include<WindowsConstants.au3> Local $iX = 50, $iY = 100, $iCX = 300, $iCY = 240, $style = BitOR($WS_CHILD, $WS_VSCROLL) $h = GUICreate ( "Test" , 650 , 600, 300, 300 ) GUICtrlCreateButton(' TEST ', 250, 360, 120, 28) $ch=GUICreate("", $iCX, $iCY, $iX, $iY, $style, -1, $h) GUICtrlCreateButton(' TEST ', 50, 60, 100, 28) GUISetBkColor(0xff0000) GUISetState(@SW_SHOW ,$h) GUISetState(@SW_SHOW ,$ch) Sleep(1000) For $i=0 To 250 Sleep(1) $iX += 1 $iY += 0.5 _WinAPI_MoveWindow ($ch, $iX, $iY, $iCX, $iCY) Next Sleep(3000) </syntaxhighlight> ===_WinAPI_GetDesktopWindow=== #include <WinAPI.au3> _WinAPI_GetDesktopWindow() Funkcja zwraca uchwyt do okna desktopu. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $win = _WinAPI_GetDesktopWindow() MsgBox(0, "Uchwyt desktopu:", $win) </syntaxhighlight> ===_WinAPI_GetWindow=== #include <WinAPI.au3> _WinAPI_GetWindow($hWnd, $iCmd) Funkcja zwraca uchwyt do okna pozostającego w określonym związku z danym oknem. Zwraca 0 gdy wystąpił błąd lub nie istnieje okno o zdefiniowanym związku. '''$hWnd''' - uchwyt do okna '''$iCmd''' - parametr określa zależność między określonym oknem, a oknem, którego uchwyt ma być zwrócony: <Constants.au3>| | Opis --------------------------------------------------------------------------------------------------------- $GW_CHILD | 5 | aktywne okno podrzędne $GW_HWNDFIRST | 0 | najwyżej stojące okno wg kolejności nakładania Z, posiadające to samo okno nadrzędne $GW_HWNDLAST | 1 | najniżej stojące okno wg kolejności nakładania Z, posiadające to samo okno nadrzędne $GW_HWNDNEXT | 2 | okno będące bezpośrednio poniżej danego okna wg kolejności nakładania Z $GW_HWNDPREV | 3 | okno będące bezpośrednio powyżej danego okna wg kolejności nakładania Z $GW_OWNER | 4 | okno nadrzędne danego okna ===_WinAPI_GetForegroundWindow=== #include <WinAPI.au3> _WinAPI_GetForegroundWindow() Funkcja zwraca uchwyt do aktywnego okna, lub 0 gdy wystąpił błąd. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0, "_WinAPI_GetForegroundWindow", _ "Uchwyt do aktywnego okna: " & _WinAPI_GetForegroundWindow()) </syntaxhighlight> ===_WinAPI_GetParent=== #include <WinAPI.au3> _WinAPI_GetParent($hWnd) Funkcja zwraca uchwyt do okna nadrzędnego, lub 0 gdy wystąpił błąd (pełne informacje o błędzie zwraca funkcja _WinAPI_GetLastError()). '''$hWnd''' - uchwyt do okna ===_WinAPI_SetParent=== #include <WinAPI.au3> _WinAPI_SetParent ( $hWndChild, $hWndParent ) Funkcja zmienia okno nadrzędne dla podanego okna potomnego. Zwraca uchwyt do poprzedniego okna nadrzędnego, lub 0 gdy wystąpił błąd (pełne informacje o błędzie zwraca funkcja _WinAPI_GetLastError()). '''$hWndChild''' - uchwyt do okna potomnego. '''$hWndParent''' - uchwyt do nowego okna nadrzędnego, jeżeli =0 to nowym oknem nadrzędnym będzie pulpit. <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> ;tworzenie dwóch okien GUI $hGUI1 = GUICreate("GUI 1", 400, 400, 200, 100) $hGUI2 = GUICreate("GUI 2", 400, 400, 1200, 200) ;tworzenie okna potomnego w oknie GUI 1 $hChild = GUICreate("Okno potomne", 200, 200, 50, 50, BitOR($WS_CHILD, $WS_CAPTION), -1, $hGUI1) ;wyświetlenie okien GUISetState(@SW_SHOW, $hGUI1) GUISetState(@SW_SHOW, $hChild) GUISetState(@SW_SHOW, $hGUI2) MsgBox(64,"","Okno potomne do GUI 2") _WinAPI_SetParent($hChild, $hGUI2) ;zmiana okna nadrzędnego MsgBox(64,"","Okno potomne do GUI 1") _WinAPI_SetParent($hChild, $hGUI1) ;zmiana okna nadrzędnego Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_GetAncestor=== #include <WinAPI.au3> _WinAPI_GetAncestor($hWnd [, $iFlags = 1]) Funkcja zwraca uchwyt okna nadrzędnego, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, którego przodka chcemy uzyskać, jeżeli jest to uchwyt do pulpitu to funkcja zwróci 0 '''$iFlags''' - określa jakiego okna uchwyt chcemy uzyskać: WindowsConstants.au3 | | Opis --------------------------------------------------------------------------------------- $GA_PARENT | 1 | zwraca uchwyt do rodzica obiektu przekazanego jako argument, | | jeżeli pierwszym w kolejności "rodzicem" nie jest | | okno programu lecz inny obiekt, to zwrócony zostanie | | uchwyt do tego obiektu, a nie do okna programu --------------------------------------------------------------------------------------- $GA_ROOT | 2 | zwraca uchwyt do okna obiektu przekazanego jako argument, | | poprzez przejście przez kolejnych "rodziców" (parent) | | wskazanego obiektu, aż natrafi na okno --------------------------------------------------------------------------------------- $GA_ROOTOWNER | 3 | --------------------------------------------------------------------------------------- Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <WindowsConstants.au3> $hWnd = GUICreate("TEST") $hParent = _WinAPI_GetAncestor($hWnd, $GA_PARENT) MsgBox(0, "GetAncestor dla " & $hWnd, _ 'Parent:' & @TAB & @TAB & $hParent & @CRLF & _ 'Root:' & @tab & @tab & _WinAPI_GetAncestor($hWnd, $GA_ROOT) & @CRLF & _ 'Root Owner:' & @tab & _WinAPI_GetAncestor($hWnd, $GA_ROOTOWNER)) </syntaxhighlight> ===_WinAPI_GetWindowLong=== #include <WinAPI.au3> _WinAPI_GetWindowLong($hWnd, $iIndex) Funkcja zwraca informacje o określonym oknie. Jeżeli wystąpi błąd makro @error zwraca kod błędu. '''$hWnd''' - uchwyt do okna '''$iIndex''' - rodzaj zwracanej informacji: <Constants.au3> | | Opis ------------------------------------------------------------------------------------------------ $GWL_EXSTYLE |-20 | rozszerzony styl okna $GWL_HINSTANCE | -6 | uchwyt do instancji programu $GWL_HWNDPARENT | -8 | uchwyt do okna nadrzędnego (jeśli dane okno ma rodzica) $GWL_ID |-12 | identyfikator okna potomnego $GWL_STYLE |-16 | styl okna $GWL_USERDATA |-21 | 32-bitowe dane użytkownika powiązane z oknem. Takie dane są przeznaczone | | do użycia przez program, który utworzył okno. Na początku ta wartość =0. $GWL_WNDPROC | -4 | adres procedury okna ===_WinAPI_SetWindowLong=== #include <WinAPI.au3> _WinAPI_SetWindowLong($hWnd, $iIndex, $iValue) Funkcja ustawia parametry okna o określonym uchwycie. Zwraca poprzednią wartość ustawianego parametru, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna '''$iIndex''' - rodzaj ustawianej informacji (jak dla _WinAPI_GetWindowLong) Przykłąd: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <Constants.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> $hGui = GUICreate('_WinAPI_SetWindowLong', 250, 260) $iButton = GUICtrlCreateButton('Zmiana stylu okna', 10, 10, 120, 28) $iExStyle = $WS_EX_TOOLWINDOW GUISetState() Do Switch GUIGetMsg() Case $iButton $iOldExStyle = _WinAPI_SetWindowLong($hGui, $GWL_EXSTYLE, $iExStyle) $iExStyle = $iOldExStyle GUISetState(@SW_HIDE) GUISetState(@SW_SHOW) Case $GUI_EVENT_CLOSE Exit EndSwitch Until 0 </syntaxhighlight> ===_WinAPI_GetWindowText=== #include <WinAPI.au3> _WinAPI_GetWindowText($hWnd) Funkcja zwraca tytuł z belki okna lub z kontrolki o podanym uchwycie. Jeżeli wystąpił błąd ustawiane jest makro @error. '''$hWnd''' - uchwyt do okna (kontrolki) Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hWin = WinGetHandle("[ACTIVE]") $hGui = GUICreate('Okno testowe') $iButton = GUICtrlCreateButton('Przycisk', 10, 10) GUISetState() MsgBox(0, 'Wyniki:', _ _WinAPI_GetWindowText($hWin) &@CRLF& _ _WinAPI_GetWindowText($hGui) &@CRLF& _ _WinAPI_GetWindowText(GUICtrlGetHandle($iButton))) </syntaxhighlight> ===_WinAPI_SetWindowText=== #include <WinAPI.au3> _WinAPI_SetWindowText($hWnd, $sText) Funkcja wstawia tytuł na belce okna lub kontrolce o podanym uchwycie. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna (kontrolki) '''$sText''' - wstawiany tekst tytułu okna lub kontrolki Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GUIConstantsEx.au3> $hGui = GUICreate('GUI testowy', 350, 260) $iButton = GUICtrlCreateButton('Przycisk', 10, 10, 160, 28) $hButton = GUICtrlGetHandle(-1) GUISetState() Do Switch GUIGetMsg() Case $iButton If _WinAPI_GetWindowText($hButton) = "Przycisk" Then _WinAPI_SetWindowText($hButton, "Klawisz") Else _WinAPI_SetWindowText($hButton, "Przycisk") EndIf $txt = _WinAPI_GetWindowText($hGui) & "!" _WinAPI_SetWindowText($hGui, $txt) Case $GUI_EVENT_CLOSE Exit EndSwitch Until False </syntaxhighlight> ===_WinAPI_GetClassName=== #include <WinAPI.au3> _WinAPI_GetClassName($hWnd) Funkcja zwraca nazwę klasy, do której należy okno. Jeżeli wystąpi błąd ustawiane jest makro @error. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hDesktop = _WinAPI_GetDesktopWindow() ;uchwyt do desktopu MsgBox(0, "Klasa okna desktopu", 'ClassName = "' & _WinAPI_GetClassName($hDesktop) & '"') $hwnd = GUICreate("test") ;uchwyt do okna skryptu $iButton = GUICtrlCreateButton('TEST', 10, 10, 120, 28) MsgBox(0, "Klasa okna skryptu", 'ClassName = "' & _WinAPI_GetClassName($hwnd) & '"') </syntaxhighlight> ===_WinAPI_SetWindowPos=== #include <WinAPI.au3> _WinAPI_SetWindowPos($hWnd, $hAfter, $iX, $iY, $iCX, $iCY, $iFlags) Funkcja zmienia rozmiar, położenie i Z-kolejność okna dziecka, pop-up, lub okna najwyższego poziomu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna. '''$hAfter''' - uchwyt do okna poprzedzającego dane okno w osi Z (znajdującego się bezpośrednio nad nim), lub jedna z poniższych wartości: Wg Constants.au3 | | Opis --------------------------------------------------------------------------------------------------------- $HWND_BOTTOM | 1 | Umieszcza okno na spodzie Z rzędu. --------------------------------------------------------------------------------------------------------- $HWND_NOTOPMOST | -2 | Umieszcza okno poniżej wszystkich okien najwyższego poziomu. Ustawienie tej | | flagi niczego nie zmienia, jeśli okno nie jest oknem najwyższego poziomu. --------------------------------------------------------------------------------------------------------- $HWND_TOP | 0 | Umieszcza okno na wierzchu Z rzędu. --------------------------------------------------------------------------------------------------------- $HWND_TOPMOST | -1 | Umieszcza okno powyżej wszystkich okien, które nie są oknami najwyższego poziomu. | | Okno utrzymuje swój stan okna najwyższego poziomu, nawet gdy jest dezaktywowane. --------------------------------------------------------------------------------------------------------- '''$iX''' i '''$iY''' - nowe współrzędne lewego górnego narożnika okna. '''$iCX''' i '''$iCY''' - nowa szerokość i wysokość okna. '''$iFlags''' - flaga: Wg Constants.au3 | Wartość| Opis ------------------------------------------------------------------------------------------------------------- $SWP_DRAWFRAME | 0x0020 | Rysuje ramkę wokół okna. ------------------------------------------------------------------------------------------------------------- $SWP_FRAMECHANGED | 0x0020 | Zmienia nowe style ramki używając funkcji _SetWindowLong. Wysyła komunikat | | WM_NCCALCSIZE do okna, nawet jeśli jego rozmiar nie zostanie zmieniony. | | Jeśli ta flaga nie jest ustawiona, komunikat WM_NCCALCSIZE jest wysyłany | | tylko podczas zmiany rozmiaru okna. ------------------------------------------------------------------------------------------------------------- $SWP_HIDEWINDOW | 0x0080 | Ukrywa okno. ------------------------------------------------------------------------------------------------------------- $SWP_NOACTIVATE | 0x0010 | Nie pozwala na aktywację okna. ------------------------------------------------------------------------------------------------------------- $SWP_NOCOPYBITS | 0x0100 | Nie kopiuje zawartości obszaru klienta. Jeśli ta flaga nie jest ustawiona, | | poprawna treść obszaru klienta jest zapisywana i kopiowana z powrotem | | do obszaru klienta po zmianie pozycji lub rozmiaru okna. ------------------------------------------------------------------------------------------------------------- $SWP_NOMOVE | 0x0002 | Zachowuje obecną pozycję (ignoruje wartości argumentów $iX i $iY). ------------------------------------------------------------------------------------------------------------- $SWP_NOOWNERZORDER | 0x0200 | Nie zmienia pozycji okna w osi Z. $SWP_NOREPOSITION | | ------------------------------------------------------------------------------------------------------------- $SWP_NOREDRAW | 0x0008 | Nie odrysowuje okna. Jeśli ta flaga jest ustawiona, okno nie jest odmalowywane. | | Kiedy ta flaga jest ustawiona, program musi jawnie odświeżyć lub odrysować | | określone części danego okna oraz okna nadrzędnego. ------------------------------------------------------------------------------------------------------------- $SWP_NOSENDCHANGING| 0x0400 | Zapobiega przechwytywaniu komunikatu WM_WINDOWPOSCHANGING przez dane okno. ------------------------------------------------------------------------------------------------------------- $SWP_NOSIZE | 0x0001 | Zachowuje obecny rozmiar okna (ignoruje argumenty $iCX i $iCY). ------------------------------------------------------------------------------------------------------------- $SWP_NOZORDER | 0x0004 | Zachowuje obecną kolejność elementów w osi Z (ignoruje argument $hAfter). ------------------------------------------------------------------------------------------------------------- $SWP_SHOWWINDOW | 0x0040 | Wyświetla dane okno. ------------------------------------------------------------------------------------------------------------- Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <Constants.au3> $hGui2 = GUICreate('Okno 1', 550, 350, 500, 200) GUISetState() Sleep(1000) $hGui1 = GUICreate('Okno 2', 350, 200, 100, 100) $iButton = GUICtrlCreateButton('TEST', 10, 10, 120, 28) GUISetState() Sleep(1000) ;przesuwanie okna (okno 1 za oknem 2) $a = WinGetPos($hGui1) For $i=0 To 300 Step 0.1 _WinAPI_SetWindowPos ($hGui1, $hGui2, $a[1]+$i, $a[1]+$i/2, $a[2], $a[3], $SWP_DRAWFRAME) Next ;powiększanie okna (okno 1 przed oknem 2) $a = WinGetPos($hGui1) For $i=0 To 500 Step 0.1 _WinAPI_SetWindowPos ($hGui1, $HWND_TOP, $a[0], $a[1], $a[2]+$i, $a[3]+$i, $SWP_DRAWFRAME) Next ;zmniejszanie okna bez zmiany położenia jego środka (okno 1 za oknem 2) $a = WinGetPos($hGui1) For $i=0 To 350 Step 0.1 _WinAPI_SetWindowPos ($hGui1, $hGui2, $a[0]+$i, $a[1]+$i, $a[2]-2*$i, $a[3]-2*$i, $SWP_DRAWFRAME) Next </syntaxhighlight> ===_WinAPI_WindowFromPoint=== #Include <WinAPI.au3> _WinAPI_WindowFromPoint (ByRef $tPoint) Funkcja zwraca uchwyt do okna znajdującego się w punkcie o podanych współrzędnych, lub 0 gdy wystąpił błąd. '''$tPoint''' - struktura $tagPOINT zawierająca współrzędne punktu '''UWAGA:''' Funkcja nie zwraca uchwytu do okien ukrytych lub wyłączonych, nawet gdy punkt znajduje się wewnątrz okna. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> HotKeySet("{ESC}", "Close") ;ESC - koniec programu $tStruct = DllStructCreate($tagPOINT) ;tworzenie struktury Do ToolTip("") ;odczyt współrzednych kursora i zapis do struktury DllStructSetData($tStruct, "x", MouseGetPos(0)) DllStructSetData($tStruct, "y", MouseGetPos(1)) ;odczyt uchwytu do okna pod kursorem $hWnd = _WinAPI_WindowFromPoint($tStruct) ToolTip($hWnd) ;wyświetlenie uchwytu do okna Sleep(100) Until 0 </syntaxhighlight> ===_WinAPI_GetFocus=== #include <WinAPI.au3> _WinAPI_GetFocus() Funkcja zwraca uchwyt do okna (kontrolki) z ustawionym focus'em, lub 0 gdy wystąpił błąd. '''UWAGA:''' '''Focus''' (z ang. skupienie) jest to jeden ze stanów elementu graficznego interfejsu użytkownika. Wszelkie zdarzenia związane z naciskaniem klawiszy przez użytkownika zostaną skierowane właśnie do tego elementu (np.kontrolki). Zazwyczaj w oknach można przenosić focus na następny element za pomocą klawisza TAB (i SHIFT-TAB). Focus jest najczęściej odpowiednio odwzorowany w wyglądzie elementu, np. przycisk dostaje dodatkowe obramowanie, w polu edycyjnym pojawia się migający kursor, itp. ===_WinAPI_SetFocus=== #include <WinAPI.au3> _WinAPI_SetFocus($hWnd) Funkcja ustawia focus dla danego okna (kontrolki). Zwraca uchwyt do okna (kontrolki), które poprzednio miało ustawiony focus, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna (kontrolki), dla której ustawiamy focus Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GUIConstantsEx.au3> $hGui = GUICreate("Focus - okno testowe", 370, 80, -1, 300) $hInput1 = GUICtrlCreateInput("Pole 1", 12, 28, 121, 21) $hInput2 = GUICtrlCreateInput("Pole 2", 232, 28, 121, 21) $hButton1 = GUICtrlCreateButton("<", 148, 24, 27, 25) $hButton2 = GUICtrlCreateButton(">", 184, 24, 27, 25) GUISetState(@SW_SHOW) Sleep(2000) $hFocus = _WinAPI_GetFocus() ;przycisk z focusem MsgBox(0, "Focus na kontrolce:", WinGetTitle($hFocus)) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $hButton1 _WinAPI_SetFocus(GUICtrlGetHandle($hInput1)) Case $hButton2 _WinAPI_SetFocus(GUICtrlGetHandle($hInput2)) EndSwitch WEnd </syntaxhighlight> ===_WinAPI_FlashWindow=== #include <WinAPI.au3> _WinAPI_FlashWindow ( $hWnd [, $bInvert = True] ) Funkcja powoduje pojedyncze mrugnięcie (flash) okna i przycisku na pasku zadań. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, które ma mrugnąć. Okno może być otwarte lub zminimalizowane. '''$bInvert''' - określa sposób zadziałania: True - powoduje mrugnięcie okna i przycisku na pasku zadań, jeżeli okno jest zminimalizowane mruga przycisk i zmienia barwę False - okno i przycisk nie mrugają, jeżeli okno jest zminimalizowane przycisk zmienia barwę bez uprzedniego mrugnięcia Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hWnd = GUICreate("_WinAPI_FlashWindow", 200, 200) $idBtnFlash = GUICtrlCreateButton("Mrugnięcie", 50, 85, 100, 30) GUISetState(@SW_SHOW) While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE Exit Case $iMsg = $idBtnFlash Sleep(2000) _WinAPI_FlashWindow($hWnd) EndSelect WEnd </syntaxhighlight> ===_WinAPI_FlashWindowEx=== #include <WinAPI.au3> _WinAPI_FlashWindowEx ( $hWnd [, $iFlags = 3 [, $iCount = 3 [, $iTimeout = 0]]] ) Funkcja powoduje mrugnie (flash) okna i przycisku na pasku zadań. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. W stosunku do _WinAPI_FlashWindow posiada większe możliwości konfigurowania. '''$hWnd''' - uchwyt do okna, które ma mrugać. Okno może być otwarte lub zminimalizowane. '''$iFlags''' - tryb działania: 0 - mruganie wyłączone, system przywraca okno do stanu pierwotnego 1 - mruganie okna 2 - mruganie przycisku na pasku zadań 4 - mruganie nieprzerwane, aż do zatrzymania 8 - mruga nieprzerwanie, aż okno wyjdzie na pierwszy plan '''$iCount''' - ilość mrugnięć okna '''$iTimeout''' - czas mrugnięcia w milisekundach, 0 - domyślny czas mrugnięcia kursora Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hWnd = GUICreate("_WinAPI_FlashWindowEx", 200, 200) $idBtnFlash = GUICtrlCreateButton("Mrugnięcia", 50, 85, 100, 30) GUISetState(@SW_SHOW) While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE Exit Case $iMsg = $idBtnFlash Sleep(1000) _WinAPI_FlashWindowEx($hWnd, 3, 6) EndSelect WEnd </syntaxhighlight> ==Mysz i klawiatura== ===_WinAPI_GetAsyncKeyState=== #include <WinAPI.au3> _WinAPI_GetAsyncKeyState ( $iKey ) Funkcja sprawdza czy został wciśnięty klawisz o podanym kodzie. Zwraca liczbę dwu bajtową w której: - ustawiony jest najstarszy bit jeżeli dany klawisz jest wciśnięty w momencie wywołania funkcji (wartość -32767) - ustawiony jest najmłodszy bit jeżeli dany klawisz był wciśnięty po poprzednim wywołaniu funkcji _WinAPI_GetAsyncKeyState (wartość 1, na tym rezultacie nie można jednak w 100% polegać) - ma wartość 0 gdy klawisz nie był wciśnięty, lub gdy wystąpił błąd '''$iKey''' - kod klawisza ([http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx MSDN Library - Virtual-Key Codes] '''UWAGA:''' 1. Funkcja rozpoznaje stan klawiszy klawiatury i myszy. 2. Funkcja rozpoznaje tylko klawisze fizyczne, a nie funkcjonalne. Przykładowo lewy klawisz myszy to konstrukcyjnie klawisz z lewej strony urządzenie, a nie klawisz mający funkcję lewego klawisza (w systemie operacyjnym osoba leworęczna można przypisać funkcję lewego klawisza do fizycznego klawisza prawego). Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $iKey = 0x1 ;lewy przycisk myszy Sleep(2000) MsgBox(0, "", _WinAPI_GetAsyncKeyState($iKey)) ;wyświetli -32767 gdy lewy przycisk myszy był wciśnięty w momencie ;wywołania funkcji, 1 gdy wciśniemy na krótko klawisz przed wywołaniem ;funkcji, 0 gdy w ogóle nie wciśniemy lewego klawisza myszy </syntaxhighlight> ===_WinAPI_Mouse_Event=== #include <WinAPI.au3> _WinAPI_Mouse_Event($iFlags [, $iX = 0 [, $iY = 0 [, $iData = 0 [, $iExtraInfo = 0]]]]) Funkcja symuluje ruchy myszy, wciskanie jej przycisków i obracanie kółkiem. Nie zwraca żadnej wartości. '''$iFlags''' - flaga określająca rodzaj symulowanej akcji myszy, może być każdą rozsądną kombinacją następujących wartości: wg Constants.au3 | | opis ------------------------------------------------------------------------------------ $MOUSEEVENTF_ABSOLUTE | 0x8000 | $iX i $iY są współrzędnymi absolutnymi kursora | | w przeciwnym razie są przesunięciami w danej osi ------------------------------------------------------------------------------------ $MOUSEEVENTF_MOVE | 0x0001 | przesunięcie myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_LEFTDOWN | 0x0002 | wciśnięty lewy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_LEFTUP | 0x0004 | zwolniony lewy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_RIGHTDOWN | 0x0008 | wciśnięty prawy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_RIGHTUP | 0x0010 | zwolniony prawy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_MIDDLEDOWN | 0x0020 | wciśnięty środkowy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_MIDDLEUP | 0x0040 | zwolniony środkowy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_WHEEL | 0x0800 | obrócone kółko myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_XDOWN | 0x0080 | wciśnięty X klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_XUP | 0x0100 | zwolniony X klawisz myszy '''$iX''' i '''$iY''' - nowe współrzędne absolutne kursora myszy ($MOUSEEVENTF_ABSOLUTE) lub przesunięcie kursora w odpowiedniej osi '''$iData''' - jeżeli ustawione $MOUSEEVENTF_WHEEL to jest to wielkość obrotu kółka myszy, wartość dodatnia - obrót do przodu, wartość ujemna - obrót do tyłu, jednostkowy obrót kółka to 120, jeżeli $MOUSEEVENTF_WHEEL nie jest ustawione to powinno być $iData = 0 '''$iExtraInfo''' - 32 bitowa wartość związana z myszą '''UWAGA:''' Współrzędne $iX i$iY odnoszą się do wirtualnego ekranu o wymiarach 65535x65535. Aby przeliczyć rzeczywiste współrzędne na wirtualne należy przyjąć: $iX=$x*65535/@DesktopWidth i $y=$y*65535/@DesktopHeight (gdzie $x i $y to rzeczywiste współrzędne ekranowe). Ta sama zasada dotyczy przesunięć przy nie ustawionym $MOUSEEVENTF_ABSOLUTE. Przykład: <syntaxhighlight lang="autoit"> #include <Constants.au3> #include <WinAPI.au3> Local $x = 500, $y = 400 ;przeliczenie współrzędnych na wirtualny ekran $iX = $x * 65535 / @DesktopWidth $iY = $y * 65535 / @DesktopHeight ;przesunięcie myszy _WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE), $iX, $iY) _WinAPI_Mouse_Event($MOUSEEVENTF_RIGHTDOWN) ;wciśnięcie prawego przycisku _WinAPI_Mouse_Event($MOUSEEVENTF_RIGHTUP) ;zwolnienie prawego przycisku </syntaxhighlight> ===_WinAPI_GetMousePos=== #include <WinAPI.au3> _WinAPI_GetMousePos([$fToClient = False [, $hWnd = 0]]) Funkcja zwraca bieżącą pozycję kursora myszy w postaci struktury $tagPOINT. Jeżeli wystąpił błąd ustawiane jest makro @error. '''$fToClient''' - False - współrzędne absolutne ekranu, True - współrzędne przestrzeni roboczej okna '''$hWnd''' - uchwyt do okna, tylko dla $fToClient = True Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hWnd = GUICreate("Okno testowe") GUISetState() $tPoint1 = _WinAPI_GetMousePos() $tPoint2 = _WinAPI_GetMousePos(True, $hWnd) MsgBox(0, "Położenie kursora myszy", _ "We współrzędnych absolutnych:" & @LF & _ "X = " & DllStructGetData($tPoint1, "X") & @LF & _ "y = " & DllStructGetData($tPoint1, "Y") & @LF & @LF & _ "We współrzędnych okna:" & @lf & _ "x = " & DllStructGetData($tPoint2, "X") & @lf & _ "y = " & DllStructGetData($tPoint2, "Y")) </syntaxhighlight> ===_WinAPI_GetMousePosX=== #Include <WinAPI.au3> _WinAPI_GetMousePosX ([$fToClient = False [, $hWnd = 0]]) Funkcja zwraca współrzędną poziomą kursora myszy. Jeżeli wystąpił błąd ustawiane jest makro @error. '''$fToClient''' - False - współrzędne absolutne ekranu, True - współrzędne przestrzeni roboczej okna '''$hWnd''' - uchwyt do okna, tylko dla $fToClient = True ===_WinAPI_GetMousePosY=== #Include <WinAPI.au3> _WinAPI_GetMousePosY ([$fToClient = False [, $hWnd = 0]]) Funkcja zwraca współrzędną poziomą kursora myszy. Jeżeli wystąpił błąd ustawiane jest makro @error. '''$fToClient''' - False - współrzędne absolutne ekranu, True - współrzędne przestrzeni roboczej okna '''$hWnd''' - uchwyt do okna, tylko dla $fToClient = True Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hWnd = GUICreate("Okno testowe") GUISetState() $x1 = _WinAPI_GetMousePosX() $x2 = _WinAPI_GetMousePosX(True, $hWnd) $y1 = _WinAPI_GetMousePosY() $y2 = _WinAPI_GetMousePosY(True, $hWnd) MsgBox(0, "Położenie kursora myszy", _ "We współrzędnych absolutnych:" & @LF & _ "X = " & $x1 & @LF & _ "y = " & $y1 & @LF & @LF & _ "We współrzędnych okna:" & @lf & _ "x = " & $x2 & @lf & _ "y = " & $y2) </syntaxhighlight> ===_WinAPI_EnableWindow=== #include <WinAPI.au3> _WinAPI_EnableWindow ( $hWnd [, $bEnable = True] ) Funkcja blokuje, lub odblokowuje dostęp myszki i klawiatury do określonego okna lub kontrolki. Zwraca True gdy okno (kontrolka) było poprzednio zablokowane, lub Felse gdy było odblokowane. ''$hWnd''' - uchwyt do okna lub kontrolki '''$bEnable''' - rodzaj operacji, True - odblokowanie, False - blokowanie Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("_WinAPI_EnableWindow", 400, 300) $hLab = GUICtrlCreateLabel("", 70, 80,220,70) GUISetState() _WinAPI_EnableWindow ( $hGUI, False) ;zablokowanie dostępu do okna GUICtrlSetData($hLab,"Kursor zablokowany na 5 sekund") Sleep(5000) _WinAPI_EnableWindow ( $hGUI, True) ;odblokowanie dostępu do okna GUICtrlSetData($hLab,"Kursor odblokowany") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_SetCapture=== #include <WinAPI.au3> _WinAPI_SetCapture($hWnd) Funkcja przechwytuje kursor myszki w danym oknie (kursor jest nieaktywny, ikona klepsydry). Zwraca uchwyt do okna, w którym poprzednio był przechwycony kursor, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, w którym zostanie przechwycony kursor ===_WinAPI_ReleaseCapture=== #include <WinAPI.au3> _WinAPI_ReleaseCapture() Funkcja zwalnia przechwytywanie kursora myszki. Zwraca True gdy sukces, lub False gdy wystąpił błąd. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("_WinAPI_SetCapture", 400, 300) $hLab = GUICtrlCreateLabel("KURSOR ZABLOKOWANY - Naciśnij ESC", 70, 80,220,70) GUISetState() Do _WinAPI_SetCapture($hGUI) ;przechwycenie kursora Until GUIGetMsg() = $GUI_EVENT_CLOSE _WinAPI_ReleaseCapture() ;zwolnienie kursora GUICtrlSetData($hLab,"KURSOR ODBLOKOWANY") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ==Pliki i programy== ===_WinAPI_CreateFile=== #include <WinAPI.au3> _WinAPI_CreateFile($sFileName, $iCreation [, $iAccess = 4 [, $iShare = 0 [, $iAttributes = 0 [, $pSecurity = 0]]]]) Funkcja tworzy lub otwiera plik o podanej nazwie. Zwraca otwarty uchwyt pliku, lub 0 gdy wystąpił błąd. '''$sFileName''' - nazwa pliku do utworzenia lub otwarcia '''$iCreation''' - działania odnoszące się do plików, które istnieją lub nie istnieją: 0 - tworzy nowy plik, funkcja nie działa, jeśli plik istnieje 1 - tworzy nowy plik, jeśli plik istnieje, to zostanie nadpisany 2 - otwiera plik, funkcja nie działa, jeśli plik nie istnieje 3 - otwiera plik, jeśli plik nie istnieje, funkcja tworzy plik 4 - otwiera plik i czyści go do rozmiaru 0 bajtów, funkcja nie działa, jeśli plik nie istnieje '''$iAccess''' - dostęp do obiektu: 1 - wykonanie 2 - odczytanie 4 - zapisanie '''$iShare''' - trybu udostępniania obiektu: 1 - usuwanie 2 - czytanie 4 - zapisanie '''$iAttributes''' - atrybuty pliku: 1 - plik archiwalny 2 - Plik ukryty 4 - plik tylko do odczytu 8 - jest częścią lub jest wykorzystywany wyłącznie przez system operacyjny '''$pSecurity''' - wskaźnik do struktury $tagSECURITY_ATTRIBUTES, która ustala, czy zwrócony uchwyt może być dziedziczony przez procesy potomne, jeśli $pSecurity = 0, uchwyt nie może być dziedziczony. ===_WinAPI_ReadFile=== #include <WinAPI.au3> _WinAPI_ReadFile($hFile, $pBuffer, $iToRead, ByRef $iRead [, $pOverlapped = 0]) Funkcja odczytuje dane z pliku. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$sFileName''' - nazwa pliku do utworzenia lub otwarcia '''$pBuffer''' - wskaźnik do bufora do którego będą wczytywane dane '''$iToRead''' - maksymalna liczba bajtów do odczytu '''$iRead''' - liczba odczytanych bajtów '''$pOverlapped''' - wskaźnik do $ tagOVERLAPPED ===_WinAPI_WriteFile=== #include <WinAPI.au3> _WinAPI_WriteFile($hFile, $pBuffer, $iToWrite, ByRef $iWritten [, $pOverlapped = 0]) Funkcja zapisuje w pliku, w położeniu określonym przez wskaźnik. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hFile''' - uchwyt do pliku '''$pBuffer''' - wskaźnik do bufora zawierającego dane do zapisu '''$iToWrite''' - liczba bajtów do zapisu '''$iWritten''' - liczba zapisanych bajtów '''$pOverlapped''' - wskaźnik do $ tagOVERLAPPED ===_WinAPI_SetFilePointer=== #include <WinAPI.au3> _WinAPI_SetFilePointer($hFile, $iPos [, $iMethod = 0]) Funkcja przesuwa wskaźnik pliku o podaną ilość pozycji. Zwraca nowe położenie wskaźnika. Jeżeli wystąpił błąd makro @error <> 0. Wskaźnik pliku to pozycja, od której rozpoczyna się zapis lub odczyt danych w pliku. '''$hFile''' - uchwyt do pliku '''$iPos''' - ilość bajtów, o które zostanie przesunięty wskaźnik pliku, wartość dodatnia oznacza przesunięcie w kierunku końca pliku, ujemna w kierunku początku (maksymalna wartość 2^32) '''$iMethod''' - początkowa pozycja wskaźnika, może to być jedna z następujących wartości: 0 - początek pliku (domyślnie) 1 - aktualne położenie wskaźnika 2 - koniec pliku '''UWAGA:''' Funkcja może być użyta do odczytu aktualnego położenia wskaźnika. W takim przypadku należy podać $iPos = 0 i $iMethod = 1. ===_WinAPI_SetEndOfFile=== #include <WinAPI.au3> _WinAPI_SetEndOfFile($hFile) Funkcja ustawia fizyczny rozmiar podanego pliku w bieżącej pozycji wskaźnika pliku. Zwraca True gdy sukces, lub False gdy wystąpił błąd (makro @extended zawiera kod błędu, taki jak zwracany przez _WinAPI_GetLastError). '''$hFile''' - uchwyt do pliku '''UWAGA:''' Funkcja ta może być użyta do zmniejszenia lub zwiększenia plik, a więc do ustawienia jego rozmiaru. Jeśli plik jest zwiększany zawartość pomiędzy starym i nowym końcem pliku nie jest zdefiniowana. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $nBytes, $sFile = 'test.txt' $sTxt1 = 'abcdefghijklmnopqrstuvwxyz' & @LF & '1234567890' $len1 = StringLen($sTxt1) $tBuffer = DllStructCreate("char[" & $len1 & "]") DllStructSetData($tBuffer, 1, $sTxt1) ;tworzenie struktury z danymi ;tworzenie pliku tekstowego $hFile = _WinAPI_CreateFile($sFile, 1) ;utworzenie pliku _WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), $len1, $nBytes) _WinAPI_CloseHandle($hFile) ;zamknięcie pliku MsgBox(0,"Test 1", FileRead($sFile)) ;odczyt 6 znaków z pliku, poczynając od poz. 3 $tBuffer = DllStructCreate("char[6]") $hFile = _WinAPI_CreateFile($sFile, 2, 2) ;otwarcie pliku do odczytu _WinAPI_SetFilePointer($hFile, 3) ;wskaźnik na poz. 3 _WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes) ;odczyt 6 bajtów _WinAPI_CloseHandle($hFile) MsgBox(0,"Test 2", DllStructGetData($tBuffer, 1)) ;wstawienie do pliku nowych danych 6 znaków od poz. 30 $sTxt2 = "#####" $len2 = StringLen($sTxt2) $tBuffer = DllStructCreate("char[" & $len2 & "]") DllStructSetData($tBuffer, 1, $sTxt2) $hFile = _WinAPI_CreateFile($sFile, 2, 4) _WinAPI_SetFilePointer($hFile, 28) _WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), $len2, $nBytes) _WinAPI_CloseHandle($hFile) MsgBox(0,"Test 3", FileRead($sFile)) ;skrócenie pliku na poz. 29 $hFile = _WinAPI_CreateFile($sFile, 2, 4) _WinAPI_SetFilePointer($hFile, 29) ;wskaźnik na poz. 29 _WinAPI_SetEndOfFile($hFile) ;ustawienie końca pliku _WinAPI_CloseHandle($hFile) MsgBox(0,"Test 4", FileRead($sFile)) </syntaxhighlight> ===_WinAPI_GetFileSizeEx=== #include <WinAPI.au3> _WinAPI_GetFileSizeEx($hFile) Funkcja zwraca wielkość pliku. Jeżeli wystąpi błąd ustawiane jest makro @error. '''$hFile''' - uchwyt do pliku ===_WinAPI_GetOpenFileName=== #include <WinAPI.au3> _WinAPI_GetOpenFileName ( [$sTitle = "" [, $sFilter = "All files ( *.* ) " [, $sInitalDir = "." [, $sDefaultFile = "" [, $sDefaultExt = "" [, $iFilterIndex = 1 [, $iFlags = 0 [, $iFlagsEx = 0 [, $hwndOwner = 0]]]]]]]]] ) Funkcja wywołuje systemowy selektor do otwarcia plików. Zwraca jednowymiarową tablicę z danymi wybranych plików. Jeżeli wystąpi błąd (np. nie wybrano żadnego pliku), zwracana jest jednoelementowa tablica zawierająca wartość 0. Zawartość zwracanej tablicy: $Tablica[0] - liczba łańcuchów tekstowych, jest równa ilości wybranych plików + 1 = n $Tablica[1] - ścieżka dostępu do wybranego pliku (plików) $Tablica[2] - nazwa wybranego pliku ... $Tablica[n] - nazwa wybranego pliku '''$sTitle''' - nazwa okna selektora '''$sFilter''' - zestaw filtrów określający jakie pliki będą wyświetlane. Każdy składa się z dwóch elementów. Pierwszym elementem to jego opis, który będzie wyświetlany w oknie selektora, np.: "Pliki tekstowe". Drugi element filtru opisuje maskę ​​pliku, np.: "*.txt". Aby opisać zestaw masek w jednym filtrze, należy rozdzielić je znakiem średnika (;), np.: "(*.TXT;*.DOC;*.BAK)". Maska może być kombinacją zwykłych znaków i symboli wieloznacznych (* - dowolna ilość dowolnych znaków, ? - jeden dowolny znak), np.: "a*.???" oznacza dowolną nazwę zaczynająca się na a, i dowolne 3-literowe rozszerzenie nazwy. Nie należy używać spacji w masce. Filtry można łączyć w zestawy rozdzielając poszczególne składniki znakiem pionowej kreski (|). Pełny zestaw filtrów może wyglądać np. tak: '''"Pliki Graficzne (*.bmp;*.jpg;*.gif) | Pliki tekstowe (*.txt) | Pliki audio (*.MP3;*.Wav;*.WMA)"''' '''$sInitalDir''' - początkowy folder, kropka (".") oznacza folder bieżący uruchomionego skryptu (wartość domyślna). '''$sDefaultFile''' - wyjściowa nazwa pliku, która będzie wyświetlona w polu "Nazwa pliku:", domyślnie jest string pusty czyli brak nazwy. '''$sDefaultExt''' - wyjściowe rozszerzenie nazwy pliku, domyślnie jest string pusty czyli brak wyjściowego rozszerzenia. '''$iFilterIndex''' - numer filtru, który będzie aktywny po wywołaniu selektora '''$iFlags''' - flaga, pełny opis w dokumentacji AutoIt'a, jak dla struktury $tagOPENFILENAME, np.: $OFN_ALLOWMULTISELECT = 0x80000 - możliwość wybrania większej ilości plików, $OFN_EXPLORER = 0x200 - selektor w nowym stylu. '''$iFlagsEx''' - flaga rozszerzona, pełny opis w dokumentacji AutoIt'a, jak dla struktury $tagOPENFILENAME. '''$hwndOwner''' - uchwyt do okna nadrzędnego Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $aFile = _WinAPI_GetOpenFileName( "Test selektora plików", _ "Pliki grafiki(*.jpg;*.bmp;*.gif) | Skrypt(*.au3)", _ "", "", "", 1, BitOR($OFN_ALLOWMULTISELECT, $OFN_EXPLORER)) $iFile = (UBound($aFile)>1 ? $aFile[0]-1 : 0) $txt = "Ilość wybranych plików: " & $iFile If $iFile Then $txt &= @LF & "Ścieżka do plików: " & $aFile[1] For $i = 1 To $iFile $txt &= @LF & "Nazwa pliku " & $i & ": "& $aFile[$i + 1] Next EndIf MsgBox(0, "Wybrane pliki", $txt) </syntaxhighlight> ===_WinAPI_GetSaveFileName=== #include <WinAPI.au3> _WinAPI_GetSaveFileName ( [$sTitle = "" [, $sFilter = "All files ( *.* ) " [, $sInitalDir = "." [, $sDefaultFile = "" [, $sDefaultExt = "" [, $iFilterIndex = 1 [, $iFlags = 0 [, $iFlagsEx = 0 [, $hwndOwner = 0]]]]]]]]] ) Funkcja wywołuje systemowy selektor do zapisywania pliku. Zwraca jednowymiarową tablicę z danymi wybranego pliku. Jeżeli wystąpi błąd (np. nie wybrano żadnego pliku), zwracana jest jednoelementowa tablica zawierająca wartość 0. Zawartość zwracanej tablicy: $Tablica[0] - liczba łańcuchów tekstowych, 2 jeśli wybrano plik $Tablica[1] - ścieżka dostępu do wybranego pliku $Tablica[2] - nazwa wybranego pliku Wszystkie parametry jak dla '''_WinAPI_GetOpenFileName'''. ===_WinAPI_FlushFileBuffers=== #include <WinAPI.au3> _WinAPI_FlushFileBuffers($hFile) Funkcja powoduje zapisanie buforowanych danych do pliku. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hFile''' - uchwyt do pliku ===_WinAPI_FindExecutable=== #include <WinAPI.au3> _WinAPI_FindExecutable($sFileName [, $sDirectory = ""]) Funkcja zwraca ścieżkę do programu (pliku wykonywalnego) skojarzonego z określonym plikiem, lub pusty string gdy wystąpił błąd (w @error ustawiony jest kod błędu). '''$sFileName''' - pełna ścieżka do istniejącego pliku '''$sDirectory''' - ścieżka do domyślnego katalogu Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $sPath = FileOpenDialog("Wybierz plik", @mydocumentsdir, "Wszystkie (*.*)", 1 + 2) If Not @error Then MsgBox(0, "Aplikacja skojarzone z plikiem", "Plik: " & @LF & $sPath & @LF & @LF & _ "Skojarzona aplikacja: " & @lf & _WinAPI_FindExecutable($sPath)) EndIf </syntaxhighlight> ===_WinAPI_GetModuleHandle=== #include <WinAPI.au3> _WinAPI_GetModuleHandle ( $sModuleName ) Funkcja zwraca uchwyt dla określonego modułu. Moduł musi być ładowany przez proces wywołujący. Gdy wystąpił błąd zwracane jest 0. '''$sModuleName''' - nazwa załadowanego modułu (*.dll lub *.exe). Jeżeli pominiemy rozszerzenie to domyślnie zostanie przyjęte jako .dll. Jeżeli moduł nie posiada rozszerzenia, to nazwę należy zakończyć kropką (np. moj_modul.). Wartość NULL zamiast nazwy oznacza, że zostanie zwrócony uchwyt do własnego procesu (skryptu). ==Powiadomienia i komunikaty== ===_WinAPI_MessageBeep=== #include <WinAPI.au3> _WinAPI_MessageBeep([$iType = 1]) Funkcja odtwarza określony dźwięk systemowy. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$iType''' - kod dźwięku 0 - normalny sygnał 1 - OK 2 - błąd 3 - pytanie 4 - wykrzyknik 5 - gwiazdka Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0,"Test dźwiękowy", "0 - Normalny dźwięk") _WinAPI_MessageBeep(0) MsgBox(0,"Test dźwiękowy", "1 - OK") _WinAPI_MessageBeep(1) MsgBox(0,"Test dźwiękowy", "2 - błąd") _WinAPI_MessageBeep(2) MsgBox(0,"Test dźwiękowy", "3 - pytanie") _WinAPI_MessageBeep(3) MsgBox(0,"Test dźwiękowy", "4 - wykrzyknik") _WinAPI_MessageBeep(4) MsgBox(0,"Test dźwiękowy", "5 - gwiazdka") _WinAPI_MessageBeep(5) </syntaxhighlight> ===_WinAPI_FatalAppExit=== #include <WinAPI.au3> _WinAPI_FatalAppExit ( $sMessage ) Funkcja wyświetla okno komunikatu i kończy działanie skryptu. Nie zwraca żadnej wartości. '''UWAGA:''' Używać _WinAPI_FatalAppExit tylko wtedy, gdy nie ma możliwości zakończenia skryptu w inny sposób. Funkcja może nie zwolnić całej pamięci używanej przez skrypt oraz nie zamknąć wszystkich używanych przez niego plików. Może to spowodować ogólną awarię systemu. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> _WinAPI_FatalAppExit ("To już konic!") MsgBox(0, "???", "To i tak się nie wyświetli!") </syntaxhighlight> ===_WinAPI_ShowError=== #include <WinAPI.au3> _WinAPI_ShowError($sText [, $fExit = True]) Funkcja wyświetla okienko powiadomienia o błędzie i generuje stosowny sygnał dźwiękowy. Nie zwraca żadnej wartości. '''$sText''' - treść powiadomienia '''$fExit''' - określa czy działanie skryptu ma być przerwane po zamknięciu okienka, True - tak, False - nie Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> _WinAPI_ShowError('Wystąpił przerażający błąd!', False) MsgBox(4096, 'Bardzo ważna informacja!', 'Mimo wszystko próbujmy działąć dalej.') _WinAPI_ShowError('Błąd jeszcze straszniejszy!') MsgBox(4096, 'Nie ma co pisać, i tak się nie wyświetli', '') </syntaxhighlight> ===_WinAPI_ShowMsg=== #include <WinAPI.au3> _WinAPI_ShowMsg($sText) Funkcja wyświetla okienko informacyjne i generuje stosowny sygnał dźwiękowy. Nie zwraca żadnej wartości. '''$sText''' - treść powiadomienia Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> _WinAPI_ShowMsg('To jest bardzo ważna informacja!') </syntaxhighlight> ===_WinAPI_MsgBox=== #include <WinAPI.au3> _WinAPI_MsgBox($iFlags, $sTitle, $sText) Funkcja wyświetla okienko komunikatu. Nie zwraca żadnej wartości. '''$iFlags''' - flaga (jak dla MsgBox) '''$sTitle''' - tekst na belce '''$sText''' - tekst wewnątrz okienka '''UWAGA:''' Funkcja jest bardzo podobna do '''MsgBox'''. Różnicą jest to, że nie można ustalić czasu, po którym okno automatycznie się zamknie. Ponieważ funkcja nie zwraca żadnej wartości, używanie flagi o większej ilości przycisków jest pozbawione sensu (nie można rozpoznać, który przycisk został użyty). W odróżnieniu od '''MsgBox''', '''_WinAPI_MsgBox''' powoduje automatyczne odblokowanie klawiatury i myszy, co ilustruje poniższy przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> BlockInput(1) _WinAPI_MsgBox(64, '_WinAPI_MsgBox', 'Automatyczne odblokowanie') BlockInput(1) MsgBox(64, 'MsgBox', 'Odblokowanie po 3 sek.',3) BlockInput(0) </syntaxhighlight> ===_WinAPI_GetLastError=== #include <WinAPI.au3> _WinAPI_GetLastError ( ) Funkcja zwraca kod ostatniego błędu powstałego w aktualnym wątku. ===_WinAPI_GetLastErrorMessage=== #include <WinAPI.au3> _WinAPI_GetLastErrorMessage ( ) Funkcja zwraca komunikat ostatniego błędu powstałego w aktualnym wątku. ===_WinAPI_SetLastError=== #include <WinAPI.au3> _WinAPI_SetLastError ( $iErrorCode ) Funkcja ustawia kod ostatniego błędu powstałego w aktualnym wątku. '''$iErrorCode''' - kod błędu Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> FileOpen ("ble ble ble") ;próba otwarcia nieistniejącego pliku celem wywołania błędu systemowego MsgBox(64, "Błąd:", _WinAPI_GetLastError() &" - " & _WinAPI_GetLastErrorMessage()) _WinAPI_SetLastError(66) ;"ręczne" ustawienie kodu błędu MsgBox(64, "Błąd:", _WinAPI_GetLastError() &" - " & _WinAPI_GetLastErrorMessage()) </syntaxhighlight> ===_WinAPI_PostMessage=== #include <WinAPI.au3> _WinAPI_PostMessage ( $hWnd, $iMsg, $wParam, $lParam ) Funkcja wysyła komunikat do okna )kontrolki). Zwraca True gdy sukces, lub False gdy wystąpił błąd (informacje o błedzie można odczytać funkcją _WinAPI_GetLastError. '''$hWnd''' - Uchwyt okna (kontrolki) która otrzyma komunikat. Jeśli parametr wynosi 0xFFFF (HWND_BROADCAST),to komunikat zostanie wysłany do wszystkich okien najwyższego poziomu w systemie, włączając w to okna nieaktywne, niewidoczne, pokrywające się i pop-up Komunikat nie jest natomiast wysyłana do okien podrzędnych. '''$iMsg''' - wysyłany komunikat '''$wParam''' - pierwszy parametr komunikatu (zależny od rodzaju komunikatu) '''$lParam''' - drugi parametr komunikatu (zależny od rodzaju komunikatu) Komunikat | Opis | $wParam | $lParam --------------------------------------------------------------------------------------------------------------------- $WM_LBUTTONDBLCLK | Dwukrotne wciśnięcie LPM (dwuklik) | Współrzędne x i y | "" $WM_LBUTTONDOWN | Wciśnięcie i przytrzymanie LPM | Współrzędne x i y | "" $WM_LBUTTONUP | Puszczenie LPM | Współrzędne x i y | "" --------------------------------------------------------------------------------------------------------------------- $WM_MBUTTONDBLCLK | J/w dla środkowego przycisku myszy | Współrzędne x i y | "" $WM_MBUTTONDOWN | | Współrzędne x i y | "" $WM_MBUTTONUP | | Współrzędne x i y | "" --------------------------------------------------------------------------------------------------------------------- $WM_RBUTTONDBLCLK | J/w dla prawego przycisku myszy | | $WM_RBUTTONDOWN | | Współrzędne x i y | "" $WM_RBUTTONUP | | Współrzędne x i y | "" --------------------------------------------------------------------------------------------------------------------- Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> Run("calc.exe") Sleep(1000) WinSetState("Kalkulator", "", @SW_HIDE) Sleep(200) Local $hHandle = ControlGetHandle("Kalkulator", "", "5") Local $iCoordinates = _WinAPI_MakeLong(10,10) For $i=1 To 5 _WinAPI_PostMessage($hHandle, $WM_LBUTTONDOWN, "", $iCoordinates ) _WinAPI_PostMessage($hHandle, $WM_LBUTTONUP, "", $iCoordinates ) Next Sleep(1000) WinSetState("Kalkulator", "", @SW_SHOW) </syntaxhighlight> ==System== ===_WinAPI_CloseHandle=== #include <WinAPI.au3> _WinAPI_CloseHandle($hObject) Funkcja zamyka otwarty uchwyt obiektu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hObject''' - uchwyt obiektu, np. okna, pliku, itp. ===_WinAPI_EnumDisplayDevices=== #include <WinAPI.au3> _WinAPI_EnumDisplayDevices ( $sDevice, $iDevNum ) Funkcja zwraca informacje na temat urządzeń wyświetlających w systemie. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. '''$sDevice''' - nazwa urządzenia. Jeżeli pusta, funkcja zwraca informacje dla kart graficznych. '''$iDevNum''' - numer (indeks) urządzenia Informacje są zwracane w postaci jednowymiarowej tablicy: [1] - True [2] - adapter lub monitor [3] - opis adaptera lub monitora [4] - flaga statusu urządzenia (suma następujących wartości): 1 - urządzenie jest częścią pulpitu 2 - podstawowy pulpit jest na tym urządzeniu, dla systemów z jedną kartą graficzną jest zawsze ustawione, dla systemów z wieloma kartami graficznymi, może być ustawione tylko dla jednej z nich. 4 - wirtualne urządzenie dla usług zdalnego dostępu 8 - urządzenie jest kompatybilne z VGA 16 - urządzenie wymienne, nie jest głównym wyświetlaczem 32 - urządzenie posiada więcej trybów wyświetlania niż wsparcie urządzeń wyjściowych Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $aDev, $i=0, $txt While 1 $aDev = _WinAPI_EnumDisplayDevices("", $i) If Not $aDev[0] Then ExitLoop $txt = "Sukces? " & $aDev[0] & @CRLF $txt &= "Urządzenie (Adapter lub monitor): " & $aDev[1] & @CRLF $txt &= "Opis (Adapter lub monitor): " & $aDev[2] & @CRLF $txt &= "Flaga statusu urządzenia: " & $aDev[3] & @CRLF If BitAND($aDev[3], 32) Then $txt &= @TAB & "- Urządzenie ma więcej trybów wyświetlania niż wsparcie urządzeń wyjściowych" & @CRLF If BitAND($aDev[3], 16) Then $txt &= @TAB & "- Urządzenie wymienne, nie jest głównym wyświetlaczem" & @CRLF If BitAND($aDev[3], 8) Then $txt &= @TAB & "- Urządzenie kompatybilne z VGA" & @CRLF If BitAND($aDev[3], 4) Then $txt &= @TAB & "- Wirtualne urządzenie dla usług zdalnego dostępu" & @CRLF If BitAND($aDev[3], 2) Then $txt &= @TAB & "- Urządzenie podstawowego pulpitu" & @CRLF If BitAND($aDev[3], 1) Then $txt &= @TAB & "- Urządzenie znajduje się w pulpicie" & @CRLF $txt &= "Ciąg identyfikatora Plug and Play: " & $aDev[4] & @CRLF MsgBox(0, "", $txt) $i += 1 WEnd </syntaxhighlight> ===_WinAPI_GlobalMemoryStatus=== #include <WinAPI.au3> _WinAPI_GlobalMemoryStatus ( ) Funkcja zwraca informacje na temat aktualnie dostępnej pamięci operacyjnej. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. Informacje są zwracane w postaci jednowymiarowej tablicy: [0] - procent zajętej pamięci [1] - całkowity rozmiar fizycznej pamięci [2] - rozmiar wolnej pamięci fizycznej [3] - całkowity rozmiar pliku stronicowania [4] - wolny obszar pliku stronicowania [5] - całkowity rozmiar pamięci użytkownika [6] - rozmiar wolnej pamięci użytkownika Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <WinAPI.au3> $aMemInfo = _WinAPI_GlobalMemoryStatus() $sMemInfo = "Procent zajętej pamięci: " & $aMemInfo[0] & "%" & @CRLF & @CRLF & _ "Całkowity rozmiar fizycznej pamięci:" & @TAB & $aMemInfo[1] & @CRLF & @CRLF & _ "Rozmiar wolnej pamięci fizyczne:" & @TAB & $aMemInfo[2] & @CRLF & @CRLF & _ "Całkowity rozmiar pliku stronicowania:" & @TAB & $aMemInfo[3] & @CRLF & @CRLF & _ "Wolny obszar pliku stronicowania:" & @TAB & $aMemInfo[4] & @CRLF & @CRLF & _ "Całkowity rozmiar pamięci użytkownika:" & @TAB & $aMemInfo[5] & @CRLF & @CRLF & _ "Rozmiar wolnej pamięci użytkownika:" & @TAB & $aMemInfo[6] MsgBox(64, "Pamięć operacyjna:", $sMemInfo) </syntaxhighlight> ===_WinAPI_ExpandEnvironmentStrings=== #include <WinAPI.au3> _WinAPI_ExpandEnvironmentStrings ( $sString ) Funkcja zwraca string odpowiadający danej zmiennej środowiskowej. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. '''$sString''' - nazwa zmiennej systemowej Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0, "String zmiennej środowiskowej", "%windir% = " & _ _WinAPI_ExpandEnvironmentStrings("%windir%")) </syntaxhighlight> ===_WinAPI_GetSystemMetrics=== #include <WinAPI.au3> _WinAPI_GetSystemMetrics($iIndex) Funkcja zwraca określoną metrykę lub ustawienie konfiguracji systemu. Jeżeli wystąpił błąd zwracane jest 0. '''$iIndex''' - indeks parametru systemu, który chcemy poznać 0 - szerokość ekranu w pikselach 1 - wysokość ekranu w pikselach 2 - szerokość pionowego paska przewijania w pikselach 3 - wysokość poziomego paska przewijania w pikselach 4 - wysokość paska tytułowego okna w pikselach 5 - szerokość obramowanie okna w pikselach 7 - grubość ramy na obwodzie okna 8 - szerokość pionowej ramki wokół obwodu okna, które ma tytuł, ale nie zmienia swojego rozmiaru 9 - wysokość thumbbox'a na pionowym pasku przewijania 10 - szerokość thumbbox'a na poziomym pasku przewijania 11 - domyślna szerokość ikony w pikselach 12 - domyślna wysokość ikony w pikselach 13 - szerokość kursora w pikselach 14 - wysokość kursora w pikselach 15 - wysokość pojedynczej linii paska menu 16 - szerokość obszaru roboczego dla okna pełnoekranowego 17 - wysokość obszaru roboczego dla okna pełnoekranowego 20 - wysokość pionowego paska przewijania 21 - szerokość poziomego paska przewijania 23 - wartość niezerowa, jeśli znacznie lewego i prawego przycisku myszy zostało zamienione, inaczej 0 28 - minimalna szerokość okna w pikselach 29 - minimalna wysokość okna w pikselach 30 - szerokość przycisku w tytule okna lub na pasku tytułowym 36 - szerokość prostokąta wokół obszaru pierwszego kliknięcia w sekwencji podwójnego kliknięcia. Drugie kliknięcie musi wystąpić w obszarze tego prostokąta, aby uznać dwa kliknięcia za podwójne kliknięcie. 37 - jak 36 lecz dla wysokości prostokąta 43 - liczba przycisków myszy, 0 gdy mysz nie zainstalowana 67 - określa jak system został uruchomiony 0 - normalnie 1 - w trybie awaryjny 2 - w trybie awaryjnym z obsługą sieci ===_WinAPI_SystemParametersInfo=== #include <WinAPI.au3> _WinAPI_SystemParametersInfo($iAction [, $iParam = 0 [, $vParam = 0 [, $iWinIni = 0]]]) Funkcja obiera albo ustawia wartość jednego z parametrów systemu. Funkcja ta może również zaktualizować profil użytkownika podczas ustawiania parametru. Zwraca True gdy sukces lub False gdy wystąpił błąd. ===_WinAPI_GetSysColor=== #include <WinAPI.au3> _WinAPI_GetSysColor($iIndex) Funkcja zwraca kod koloru elementów systemowych okien (w formacie BGR). '''$iIndex''' - kod elementu, którego kolor ma być zwrócony przez funkcję $COLOR_3DDKSHADOW | 21 | ciemny cień elementów trójwymiarowych $COLOR_3DFACE | 15 | kolor tła trójwymiarowych elementów dialogowych $COLOR_3DHILIGHT | 20 | kolor trójwymiarowego elementy ekranu (na krawędzi skierowanej do źródła światła) $COLOR_3DLIGHT | 22 | kolor trójwymiarowe elementy ekranu (na krawędzi skierowaną do źródła światła.) $COLOR_3DSHADOW | 16 | kolor cienia trójwymiarowe elementu ekranu (na krawędzi przeciwległych do źródła światła) $COLOR_ACTIVEBORDER | 10 | granice aktywnego okna $COLOR_ACTIVECAPTION | 2 | aktywny pasek tytułu $COLOR_APPWORKSPACE | 12 | obszar roboczy aplikacji (MDI). $COLOR_BTNTEXT | 18 | kolor tekstu na przycisku $COLOR_CAPTIONTEXT | 9 | kolor tekstu tytułu $COLOR_DESKTOP | 1 | kolor tła pulpitu $COLOR_GRADIENTACTIVECAPTION | 27 | kolor gradientu w prawej stronie tytułu aktywnego okna $COLOR_ACTIVECAPTION | 2 | kolor aktywnego paska tytułu $COLOR_GRADIENTINACTIVECAPTION | 28 |kolor gradientu w prawej stronie tytułu nieaktywnego okna $COLOR_INACTIVECAPTION | 3 | określa lewy kolor boczny $COLOR_GRAYTEXT | 17 | szary tekst (niedostępny) $COLOR_HIGHLIGHT | 13 | pozycja (pozycje) wybrana w kontrolce $COLOR_HIGHLIGHTTEXT | 14 | kolor tekstu elementu (elenentów) wybranego w kontrolce $COLOR_HOTLIGHT | 26 | kolor dla hiperłącza i pozycji "hot-tracked" $COLOR_INACTIVEBORDER | 11 | kolor ramki nieaktywnego okna $COLOR_INACTIVECAPTION | 3 | kolor tytuł nieaktywnego okna $COLOR_INACTIVECAPTIONTEXT | 19 | kolor tekstu w nagłówku nieaktywnego okna $COLOR_INFOBK | 24 | tło tooltip'u $COLOR_INFOTEXT | 23 | tekst na tooltip'ie $COLOR_MENU | 4 | kolor tła menu $COLOR_MENUHILIGHT | 29 | kolor pozycji menu, gdy menu jest płaskie $COLOR_MENUBAR | 30 | kolor tła menu, gdy menu jest płaskie $COLOR_MENUTEXT | 7 | kolor tekstu w menu $COLOR_SCROLLBAR | 0 | szary obszar paska przewijania $COLOR_WINDOW | 5 | kolor tła okna $COLOR_WINDOWFRAME | 6 | kolor ramy okna $COLOR_WINDOWTEXT | 8 | kolor tekstu w oknie ===_WinAPI_SetSysColors=== #include <WinAPI.au3> _WinAPI_SetSysColors($vElements, $vColors) Funkcja ustawia kolor elementów okien. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$vElements''' - kod elementu, lub tablica kodów (kody jak dla '''_WinAPI_SetGetColors''') '''$vColors''' - kod koloru, lub tablica kodów (format BRG) '''UWAGA:''' Zmiana kolorów będzie aktualna nawet po zakończeniu skryptu! Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> GUICreate("Testowy GUI", 300, 200) GUISetState() $xcol = 15 $wincol = _WinAPI_GetSysColor($xcol) ;odczyt koloru _WinAPI_SetSysColors($xcol, 0xff) ;ustawienie nowego koloru MsgBox(0, "Test", "Pierwotny kolor: " & Hex($wincol) & @LF & _ "Nowy kolor : " & Hex(_WinAPI_GetSysColor($xcol))) _WinAPI_SetSysColors($xcol, $wincol) ;odtworzenie pierwotnego koloru </syntaxhighlight> ===_WinAPI_SetDefaultPrinter=== #Include <WinAPI.au3> _WinAPI_SetDefaultPrinter ($Sprinter) Funkcja ustawia domyślną drukarkę dla bieżącego użytkownika na komputerze lokalnym. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$Sprinter''' - domyślna nazwa drukarki. Do zdalnego wydruku nazwa ma postać: "\\server\NazwaDrukarki", dla drukarki lokalnej: "NazwaDrukarki". Jeśli tym parametrem jest "" (pusty string), to funkcja nie robi nic, o ile drukarka domyślna jest już zdefiniowana. Jednakże, jeśli domyślna drukarka nie jest dostępna, to funkcja sprawia, że ​​pierwsza na liście drukarek będzie ustawiona jako domyślna (o ile jest jakaś drukarka na liście). ==Haki== Hak (ang. hook) - mechanizm pozwalający na przechwytywanie określonych wiadomości systemowych zanim dotrą do docelowej aplikacji. Wyróżniamy dwa typy haków: - lokalne (thread hooks) – pozwalają przechwytywać wiadomości skierowane do określonego wątku, - globalne (system-wide hooks) – pozwalają przechwytywać wszystkie wiadomości danego typu wysyłane przez system. Haki można podpiąć do wielu wiadomości systemowych. Podczas wystąpienia którejś z nich (np. wciśnięcie klawisza, tworzenie okna...) Windows sprawdza czy istnieją zarejestrowane dla niej haki. Jeżeli tak – normalne operacje związane z wykonaniem zadania zostają zawieszone i kontrolę nad zdarzeniem przejmuje funkcja haka. Do niej należy przekazanie sterowania do kolejnych haków oraz poprawne przetworzenia wiadomości. W przypadku zarejestrowania więcej niż jednego haka dla danego zdarzenia zostaje budowany tzw. łańcuch haków („hook chain”). Jest to struktura typu LIFO - funkcja zarejestrowana najpóźniej otrzymuje możliwość działania jako pierwsza. Co z tego wynika? Hak zainstalowany jako ostatni może skutecznie ograniczyć wcześniejszym dostęp do informacji. System operacyjny odzyskuje kontrolę po zakończeniu działania wszystkich haków. Haki mają wiele zastosowań. Programy antywirusowe mogą instalować swoje haki aby przechwytywać otrzymywane/wysyłane e-maile i sprawdzać ich bezpieczeństwo. Keyloggery gromadzą wciśnięcia wszystkich klawiszy. Nic nie stoi na przeszkodzie, aby nasz system wzbogadcić o obsługę gestów myszki. Dodanie specyficznych skrótów klawiszowych także nie będzie problemem. Haki umożliwiają też badanie aktywności użytkownika poprzez nasłuchiwanie aktywności klawiatury i myszki. Oprócz tego mogą być przydatne przy debugowaniu aplikacji – dają bezpośredni dostęp do komunikatów systemu dla danego programu. Procedury dla haków globalnych muszą obowiązkowo znajdować się w bibliotece DLL. ===_WinAPI_SetWindowsHookEx=== #include <WinAPI.au3> _WinAPI_SetWindowsHookEx ( $iHook, $pProc, $hDll [, $iThreadId = 0] ) Funkcja zakłada hak na początku łańcucha i zwraca uchwyt do niego. Jeżeli wystąpił błąd zwracane jest 0, a informację o błędzie można odczytać za pomocą funkcji _WinAPI_GetLastError(). _SetWindowsHookEx powinniśmy wywołać tam, gdzie wykonujemy inicjalizację naszej aplikacji - np. po stworzeniu głównego okna. '''$iHook''' - Określa typ procedury haka do zainstalowania: $WH_CALLWNDPROC oraz $WH_CALLWNDPROCRET - pozwalają monitorować komunikaty przeznaczone dla konkretnej procedury okna. $WH_CALLWNDPROC przechwytuje komunikat przed jego dotarciem do procedury okna, $WH_CALLWNDPROCRET - po. $WH_CBT - nazwa pochodzi od computer-based training (CBT), czyli komputerowej edukacji, dla którego to rodzaju aplikacji przede wszystkim powstał ten hak. Pozwala przechwytywać komunikaty przed utworzeniem, zniszczeniem, minimalizacją, maksymalizacją, przeniesieniem, zmianą rozmiaru okna, przed wykonaniem polecenia systemowego, przed zdjęciem komunikatu myszy lub klawiatury z kolejki komunikatów, przed ustawieniem fokusa oraz przed synchronizacją kolejki komunikatów. Dzięki temu możemy określić, czy nasza aplikacja "pozwala" na te operacje czy też nie. Teraz już co niektórzy mogą kojarzyć - tak, wszelkiego rodzaju komputerowe testy, quizy i programy egzaminacyjne korzystają z tego, by zablokować biednym studentom dostęp do pomocy naukowych. $WH_DEBUG - ten hak wywoływany jest zawsze przed wszystkimi innymi hakami, więc można go użyć do "odpluskwiania" innych haków. $WH_FOREGROUNDIDLE - hak pozwalający nam wykonywać różne zadania w tle, gdy system wykryje, że pierwszoplanowy wątek nic w danej chwili nie robi. $WH_GETMESSAGE - pozwala przechwycić komunikat, który właśnie ma być zwrócony przez GetMessage lub PeekMessage (w przeciwieństwie do $WH_CALLWNDPROC, który przechwytuje komunikat już po wywołaniu DispatchMessage). To jest właśnie najbardziej zalecany hak do przechwytywania komunikatów związanych z myszą i klawiaturą. $WH_JOURNALPLAYBACK - ciekawy hak, który umożliwia odtworzenie "nagranych" wcześniej zdarzeń wejściowych (np. ruchu myszy). Jest to hak globalny, dotyczący wszystkich wątków w systemie. $WH_JOURNALRECORD - "nagrywa" zdarzenia do późniejszego wykorzystania przez $WH_JOURNALPLAYBACK, oczywiście to również jest hak globalny. $WH_KEYBOARD_LL - przechwytuje niskopoziomowe (low-level) zdarzenia, wywołane przez klawiaturę. $WH_KEYBOARD - przechwytuje wysokopoziomowe zdarzenia klawiatury (jest to więc wyspecjalizowany wariant haka $WH_GETMESSAGE). $WH_MOUSE_LL - przechwytuje niskopoziomowe zdarzenia myszy. $WH_MOUSE - przechwytuje wysokopoziomowe zdarzenia myszy (kolejna wyspecjalizowana wersja $WH_GETMESSAGE). $WH_MSGFILTER oraz $WH_SYSMSGFILTER - dzięki tym hakom możemy monitorować komunikaty pochodzące z menu, pasków przewijania, message box'ów oraz okien dialogowych. Możemy też wykrywać aktywację okna przy pomocy Alt+Tab lub Alt+Esc. Normalnie nie możemy tego wszystkiego zrobić, gdy wykonywana jest jakakolwiek pętla modalna np. wewnętrzna pętla message box'a). $WH_SYSMSGFILTER ma działanie globalne, zaś $WH_MSGFILTER dotyczy jedynie aplikacji, która zainstalowała hak. $WH_SHELL - został stworzony po to, byśmy w aplikacji shell'owej mogli otrzymywać istotne powiadomienia systemowe. Domyślnie jest to aktywacja aplikacji shell'owej oraz utworzenie/zniszczenie jej głównego okna. '''$pProc''' - wskaznik do procedury haka. Jeśli parametr $iThreadId wynosi zero lub określa identyfikator wątku utworzone przez inny proces, parametr $pProc musi wskazywać procedury haka w DLL. '''$hDll''' - uchwyt do biblioteki DLL zawierającej procedurę haka wskazywana przez parametr $pProc. Dla lokalnych haków należy podać wartość NULL. '''$iThreadId''' - określa identyfikator wątku, z którym procedura haka ma być związana. Jeśli parametr ten ma wartość zero, procedura haka jest związany z wszystkimi istniejącymi wątkami działającymi na tym samym pulpicie co wątek wywołujący. '''UWAGA:''' Ponieważ funkcje haków globalnych muszą znajdować się w bibliotece DLL, za pomocą sanego AutoIt'a nie można założyć haków tego rodzaju (AutoIt nie umożliwia tworzenia plików DLL). Można natomiast zakładać haki globalne z wykorzystaniem plików DLL utworzonych za pomocą innych języków programowania. ===_WinAPI_UnhookWindowsHookEx=== #include <WinAPI.au3> _WinAPI_UnhookWindowsHookEx ( $hHook ) Funkcja usuwa haka zainstalowanego w łańcuchu haków za pomocą funkcji WinAPI_SetWindowsHookEx. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hHook''' - uchwyt do usuwanego haka ===_WinAPI_CallNextHookEx=== #include <WinAPI.au3> _WinAPI_CallNextHookEx ( $hHook, $iCode, $wParam, $lParam ) Funkcja przekazuje sterowanie do procedury następnego haka w łańcuchu haków. '''$hHook''' - ten parametr jest ignorowany '''$iCode''' - '''$wParam''' - '''$lParam''' - Przykład założenia łańcucha haków na klawiaturę: <syntaxhighlight lang="autoit"> #include <StructureConstants.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> OnAutoItExitRegister("Cleanup") ;rejestracja funkcji wywoływanej przy zakończeniu skryptu Global $hHook1, $hKeyProc1, $hHook2, $hKeyProc2, $sLog $hKeyProc1 = DllCallbackRegister("_KeyProc1", "long", "int;wparam;lparam") ;rejestracja funkcji callback pierwszego haka $hHook1 = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hKeyProc1), Null) ;założenie pierwszego haka $hKeyProc2 = DllCallbackRegister("_KeyProc2", "long", "int;wparam;lparam") ;rejestracja funkcji callback drugiego haka $hHook2 = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hKeyProc2), Null) ;założenie drugiego haka ;pętla główna skryptu While 1 Sleep(10) WEnd #Region Definicje funkcji ;funkcja callback dla pierwszego haka Func _KeyProc1($nCode, $wParam, $lParam) Local $tKEYHOOKS $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam) If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook1, $nCode, $wParam, $lParam) ;wywołanie kolejnego haka EndIf If $wParam = $WM_KEYDOWN Then Modified_action_key1($tKEYHOOKS.vkCode) EndIf Return _WinAPI_CallNextHookEx($hHook1, $nCode, $wParam, $lParam) ;wywołanie kolejnego haka EndFunc ;funkcja callback dla drugiego haka Func _KeyProc2($nCode, $wParam, $lParam) Local $tKEYHOOKS1 $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam) If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook2, $nCode, $wParam, $lParam) ;;wywołanie kolejnego haka EndIf If $wParam = $WM_KEYDOWN Then Modified_action_key2($tKEYHOOKS.vkCode) EndIf Return _WinAPI_CallNextHookEx($hHook2, $nCode, $wParam, $lParam) ;wywołanie kolejnego haka EndFunc ;funkcja obsługi klawiatury przez pierwszego haka Func Modified_action_key1($iKeyCode) If $iKeyCode = 27 Then Exit ;zakończenie skryptu If $iKeyCode = 49 Then Beep(262, 200) ;klawisze 1 do 8 grają gamę If $iKeyCode = 50 Then Beep(294, 200) If $iKeyCode = 51 Then Beep(330, 200) If $iKeyCode = 52 Then Beep(349, 200) If $iKeyCode = 53 Then Beep(392, 200) If $iKeyCode = 54 Then Beep(440, 200) If $iKeyCode = 55 Then Beep(494, 200) If $iKeyCode = 56 Then Beep(523, 200) If $iKeyCode = 65 Then ToolTip ("AutoIt to jest to!", 500, 200) ;klawisz A $sLog &= Chr($iKeyCode) ;log klawiatury EndFunc ;funkcja obsługi klawiatury przez drugiego haka Func Modified_action_key2($iKeyCode) If $iKeyCode = 66 Then ToolTip ("AutoIt to jest lipa!", 500, 250) ;klawisz B EndFunc ;funkcja kończąca skrypt po wciśnięciu ESC ;zwalnia zasoby i wyświetla historię użycia klawiatury (prymitywny keylogger) Func Cleanup() _WinAPI_UnhookWindowsHookEx($hHook1) ;usunięcie pierwszego haka _WinAPI_UnhookWindowsHookEx($hHook2) ;usunięcie drugiego haka DllCallbackFree($hKeyProc1) ;wyrejestrowanie funkcji callback pierwszego haka DllCallbackFree($hKeyProc2) ;wyrejestrowanie funkcji callback drugiego haka MsgBox(64, 'Log klawiatury:', $sLog) ;wyświetlenie loga EndFunc #EndRegion Koniec definicji funkcji </syntaxhighlight> ==Arytmetyka bitowa== ===_WinAPI_HiWord=== #include <WinAPI.au3> _WinAPI_HiWord($iLong) Funkcja zwraca starsze słowo (2-bajtowe) z podwójnego słowa (4-bajtowego). '''$iLong''' - podwójnego słowa (4-bajtowe) ===_WinAPI_LoWord=== #include <WinAPI.au3> _WinAPI_LoWord($iLong) Funkcja zwraca młodsze słowo (2-bajtowe) z podwójnego słowa (4-bajtowego). '''$iLong''' - podwójnego słowa (4-bajtowe) Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $iWord = 0xAAFFFF MsgBox(0, $iWord, "Starsze słowo: " & Hex(_WinAPI_HiWord($iWord)) & @CRLF & _ "Młodsze słowo: " & Hex(_WinAPI_LoWord($iWord))) </syntaxhighlight> ===_WinAPI_FloatToInt=== #include <WinAPI.au3> _WinAPI_FloatToInt($nFloat) Funkcja zamienia liczbę zmiennoprzecinkową (typ Float) na odpowiadającą jej 4-bajtową liczbę całkowitą (typ Integer). '''$nFloat''' - liczba zmiennoprzecinkowa Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $float = 10.55 $INT = _WinAPI_FloatToInt($float) $text = "Liczba zmiennoprzecinkowa " & $float & " przkonwertowano na liczbę całkowitą " & $INT & " (Hex = " & Hex($INT) & ")" MsgBox(4096, "_WinAPI_FloatToInt", $text) </syntaxhighlight> ===_WinAPI_IntToFloat=== #include <WinAPI.au3> _WinAPI_IntToFloat($iInt) Funkcja zamienia 4-bajtową liczbę całkowitą (typ Integer) na odpowiadającą jej liczbę zmiennoprzecinkową (typ Float). Jeżeli wystąpi błąd zwracany jest string "-1.#QNAN". '''$nFloat''' - 4-bajtowa liczba całkowita '''UWAGA:''' Funkcja nie zmienia typu liczby (jak np. funkcja Int()), lecz sposób interpretacji bitowego zapisu liczby w pamięci komputera. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0, "", _WinAPI_IntToFloat(1000000)) </syntaxhighlight> ===_WinAPI_MakeLong=== #include <WinAPI.au3> _WinAPI_MakeLong($iLo, $iHi) Funkcja łączy dwa 2-bajtowe słowa w 4-bajtowe podwójne słowo. '''$iLo''' - 2-bajtowe młodsze słowo '''$iHi''' - 2-bajtowe starsze słowo Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $iWord = _WinAPI_MakeLong(0xaa, 0xbb) MsgBox(4096, "_WinAPI_MakeLong", Hex($iWord)) </syntaxhighlight> ===_WinAPI_MakeQWord=== #include <WinAPI.au3> _WinAPI_MakeQWord($LoDWORD, $HiDWORD) Funkcja łączy dwa 4-bajtowe podwójne słowa w 8-bajtowe poczwórne słowo (Int64). '''$LoDWORD''' - 4-bajtowe młodsze słowo '''$HiDWORD''' - 4-bajtowe starsze słowo Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $iWord = _WinAPI_MakeQWord(0xaa, 0xbb) MsgBox(4096, "_WinAPI_MakeQWord", Hex($iWord)) </syntaxhighlight> ===_WinAPI_MulDiv=== #include <WinAPI.au3> _WinAPI_MulDiv($iNumber, $iNumerator, $iDenominator) Funkcja mnoży dwie 32-bitowe liczby i dzieli 64-bitowy wynik przez trzecią 32-bitową liczbę. Zwraca wynik, lub -1 gdy wystąpił błąd. Jeśli wynik nie jest liczbą całkowitą, jest zaokrąglany zgodnie z ogólnymi zasadami. '''$iNumber i $iNumerator''' - dwie mnożone liczby '''$iDenominator''' - liczba przez którą dzielimy Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0, '_WinAPI_MulDiv', _WinAPI_MulDiv(3, 8, 6) & ' = ' & 3 * 8 / 6) </syntaxhighlight> jb6gaqdkqstiwhg8s4ethafx4lsgrbc 558429 558427 2026-10-03T15:58:10Z Wasta 12503 558429 wikitext text/x-wiki ==Co to jest WinAPI== Wg Wiki: Windows API, lub krócej: WinAPI – interfejs programistyczny systemu Microsoft Windows – jest to zbiór niezbędnych funkcji, stałych i zmiennych umożliwiających działanie programu w systemie operacyjnym Microsoft Windows. Zbiór ten jest bardzo obszerny i zawiera funkcje do tworzenia okien programów, elementów interfejsu graficznego, obsługi zdarzeń oraz umożliwiające dostęp do innych aplikacji, funkcji sieciowych czy sprzętu w komputerze. Mianem WinAPI określamy standardowe funkcje przychodzące wraz z plikami bibliotek DLL dostarczanymi z systemem, np. kernel32.dll, user32.dll, gdi32.dll, wsock32.dll, znajdującymi się w katalogu \Windows\System. Funkcje korzystające z WinAPI zawarte są w UDF'ie '''WinAPI.au3'''. Jest to największy UDF, ale część zawartych w nim funkcji dubluje funkcje wbudowane interpretera lub innych UDF'ów np.: '''GDIPlus.au3'''. W niniejszym opisie skupię się więc na funkcjach udostępniających nowe możliwości. ==Struktury (rekordy)== Niektóre funkcje znajdujące się w UDF'ie wykorzystują struktury jako parametry wywołania lub używają ich do zwracania wyników. Tworzenie takich struktur ułatwia plik '''StructureConstants.au3''', który zawiera predefiniowane stringi z opisem budowy typowych struktur. Nie musimy dołączać go dyrektywą '''#include''', gdyż robi to już sam UDF. Poniżej przykład tworzenia struktury zawierającej dane o wielkości i położeniu prostokątnego obszaru: <syntaxhighlight lang="autoit"> ;tworzenie struktury na podstawie stringu $tagRECT ;z biblioteki StructureConstants.au3 $tRect = DllStructCreate($tagRECT) ;nadanie wartości poszczególnym polom struktury DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) ;jeżeli zamiast samej struktury potrzebny jest wskaźnik do niej ;należy dodatkowo użyć funkcji odczytującej ten wskaźnik $ptrRect = DllStructGetPtr($tRect) ;dalsza część progamu </syntaxhighlight> Można też tak, wykorzystując skrócony sposób nadawania wartości pól struktury: <syntaxhighlight lang="autoit"> ;tworzenie struktury na podstawie stringu $tagRECT ;z biblioteki StructureConstants.au3 $tRect = DllStructCreate($tagRECT) ;nadanie wartości poszczególnym polom struktury (sposób uproszczony) $tRect.Left = 20 $tRect.Top = 50 $tRect.Right = 200 $tRect.Bottom = 200 ;dalsza część progamu </syntaxhighlight> Dokładniejszy opis dotyczący struktur i funkcji na nich operujących, w rozdziale [[AutoIt/Biblioteki DLL|'''Korzystanie z bibliotek DLL''']]. ===_WinAPI_PtInRect=== #include <WinAPI.au3> _WinAPI_PtInRect($tRect, $tPoint) Funkcja zwraca True gdy punkt znajduje się wewnątrz prostokątnego obszaru, lub False w przeciwnym przypadku. '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru '''$tPoint''' - struktura $tagPOINT zawierająca współrzędne sprawdzanego punktu Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> ;opis prostokąta $tRect = DllStructCreate($tagRECT) $tRect.Left = 20 $tRect.Top = 50 $tRect.Right = 200 $tRect.Bottom = 200 ;współrzędne sprawdzanego punktu $tPoint = DllStructCreate($tagPOINT) $tPoint.X = 120 $tPoint.Y = 120 If _WinAPI_PtInRect($tRect, $tPoint) Then $sTxt = "Punkt wewnątrz prostokąta" Else $sTxt = "Punkt na zewewnątrz prostokąta" EndIf MsgBox(4096, 'Test PtInRect', $sTxt) </syntaxhighlight> ===_WinAPI_RectIsEmpty=== #include <WinAPI.au3> _WinAPI_RectIsEmpty($tRect) Funkcja zwraca True gdy struktura opisująca prostokąt zawiera same zera, lub False w przeciwnym przypadku. '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> ;opis prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 0) DllStructSetData($tRect, "Top", 0) DllStructSetData($tRect, "Right", 0) DllStructSetData($tRect, "Bottom", 0) MsgBox(4096, 'RectIsEmpty', _ "Czy prostokąt jest pusty: " & _WinAPI_RectIsEmpty($tRect)) </syntaxhighlight> ===_WinAPI_PointFromRect=== #include <WinAPI.au3> _WinAPI_PointFromRect($tRect [, $fCenter = True]) Funkcja zwraca w postaci struktury $tagPOINT współrzędne środka, lub lewego górnego narożnika prostokątnego obszaru. '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru '''$fCenter''' - jeśli True zwraca punkt środkowy tego prostokąta, jeśli False jego współrzędne lewego górnego narożniku Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> ;opis prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) $tPoint = _WinAPI_PointFromRect($tRect) $iX = DllStructGetData($tPoint, 1) $iY = DllStructGetData($tPoint, 2) MsgBox(4096, "PointFromRect", _ "Punkt środkowy prostokąta:" & @LF & _ "x = " & $iX & @LF & "y = " & $iY) </syntaxhighlight> ===_WinAPI_GetXYFromPoint=== #include <WinAPI.au3> _WinAPI_GetXYFromPoint($tPoint, ByRef $iX, ByRef $iY) Funkcja zwraca przez referencję współrzędne punktu. '''$tPoint''' - struktura $tagPOINT zawierająca współrzędne punktu '''$iX''' i '''$iY''' - zmienne zawierające współrzędne punktu (nadpisywane przez referencję) Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $iX = 10, $iY = 10 ;opis prostokąta $tPoint = DllStructCreate($tagPOINT) DllStructSetData($tPoint, "X", 100) DllStructSetData($tPoint, "Y", 666) ;odczyt współrzędnych (przez referencję) _WinAPI_GetXYFromPoint($tPoint, $iX, $iY) MsgBox(4096, "GetXYFromPoint", _ "Odczytane współrzędne punktu:" & @LF & _ "x = " & $iX & @LF & "y = " & $iY) </syntaxhighlight> ==Funkcje związane z kontekstem urządzenia (DC)== Wszystkie funkcje graficzne WinAPI operują na kontekstach urządzeń. Podstawowe informacje o kontekstach można znaleźć w rozdziale [[AutoIt/Funkcje interfejsu GDI+|'''Funkcje interfejsu GDI+''']]. Teraz postaram się opisać temat nieco dokładniej, gdyż UDF dostarcza dużej ilości funkcji operujących na kontekstach i głębsze zrozumienie problemu będzie bardzo pomoncne w ich efektywnym wykorzystaniu. Twórcy Windows postanowili uprościć i ujednolicić operacje graficzne w systemie operacyjnym. Zamiast całej masy przypadków przesyłania informacji pomiędzy obiektami graficznymi (np. desktop -> okno, okno -> okno, okno -> bitmapa ... itd.) postanowili sprowadzić wszystko do jednego schematu: [Kontekst źródłowy] -> [Kontekst docelowy] Konteksty to jednak abstrakcje, same w sobie nie reprezentujące żadnego rzeczywistego obiektu. Dlatego kontekst musi być powiązany z rzeczywistym obiektem. Powiązanie to oznacza, że operacje wykonywane na kontekście będą jednocześnie wykonywane w tle na rzeczywistym obiekcie, bez konieczności zagłębiania się przez programistę w sam przebieg tego procesu. Wymiana informacji między kontekstami przebiega zawsze w ten sam sposób, natomiast przepływ informacji [obiekt] <-> [kontekst] jest realizowany przez OS bez udziału programisty: [Obiekt źródłowy]-[Kontekst źródłowy] -> [Kontekst docelowy]-[Obiekt docelowy] Oczywiście aby cały proces był możliwy do realizacji, konteksty i obiekty muszą być ze sobą zgodne (kompatybilne), tzn. zdolne do wymiany informacji. Rozpatrzmy dwa przykłady: '''1. Skopiowanie fragmentu desktopu do utworzonego okna GUI:''' Mamy do czynienia z dwoma istniejącymi obiektami, które są ze sobą z natury kompatybilne (wszak okno to nic innego jak część desktopu). Należy więc pobrać z systemu konteksty do obu obiektów (funkcja _WinAPI_GetDC), a następnie przesłać dane z kontekstu desktopu do kontekstu okna. Prosto i bez wnikania w szczegóły procesu. Przykładowy kod dla tego przypadku w opisie funkcji [[AutoIt/WinAPI#WinAPI_BitBlt|_WinAPI_BitBlt]]'''. '''2. Skopiowanie fragmentu desktopu do bitmapy:''' W tym przypadku istnieje tylko jeden obiekt (desktop), drugi obiekt (bitmapa) należy samodzielnie utworzyć. Rozpoczynamy od pobrania kontekstu do desktopu (_WinAPI_GetDC), następnie tworzymy nowy kontekst kompatybilny z kontekstem desktopu (_WinAPI_CreateCompatibleDC). Teraz tworzymy bitmapę kompatybilną z utworzonym kontekstem (_WinAPI_CreateCompatibleBitmap) i tworzymy powiązania pomiędzy kontekstem i bitmapą (_WinAPI_SelectObject). Mamy teraz powiązanie między desktopem, a bitmapą (poprzez kompatybilne konteksty) i możemy przesłać dane obrazu. Przykładowy kod dla tego przypadku w opisie funkcji [[AutoIt/WinAPI#WinAPI_CreateCompatibleBitmap|_WinAPI_CreateCompatibleBitmap]]. ===_WinAPI_GetDC=== #include <WinAPI.au3> _WinAPI_GetDC($hWnd) Funkcja odczytuje i zwraca kontekst do obszaru roboczego okna, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna Zwolnienie kontekstu za pomocą funkcji #_WinAPI_ReleaseDC. Przykład: <syntaxhighlight lang="autoit"> #Include <WinAPI.au3> $hWnd = GUICreate ("Test") $hDC = _WinAPI_GetDC($hWnd) MsgBox (0, "", "Uchwyt DC: " & $hDC) _WinAPI_ReleaseDC ($hWnd, $hDC) </syntaxhighlight> ===_WinAPI_GetWindowDC=== #include <WinAPI.au3> _WinAPI_GetWindowDC($hWnd) Funkcja odczytuje i zwraca kontekst do całego okna, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, jeżeli wstawimy 0 to będzie to oznaczało cały ekran (desktop). Zwolnienie kontekstu za pomocą funkcji '''_WinAPI_ReleaseDC '''. Przykład: <syntaxhighlight lang="autoit"> #Include <WinAPI.au3> $hWnd = GUICreate ("Test") $hDC = _WinAPI_GetWindowDC($hWnd) MsgBox (0, "", "Uchwyt DC: " & $hDC) _WinAPI_ReleaseDC ($hWnd, $hDC) </syntaxhighlight> ===_WinAPI_CreateCompatibleDC=== #include <WinAPI.au3> _WinAPI_CreateCompatibleDC($hDC) Funkcja tworzy kontekst zgodny z istniejącym kontekstem urządzenia. Zwraca uchwyt do tego kontekstu, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do istniejącego kontekstu DC Likwidacja kontekstu za pomocą funkcji '''_WinAPI_DeleteDC '''. ===_WinAPI_DeleteDC=== #include <WinAPI.au3> _WinAPI_DeleteDC($hDC) Funkcja likwiduje kontekst. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu DC Funkcji należy używać do usunięcia kontekstów utworzonych w skrypcie (_WinAPI_CreateCompatibleDC), a już nie wykorzystywanych, celem zwolnienia zasobów. ===_WinAPI_ReleaseDC=== #include <WinAPI.au3> _WinAPI_ReleaseDC($hWnd, $hDC) Funkcja zwalnia wcześniej pobrany kontekst. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna '''$hDC''' - uchwyt do kontekstu DC Funkcji należy używać do zwolnienia kontekstów pobranych w skrypcie (_WinAPI_GetDC lub _WinAPI_GetWindowDC), a już nie wykorzystywanych, celem zwolnienia zasobów. ===_WinAPI_SelectObject=== #include <WinAPI.au3> _WinAPI_SelectObject($hDC, $hGDIObj) Funkcja przypisuje obiekt do określonego kontekstu urządzenia. Zwraca uchwyt do pierwotnego obiektu (tego który był poprzednio przypisany do kontekstu), lub liczbę ujemną gdy wystąpił błąd. Obiekt musi być jednego z następujących typów: Bitmap, Brush, Font, Pen lub Region. '''$hDC''' - uchwyt do kontekstu DC '''$hGDIObj''' - uchwyt do przypisywanego obiektu Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> ;odczytanie kontekstu do desktopu $hDC = _WinAPI_GetWindowDC(0) ;tworzenie piór $hPen1 = _WinAPI_CreatePen($PS_SOLID, 12, 0x0000FF) $hPen2 = _WinAPI_CreatePen($PS_SOLID, 20, 0x00FF00) ;przypisanie pióra 1 do kontekstu _WinAPI_SelectObject($hDC, $hPen1) ;rysowanie linni w kontekście _WinAPI_DrawLine($hDC, 400, 500, 800, 700) ;przypisanie pióra 2 do kontekstu $hOld = _WinAPI_SelectObject($hDC, $hPen2) ;rysowanie linni w kontekście _WinAPI_DrawLine($hDC, 400, 700, 800, 400) Sleep(5000) ;jeżeli chcemy wrócić do poprzedniego przypisania _WinAPI_SelectObject($hDC, $hOld) ;zwolnienie zasobów _WinAPI_DeleteObject($hPen1) _WinAPI_DeleteObject($hPen2) _WinAPI_ReleaseDC(0, $hDC) </syntaxhighlight> ===_WinAPI_DeleteObject=== #include <WinAPI.au3> _WinAPI_DeleteObject ( $hObject ) Funkcja usuwa logiczne, obiekty takie jak pióro, pędzel, czcionka, bitmapa, region lub paleta. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hObject''' - uchwyt do usuwanego obiektu ===_WinAPI_BitBlt=== #include <WinAPI.au3> _WinAPI_BitBlt($hDestDC, $iXDest, $iYDest, $iWidth, $iHeight, $hSrcDC, $iXSrc, $iYSrc, $iROP) Funkcja kopiuje blok grafiki pomiędzy dwoma kontekstami urządzeń. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDestDC''' - uchwyt do kontekstu docelowego '''$iXDest''' i '''$iYDest''' - współrzędne lewego górnego narożnika wstawianego bloku w kontekście docelowym '''$iWidth''' i '''$iHeight''' - szerokość i wysokość kopiowanego bloku '''$hSrcDC''' - uchwyt do kontekstu źródłowego '''$iXSrc''' i '''$iYSrc''' - współrzędne lewego górnego narożnika kopiowanego bloku w kontekście źródłowym '''$iROP''' - kod operacji. Kody te określają, w jaki sposób dane kolorowego prostokątnego bloku kopiowanego z kontekstu źródłowego zostaną połączone z kolorami znajdującymi się w prostokącie docelowym: Nazwy stałych wg '''<WindowsConstants.au3>''' --------------------------------------------------------------------------------------------------------- $BLACKNESS = 0x00000042 | Wypełnia prostokąt docelowy używając koloru związanego z indeksem 0 | w palecie fizycznej (ten kolor jest czarny dla domyślnej palety). --------------------------------------------------------------------------------------------------------- $CAPTUREBLT = 0x40000000 | Zawiera wszystkie okna, które są nakładane na górze okna w obraz wynikowy. --------------------------------------------------------------------------------------------------------- $DSTINVERT = 0x00550009 | Negatyw prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $MERGECOPY = 0x00C000CA | Łączy za pomocą operatora AND kolor prostokąta źródłowego z kolorem | aktualnie wybranego w $hDestDC pędzla. --------------------------------------------------------------------------------------------------------- $MERGEPAINT = 0x00BB0226 | Łączy za pomocą operatora OR negatyw prostokąta źródłowego | z kolorami prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $NOMIRRORBITMAP = 0x80000000 | --------------------------------------------------------------------------------------------------------- $NOTSRCCOPY = 0x00330008 | Kopiuje negatyw prostokąta źródłowego do miejsca przeznaczenia. --------------------------------------------------------------------------------------------------------- $NOTSRCERASE = 0x001100A6 | Łączy za pomocą operatora OR kolory prostokąta źródłowego i docelowego, | a następnie wykonuje negatyw powstałych kolorów. --------------------------------------------------------------------------------------------------------- $PATCOPY = 0x00F00021 | Kopiuje pędzel aktualnie wybranego w $hDestDC, do bitmapy docelowej. --------------------------------------------------------------------------------------------------------- $PATINVERT = 0x005A0049 | Łączy za pomocą operatora XOR kolor pędzla aktualnie wybranego w $hDestDC, | z kolorami prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $PATPAINT = 0x00FB0A09 | Łączy za pomocą operatora OR, kolor pędzla aktualnie wybranego w $hDestDC, | z negatywem prostokąta źródłowego. Wynik tej operacji jest połączony | za pomocą operatora OR, z kolorami prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $SRCAND = 0x008800C6 | Łączy za pomocą operatora AND, kolory prostokąta źródłowego i docelowego. --------------------------------------------------------------------------------------------------------- $SRCCOPY = 0x00CC0020 | Kopiuje prostokąt źródłowy bezpośrednio do prostokąta docelowego. --------------------------------------------------------------------------------------------------------- $SRCERASE = 0x00440328 | Łączy za pomocą operatora AND, negatyw prostokąta docelowego | z kolorami prostokąta źródłowego. --------------------------------------------------------------------------------------------------------- $SRCINVERT = 0x00660046 | Łączy za pomocą operatora XOR, kolory prostokąta źródłowego i docelowego. --------------------------------------------------------------------------------------------------------- $SRCPAINT = 0x00EE0086 | Łączy za pomocą operatora OR, kolory prostokąta źródłowego i docelowego. --------------------------------------------------------------------------------------------------------- $WHITENESS = 0x00FF0062 | Wypełnia prostokąt docelowy używając koloru związanego z indeksem 1 | w palecie fizycznej (ten kolor jest biały dla domyślnej palety). Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <GDIPlus.au3> #region tworzenie testowego obrazka $hGUI = GUICreate("GDI+", 400, 450) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;rysowanie elipsy domyślnym pędzlem _GDIPlus_GraphicsfillEllipse($hGraphic, 160, 100, 150, 100) $hBrush = _GDIPlus_BrushCreateSolid(0xB0FF0000) ;tworzenie pędzla _GDIPlus_GraphicsFillEllipse($hGraphic, 210, 30, 120, 250, $hBrush) Sleep(200) ;chwila na zakończenie tworzenia obrazka ;zwolnienie zasobów _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() #endregion tworzenie testowego obrazka $hGUIDC = _WinAPI_GetDC($hGUI) ;kontekst do obszaru roboczego GUI $hDC = _WinAPI_GetWindowDC(0) ;kontekst do desktopu ;kopiowanie fragmentów desktopu do GUI _WinAPI_BitBlt($hGUIDC, 0, 0, 300, 200, $hDC, 0, 0, $SRCCOPY) _WinAPI_BitBlt($hGUIDC, 100, 220, 250, 200, $hDC, 20, 0, $SRCAND) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_ReleaseDC (0, $hDC) _WinAPI_ReleaseDC ($hGUI, $hGUIDC) </syntaxhighlight> ===_WinAPI_SetTextColor=== #include <WinAPI.au3> _WinAPI_SetTextColor($hDC, $iColor) Funkcja ustawia kolor aktualnej czcionki w danym kontekście urządzenia. Zwraca kod poprzedniego koloru, lub -1 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iColor''' - kod koloru w formacie RGB ===_WinAPI_SetBkColor=== #include <WinAPI.au3> _WinAPI_SetBkColor($hDC, $iColor) Funkcja ustawia kolor tła w danym kontekście urządzenia. Zwraca kod poprzedniego koloru, lub -1 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iColor''' - kod koloru w formacie RGB ===_WinAPI_GetBkMode=== #include <WinAPI.au3> _WinAPI_GetBkMode($hDC) Funkcja zwraca tryb wyświetlania tła w danym kontekście urządzenia, lub 0 gdy wystąpił bład. Zwracane wartości: 1 ($TRANSPARENT) - tło przezroczyste 2 ($OPAQUE) - tło nieprzezroczyste '''$hDC''' - uchwyt do kontekstu ===_WinAPI_SetBkMode=== #include <WinAPI.au3> _WinAPI_SetBkMode($hDC, $iBkMode) Funkcja ustawia tryb wyświetlania tła w danym kontekście urządzenia. Zwraca kod poprzedniego trybu, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iBkMode''' - kod trybu wyświetlania tła: 1 ($TRANSPARENT) - tło przezroczyste 2 ($OPAQUE) - tło nieprzezroczyste Przykład: <syntaxhighlight lang="autoit"> #include <FontConstants.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> Global $hDC, $hFont, $hFont_old, $iTextColor = 0xFF0000 HotKeySet("{ESC}", "_Exit") ;rejestrowanie funkcji zamykającej skrypt ;definiowanie prostokątnego obszaru, w którym będziemy wpisywali tekst $tRECT = DllStructCreate($tagRect) $tRECT.Left = 850 $tRECT.Top = 300 $tRECT.Right = 1250 $tRECT.Bottom = 550 $hDC = _WinAPI_GetDC(0) ;pobranie kontekstu do desktopu $hFont = _WinAPI_CreateFont(50, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _ $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial') ;definicja fontów $hFont_old = _WinAPI_SelectObject($hDC, $hFont) ;zapamiętanie pierwotnych fontów i ustawienie nowych _WinAPI_SetBkColor($hDC, 0x000000) ;definicja koloru tła _WinAPI_SetBkMode($hDC, $TRANSPARENT) ;tło przezroczyste Do _WinAPI_SetTextColor($hDC, $iTextColor) ;ustawienie koloru tekstu _WinAPI_DrawText($hDC, "AUTOIT jest super!", $tRECT, $DT_CENTER) ;wypisanie tekstu Sleep(50) Until False ;funkcja zwalniająca zasoby i zamykająca skrypt Func _Exit() _WinAPI_SelectObject($hDC, $hFont_old) _WinAPI_DeleteObject($hFont) _WinAPI_ReleaseDC(0, $hDC) _WinAPI_InvalidateRect(0, 0) $tRECT = 0 Exit EndFunc </syntaxhighlight> ==Funkcje związane z tworzeniem i przetwarzaniem grafiki== ===_WinAPI_CreateBitmap=== #include <WinAPI.au3> _WinAPI_CreateBitmap($iWidth, $iHeight [, $iPlanes = 1 [, $iBitsPerPel = 1 [, $pBits = 0]]]) Funkcja tworzy bitmapę o określonej szerokości, wysokość, kolorze i formacie. Zwraca uchwyt do bitmapy, lub 0 gdy wystąpił błąd. '''$iWidth''' - szerokość bitmapy w pikselach '''$iHeight''' - wysokość bitmapy w pikselach '''$iPlanes''' - określa liczbę płaszczyzn kolorów używanych przez urządzenia '''$iBitsPerPel''' - liczba bitów potrzebnych do określenia barwy pojedynczego piksela '''$pBits''' - wskaźnik do tablicy danych kolorów używanych do ustawienia kolorów pikseli. Jeżeli parametr ten ma wartość 0, zawartość nowej bitmapy jest niezdefiniowana. ===_WinAPI_CreateCompatibleBitmap=== #include <WinAPI.au3> _WinAPI_CreateCompatibleBitmap($hDC, $iWidth, $iHeight) Funkcja tworzy bitmapę zgodną z określonym kontekstem urządzenia. Zwraca uchwyt do bitmapy, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu urządzenia '''$iWidth''' - szerokość bitmapy w pikselach '''$iHeight''' - wysokość bitmapy w pikselach Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GDIPlus.au3> Const $SRCCOPY = 0x00CC0020 Local $iX = 500, $iY = 300 _GDIPlus_Startup() ;pobranie kontekstu desktopu $hDDC = _WinAPI_GetWindowDC(0) ;utworzenie kontekstu kompatybilnego do kontekstu desktopu $hCDC = _WinAPI_CreateCompatibleDC($hDDC) ;utworzenie bitmapy kompatybilnej z kontekstem urządzenia $hHBMP = _WinAPI_CreateCompatibleBitmap($hDDC, $iX, $iY) ;przypisanie bitmapy do kontekstu urządzenia _WinAPI_SelectObject($hCDC, $hHBMP) ;kopiowanie danych obrazu między kontekstami _WinAPI_BitBlt($hCDC, 0, 0, $iX, $iY, $hDDC, 30, 35, $SRCCOPY) ;tworzenie obiektu Bitmap z bitmapy $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBMP) ;zapis bitmapy na dysku _GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Test.jpg") ;zwolnienie zasobów _GDIPlus_BitmapDispose($hBitmap) _WinAPI_DeleteObject($hHBMP) _WinAPI_DeleteDC($hCDC) _GDIPlus_Shutdown() ;wyświetlenie utworzonego obrazka SplashImageOn("Test", @ScriptDir & "\Test.jpg", $iX, $iY) Sleep(5000) </syntaxhighlight> ===_WinAPI_CreateSolidBitmap=== #include <WinAPI.au3> _WinAPI_CreateSolidBitmap($hWnd, $iColor, $iWidth, $iHeight [, $bRGB = True]) Funkcja tworzy bitmapę typu solid (jednokolorową). Zwraca uchwyt do bitmapy, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, w którym wyświetlona będzie bitmapa '''$iColor''' - kolor bitmapy w formacie RGB '''$iWidth''' - szerokość bitmapy w pikselach '''$iHeight''' - wysokość bitmapy w pikselach '''$bRGB''' - jeżeli True to $iColor łącznie z kanałem alfa (0x00RRGGBB) Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> ;tworzenie GUI $hwnd = GUICreate("", 400, 300) $Button = GUICtrlCreateButton("", 100, 30, 100, 100, 0x40) $hDCDest = _WinAPI_GetDC($hwnd) ;kontekst do GUI ;tworzenie kompatybilnego kontekstu $hDCSource = _WinAPI_CreateCompatibleDC($hDCDest) ;tworzenie bitmapy typu solid $hHBitmap = _WinAPI_CreateSolidBitmap($hwnd, 0xff0000, 300, 300) ;przypisanie bitmapy do kompatybilnego kontekstu _WinAPI_SelectObject($hDCSource, $hHBitmap) GUISetState() Do $msg = GUIGetMsg() ;przeniesienie fragmentu bitmapy na przycisk _WinAPI_BitBlt($hDCDest, 102, 32, 96, 96, $hDCSource, 0, 0, $SRCCOPY) Until $msg = $GUI_EVENT_CLOSE Or $msg = $Button ;zwolnienie zasobów _WinAPI_ReleaseDC($hwnd, $hDCDest) _WinAPI_DeleteDC($hDCSource) _WinAPI_DeleteObject($hHBitmap) </syntaxhighlight> ===_WinAPI_CreatePen=== #include <WinAPI.au3> _WinAPI_CreatePen($iPenStyle, $iWidth, $nColor) Funkcja tworzy pióro (obiekt pen). Zwraca uchwyt do pióra, lub 0 gdy wystąpił błąd. '''$iPenStyle''' - styl pióra: PS_SOLID | linia ciągła PS_DASH | linia przerywana PS_DOT | linia punktowa PS_DASHDOT | na przemian kreska i kropka PS_DASHDOTDOT | na przemian kreska i dwie kropki PS_NULL | pióro jest niewidoczne PS_INSIDEFRAME | linia ciągła do wnętrza konturu zamkniętego '''$iWidth''' - szerokość linii rysowanej przez pióro (w pikselach) '''$nColor''' - kolor pióra w formacie BBGGRR (np. 0xAAF009) Aby użyć pióra należy przypisać go do kontekstu urządzenia za pomocą funkcji '''_WinAPI_SelectObject'''. Jeżeli wartość określona przez $nWidth jest większa niż 1, parametr $iPenStyle może być tylko PS_NULL, PS_SOLID lub PS_INSIDEFRAME. Niepotrzebne już pióro należy usunąć funkcją '''_WinApi_DeleteObject''' celem zwolnienia zasobów. Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> $hDC = _WinAPI_GetWindowDC(0) ;kontekst do desktopu ;tworzenie pędzla $hPen = _WinAPI_CreatePen($PS_SOLID, 12, 0x0000FF) ;przypisanie pędzla do kontekstu desktopu $obj = _WinAPI_SelectObject($hDC, $hPen) ;rysowanie linii _WinAPI_DrawLine($hDC, 400, 500, 900, 700) ;zmiana pędzla $hPen = _WinAPI_CreatePen($PS_DASHDOTDOT, -1, -1) $obj = _WinAPI_SelectObject($hDC, $hPen) _WinAPI_DrawLine($hDC, 400, 800, 900, 500) ; Sleep(2000) ;zwolnienie zasobów _WinAPI_DeleteObject($hPen) _WinAPI_ReleaseDC(0, $hDC) </syntaxhighlight> ===_WinAPI_CreateSolidBrush=== #include <WinAPI.au3> _WinAPI_CreateSolidBrush($nColor) Funkcja tworzy pędzel (obiekt brush)typu solid. Zwraca uchwyt do pędzla, lub 0 gdy wystąpił błąd. '''$nColor''' - kolor pędzla w formacie BBGGRR (np. 0xAAF009) Niepotrzebny już pędzel należy usunąć funkcją '''_WinApi_DeleteObject''' celem zwolnienia zasobów. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("WinAPI", 400, 300) $hDC = _WinAPI_GetWindowDC($hGUI) GUISetState() ;tworzenie pędzla $hBrush = _WinAPI_CreateSolidBrush(0x0000FF) ;tworzenie struktury z danymi prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) ;odczyt wskaźnika do struktury $ptrRect = DllStructGetPtr($tRect) ;rysowanie ramki wokół prostokąta _WinAPI_FrameRect($hDC, $ptrRect, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC($hGUI, $hDC) </syntaxhighlight> ===_WinAPI_CreateFont=== #include <WinAPI.au3> _WinAPI_CreateFont($nHeight, $nWidth [, $nEscape = 0 [, $nOrientn = 0 [, $fnWeight = $FW_NORMAL [, $bItalic = False [, $bUnderline = False [, $bStrikeout = False [, $nCharset = $DEFAULT_CHARSET [, $nOutputPrec = $OUT_DEFAULT_PRECIS [, $nClipPrec = $CLIP_DEFAULT_PRECIS [, $nQuality = $DEFAULT_QUALITY [, $nPitch = 0 [, $szFace = 'Arial']]]]]]]]]]]]) Funkcja tworzy logiczną czcionkę o podanych cechach. Zwraca uchwyt do czcionki, lub 0 gdy wystąpił błąd. '''$nHeight''' - wysokość czcionki '''$nWidth''' - średnia szerokość czcionki '''$nEscape''' - kąt pochylenia linii tekstu w dziesiętnych stopnia '''$nOrientn''' - '''$fnWeight''' - waga czcionki: $FW_DONTCARE - 0 $FW_THIN - 100 $FW_EXTRALIGHT - 200 $FW_LIGHT - 300 $FW_NORMAL - 400 $FW_MEDIUM - 500 $FW_SEMIBOLD - 600 $FW_BOLD - 700 $FW_EXTRABOLD - 800 $FW_HEAVY - 900 '''$bItalic''' - italik True/False '''$bUnderline''' - podkreślenie True/False '''$bStrikeout''' - przekreślenie True/False '''$nCharset''' - zestaw znaków, następujące wartości są predefiniowane: $ANSI_CHARSET - 0 $BALTIC_CHARSET - 186 $CHINESEBIG5_CHARSET - 136 $DEFAULT_CHARSET - 1 $EASTEUROPE_CHARSET - 238 $GB2312_CHARSET - 134 $GREEK_CHARSET - 161 $HANGEUL_CHARSET - 129 $MAC_CHARSET - 77 $OEM_CHARSET - 255 $RUSSIAN_CHARSET - 204 $SHIFTJIS_CHARSET - 128 $SYMBOL_CHARSET - 2 $TURKISH_CHARSET - 162 $VIETNAMESE_CHARSET - 163 '''$nOutputPrec''' - '''$nClipPrec''' - '''$nQuality''' - '''$nPitch''' - '''$szFace''' - nazwa czcionki, np.: Arial, Arial Black, Courier, Courier New, Lucida Console, MS Sans Serif, Roman, Script, Times New Roman, itd. Niepotrzebną już czcionkę należy usunąć funkcją '''_WinApi_DeleteObject''' celem zwolnienia zasobów. ===_WinAPI_CreateFontIndirect=== #include <WinAPI.au3> _WinAPI_CreateFontIndirect($tLogFont) Funkcja tworzy logiczną czcionkę o podanych cechach. Zwraca uchwyt do czcionki, lub 0 gdy wystąpił błąd. '''$tLogFont''' - struktura $tagLOGFONT , określająca cechy czcionki logicznej. Pola struktury: Nazwa pola | Typ pola | Opis ------------------------------------------------------------------------------ Height | int | wysokość czcionki Width | int | średnia szerokość czcionki, 0 szerokość domyślna Escapement | int | kąt pochylenia linii tekstu w dziesiętnych stopnia Orientation | int | Weight | int | waga czcionki Italic | byte | czcionka pochylona - italik (True/False) Underline | byte | czcionka podkreślenie (True/False) StrikeOut | byte | czcionka przekreślenie (True/False) CharSet | byte | zestaw znaków OutPrecision | byte | ClipPrecision | byte | Quality | byte | PitchAndFamily | byte | FaceName | chr[32] | nazwa czcionki Można używać predefiniowanych stałych, tak jak w '''_WinAPI_CreateFont'''. Po wybraniu czcionki za pomocą SelectObject, GDI-font-Mapper próbuje dopasować czcionki logiczne do istniejącej czcionki fizycznej. Jeśli nie można znaleźć dokładne dopasowanie, zapewnia alternatywną czcionkę, której cechy są najbardziej zbieżne. Niepotrzebny już czcinkę należy usunąć funkcją '''_WinApi_DeleteObject''' celem zwolnienia zasobów. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GUIConstants.au3> #include <GuiListBox.au3> #include <GuiButton.au3> $hGUI = GUICreate("_WinAPI_CreateFontIndirect", 350, 200) $hBtn = _GUICtrlButton_Create($hGUI, "Przycisk", 10, 10, 270, 34) $hListBox = _GUICtrlListBox_Create($hGUI, "Dyski logiczne:", 10, 50, 270, 150) _GUICtrlListBox_BeginUpdate($hListBox) _GUICtrlListBox_Dir($hListBox, "", $DDL_DRIVES, False) _GUICtrlListBox_EndUpdate($hListBox) ;tworzenie struktury $tLogFont = DllStructCreate($tagLOGFONT) DllStructSetData($tLogFont, "Height", 22) DllStructSetData($tLogFont, "Weight", 700) DllStructSetData($tLogFont, "Italic", True) DllStructSetData($tLogFont, "FaceName", 'Arial') ;tworzenie czcionek $hFont1 = _WinAPI_CreateFontIndirect($tLogFont) DllStructSetData($tLogFont, "Italic", False) DllStructSetData($tLogFont, "FaceName", 'Courier new') $hFont2 = _WinAPI_CreateFontIndirect($tLogFont) ;ustawienie czcionek _WinAPI_SetFont($hBtn, $hFont1) _WinAPI_SetFont($hListBox, $hFont2) GUISetState() Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hFont1) _WinAPI_DeleteObject($hFont2) </syntaxhighlight> ===_WinAPI_GetStockObject=== #include <WinAPI.au3> _WinAPI_GetStockObject($iObject) Funkcja zwraca uchwyt do jednego z wbudowanych szablonów pióra, pędzla, czcionki lub palety. Jeżeli wystąpił błąd zwracane jest 0. '''$iObject''' - wskazuje rodzaj obiektu. Parametr ten może być jedną z następujących wartości: $BLACK_BRUSH - pędzel czarny $DKGRAY_BRUSH - pędzel ciemnoszary $GRAY_BRUSH - pędzel szary $HOLLOW_BRUSH - pędzel Null, to samo co $NULL_BRUSH $LTGRAY_BRUSH - pędzel jasnoszary $NULL_BRUSH - pędzel Null (niemalujący) $WHITE_BRUSH - pędzel biały $BLACK_PEN - pióro czarne $NULL_PEN - pióro Null $WHITE_PEN - pióro białe $ANSI_FIXED_FONT - czcionka systemowa nieproporcjonalna (o stałej szerokości) $ANSI_VAR_FONT - czcionka systemowa proporcjonalna (o zmiennej szerokości) $DEVICE_DEFAULT_FONT - czcionka domyślna zależna od urządzenia $DEFAULT_GUI_FONT - czcionka domyślna dla obiektów interfejsu użytkownika $OEM_FIXED_FONT - czcionka nieproporcjonalna OEM $SYSTEM_FONT - czcionka systemowa $SYSTEM_FIXED_FONT - czcionka systemowa nieproporcjonalna stosowana w systemach Windows wcześniejszych niż 3.0 $DEFAULT_PALETTE - paleta domyślna Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("GetStockObject", 400, 300) $hDC = _WinAPI_GetWindowDC($hGUI) GUISetState() ;ciemnoszary pędzel $hBrush = _WinAPI_GetStockObject($DKGRAY_BRUSH) $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 380) DllStructSetData($tRect, "Bottom", 300) $ptrRect = DllStructGetPtr($tRect) _WinAPI_FillRect($hDC, $ptrRect, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC($hGUI, $hDC) </syntaxhighlight> ===_WinAPI_DrawText=== #include <WinAPI.au3> _WinAPI_DrawText($hDC, $sText, ByRef $tRect, $iFlags) Funkcja wstawia tekst do podanego kontekstu. Zwraca wysokość tekstu, lub 0 gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$sText''' - wstawiany tekst '''$tRect''' - struktura $tagRECT, zawierająca współrzędne prostokąta, w którym będzie wstawiony tekst '''$iFlags''' - flaga określająca jak ma być formatowany tekst: $DT_BOTTOM - wyrównanie tekstu do dolnej krawędzi prostokąta $DT_CALCRECT - oblicza szerokość i wysokość wymaganego prostokąta, wynik zwracany przez referencję w strukturze $DT_CENTER - centrowanie tekstu poziomo w prostokącie $DT_EDITCONTROL - jeżeli tekst jest wielowierszowy , to wiersz który nie mieści się w całości na wysokości prostokąta nie będzie wyświetlany, ma sens tylko w parze z $DT_WORDBREAK ($DT_WORDBREAK) + $DT_EDITCONTROL) $DT_END_ELLIPSIS - zastępuje część tekstu wielokropkiem, jeżeli nie mieści się w prostokącie $DT_EXPANDTABS - rozszerza znaki tabulacji, domyślny rozmiar tabulacji wynosi 8 znaków $DT_EXTERNALLEADING - $DT_HIDEPREFIX - nie jest wyświetlane podkreślenie znaku za prefiksem (&) $DT_INTERNAL - używa trzcinki systemowej do wyliczenia wielkości tekstu $DT_LEFT - wyrównanie tekstu do lewej $DT_MODIFYSTRING - $DT_NOCLIP - tekst nie jest przycinany gdy nie mieści się w prostokącie $DT_NOFULLWIDTHCHARBREAK - $DT_NOPREFIX - prefiks (&) jest wyświetlany jak zwykły znak $DT_PATH_ELLIPSIS - jeżeli tekst nie mieści się w prostokącie, a zawiera odwrotny ukośnik (\), część tekstu od ostatniego (\) w lewo jest zastąpiona wielokropkiem. Ten styl jest używany do wyświetlania ścieżek do plików. $DT_PREFIXONLY - wyświetla podkreślenie w miejscu znaku po prefiksie (&), inne znaki nie są wyświetlane $DT_RIGHT - wyrównanie tekstu do prawej $DT_RTLREADING - tekst od prawej do lewej, tylko dla czcionek arabskich i hebrajskich $DT_SINGLELINE - tekst jest wyświetlany w jednym wierszu, część niemieszcząca się jest przycinana $DT_TABSTOP - $DT_TOP - wyrównanie tekstu do górnej krawędzi prostokąta (tylko tekst w jednej linii) $DT_VCENTER - centrowanie tekstu w pionie (tylko tekst w jednej linii) $DT_WORDBREAK - niemieszczący się wyrazy przenoszone są do następnego wiersza, także znak końca wiersza powoduje jego złamanie, jeżeli $DT_WORDBREAK nie jest użyte to tekst jest zawsze wyświetlany w jednym wierszu $DT_WORD_ELLIPSIS - tnie dowolne słowo, które nie mieści się w prostokącie i dodaje wielokropek Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <WindowsConstants.au3> #include <FontConstants.au3> ;tworzenie struktury $tRECT = DllStructCreate($tagRect) DllStructSetData($tRECT, "Left", 500) DllStructSetData($tRECT, "Top", 250) DllStructSetData($tRECT, "Right", 1100) DllStructSetData($tRECT, "Bottom", 650) ;kontekst do desktopu $hDC = _WinAPI_GetDC(0) ;tworzenie trzcionki logicznej $hFont = _WinAPI_CreateFont(50, 0, 0, 0, 400, False, True, False, _ -1, -1, -1, -1, 0, 'Times New Roman') ;powiązanie czcionki z kontekstem $hOldFont = _WinAPI_SelectObject($hDC, $hFont) ;wypisanie tekstu _WinAPI_DrawText($hDC, "AutoIt is the best!", $tRECT, $DT_CENTER) Sleep(3000) ;zwolnienie zasobów _WinAPI_SelectObject($hDC, $hOldFont) _WinAPI_DeleteObject($hFont) _WinAPI_ReleaseDC(0, $hDC) _WinAPI_InvalidateRect(0, 0) </syntaxhighlight> ===_WinAPI_DrawLine=== #include <WinAPI.au3> _WinAPI_DrawLine($hDC, $iX1, $iY1, $iX2, $iY2) Funkcja rysuje w kontekście odcinek linii prostej. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iX1''' i '''$iY1''' - współrzędne, pozioma i pionowa początku odcinka '''$iX2''' i '''$iY2''' - współrzędne, pozioma i pionowa końca odcinka ===_WinAPI_LineTo=== #include <WinAPI.au3> _WinAPI_LineTo($hDC, $iX, $iY) Funkcja rysuje odcinek od bieżącego punktu do punktu o współrzędnych podanych jako parametry. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iX''' i '''$iY''' - współrzędne, pozioma i pionowa końca odcinka ===_WinAPI_MoveTo=== #include <WinAPI.au3> _WinAPI_MoveTo($hDC, $iX, $iY) Funkcja przesuwa aktualną pozycję do określonego punktu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$iX''' i '''$iY''' - nowa współrzędne, pozioma i pionowa aktualnego pozycji Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> $hDC = _WinAPI_GetWindowDC(0) ;kontekst do pulpitu ;tworzenie pióra $hPen = _WinAPI_CreatePen($PS_SOLID, 3, 0xFF) ;przypisanie pióra do kontekstu $obj_orig = _WinAPI_SelectObject($hDC, $hPen) _WinAPI_DrawLine($hDC, 400, 300, 1000, 250) $del = 50 ;przesunięcie punktu aktualnego _WinAPI_MoveTo($hDC, 0, @DesktopHeight/2 - $del) For $x = $del To @DesktopWidth Step 50 $y = @DesktopHeight/2 + $del _WinAPI_LineTo($hDC, $x, $y) ;rysowanie linii $del = -$del Next Sleep(4000) ;powrót do pierwotnego pióra _WinAPI_SelectObject($hDC, $obj_orig) ;zwolnienie zasobów _WinAPI_DeleteObject($hPen) _WinAPI_ReleaseDC(0, $hDC) </syntaxhighlight> ===_WinAPI_DrawEdge=== #include <WinAPI.au3> _WinAPI_DrawEdge($hDC, $ptrRect, $nEdgeType, $grfFlags) Funkcja rysuje krawędzie prostokąta. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu kontekst '''$ptrRect''' - wskaźnik do struktury $tagRECT z opisem położenie i wielkości prostokąta '''$nEdgeType''' - określa rodzaj krawędzi $BDR_RAISEDINNER - wypukła wewnętrzna krawędź $BDR_SUNKENINNER - wklęsła wewnętrzna krawędź $BDR_RAISEDOUTER - wypukła zewnętrzna krawędź $BDR_SUNKENOUTER - wklęsła zewnętrzna krawędź $EDGE_BUMP - kombinacja $BDR_RAISEDOUTER i $BDR_SUNKENINNER $EDGE_ETCHED - kombinacja $BDR_SUNKENOUTER i $BDR_RAISEDINNER $EDGE_RAISED - kombinacja $BDR_RAISEDOUTER i $BDR_RAISEDINNER $EDGE_SUNKEN - kombinacja $BDR_SUNKENOUTER i $BDR_SUNKENINNER '''$grfFlags''' - określa rodzaj obramowania. Parametr ten może być kombinacją następujących wartości: $BF_ADJUST - $BF_BOTTOM - dolna krawędź prostokąta $BF_BOTTOMLEFT - dolna i lewa krawędź prostokąta $BF_BOTTOMRIGHT - dolna i prawa krawędź prostokąta $BF_DIAGONAL - przekątna $BF_DIAGONAL_ENDBOTTOMLEFT - przekątna, od prawego-górnego do lewego-dolnego $BF_DIAGONAL_ENDBOTTOMRIGHT - przekątna, od lewego-górnego do prawego-dolnego $BF_DIAGONAL_ENDTOPLEFT - przekątna, od prawego-dolnego do lewego-górnego $BF_DIAGONAL_ENDTOPRIGHT - przekątna, od lewego-dolnego do prawego-górnego $BF_FLAT - obramowanie niewidoczne $BF_LEFT - lewa krawędź prostokąta $BF_MIDDLE - wnętrze prostokąta zamalowane (przekątne nie będą widoczne) $BF_MONO - obramowanie pojedynczą linią (wszystkie elementy jednakową) $BF_RECT - cały obwód od prostokąta $BF_RIGHT - prawa krawędź prostokąta $BF_SOFT - $BF_TOP - górna krawędź prostokąta $BF_TOPLEFT - górna i lewa krawędź prostokąta $BF_TOPRIGHT - górna i prawej krawędź prostokąta Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <BorderConstants.au3> ;tworzenie GUI $hGUI = GUICreate("_WinAPI_DrawEdge", 410, 300) GUISetState() ;kontekst do przestrzeni roboczej okna $hDC = _WinAPI_GetDC($hGUI) ;tworzenie struktury z opisem prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) $ptrRect = DllStructGetPtr($tRect) ;rysowanie prostokąta _WinAPI_DrawEdge($hDC, $ptrRect, $EDGE_RAISED , $BF_RECT) ;przesunięcie prostokąta poprzez zmianę wartości pól w strukturze DllStructSetData($tRect, "Left", 220) DllStructSetData($tRect, "Right", 400) ;rysowanie nowego prostokąta z przekątnymi _WinAPI_DrawEdge($hDC, $ptrRect, $EDGE_BUMP, $BF_DIAGONAL_ENDBOTTOMLEFT) _WinAPI_DrawEdge($hDC, $ptrRect, $EDGE_BUMP, $BF_DIAGONAL_ENDBOTTOMRIGHT) _WinAPI_DrawEdge($hDC, $ptrRect, $EDGE_BUMP, $BF_RECT) ;zwolnienie zasobów _WinAPI_ReleaseDC($hGUI, $hDC) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_DrawFrameControl=== #include <WinAPI.au3> _WinAPI_DrawFrameControl($hDC, $ptrRect, $nType, $nState) Funkcja rysuje elementy kontrolek określonego typu i stylu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$tRect''' - struktura $tagRECT, zawierająca współrzędne prostokąta, w którym będzie wrysowany element '''$nType''' - typ rysowanego elementu. Parametr ten może być jedną z następujących wartości: $DFC_BUTTON - standardowy przycisk $DFC_CAPTION - pasek tytułu $DFC_MENU - pasek menu $DFC_POPUPMENU - element menu podręcznego $DFC_SCROLL - pasek przewijania '''$nState''' - określa początkowy stan ramki kontrolki: ------------------------------------------------------------------------------------ Jeśli $nType jest $DFC_BUTTON to $nState może być jedną z następujących wartości: ------------------------------------------------------------------------------------ $DFCS_BUTTON3STATE - przycisk 3-stanowy $DFCS_BUTTONCHECK - pole wyboru $DFCS_BUTTONPUSH - przycisk $DFCS_BUTTONRADIO - przycisk radio $DFCS_BUTTONRADIOIMAGE - Obraz dla przycisku opcji ( nonsquare potrzebuje obrazu ) $DFCS_BUTTONRADIOMASK - Maska dla przycisku opcji ( nonsquare potrzebuje maski ) ------------------------------------------------------------------------------------ Jeśli $nType jest $DFC_CAPTION , $nState może być jedną z następujących wartości: ------------------------------------------------------------------------------------ $DFCS_CAPTIONCLOSE - przycisk Zamknij $DFCS_CAPTIONHELP - przycisk Help $DFCS_CAPTIONMAX - przycisk Maksymalizuj $DFCS_CAPTIONMIN - przycisk Minimalizuj $DFCS_CAPTIONRESTORE - przycisk Restore ------------------------------------------------------------------------------------ Jeśli $nType jest $DFC_MENU , $ nState może być jedną z następujących wartości : ------------------------------------------------------------------------------------ $DFCS_MENUARROW - strzałka w prawo (rozwijanie podmenu) $DFCS_MENUARROWRIGHT - strzałka w lewo $DFCS_MENUBULLET - kropka $DFCS_MENUCHECK - zaznaczenia ------------------------------------------------------------------------------------ Jeśli $nType jest $DFC_SCROLL , $nState może być jedną z następujących wartości : ------------------------------------------------------------------------------------ $DFCS_SCROLLCOMBOBOX - strzałka w dół (pasek przewijania Combo box) $DFCS_SCROLLDOWN - strzałka w dół z paska przewijania $DFCS_SCROLLLEFT - strzałka w lewo z paska przewijania $DFCS_SCROLLRIGHT - Strzałka w prawo z paska przewijania $DFCS_SCROLLSIZEGRIP - uchwyt zmiany wielkości okna (prawy) $DFCS_SCROLLSIZEGRIPRIGHT - uchwyt zmiany wielkości okna (lewy) $DFCS_SCROLLUP - strzałka w górę z paska przewijania ------------------------------------------------------------------------------------ Następujących wartości mogą być dodane w celu ustawienia stanu elementu: ------------------------------------------------------------------------------------ $DFCS_CHECKED - przycisk jest zaznaczony $DFCS_FLAT - przycisk z płaskim obramowaniem $DFCS_INACTIVE - przycisk jest nieaktywny (szary) $DFCS_PUSHED - przycisk jest wciśnięty Przykład: <syntaxhighlight lang="autoit"> #include <FrameConstants.au3> #include <GUIConstantsEx.au3> #include <WinAPI.au3> ;tworzenie GUI $hGUI = GUICreate("_WinAPI_DrawFrameControl", 300, 300) GUISetState() $hDC = _WinAPI_GetDC($hGUI) $tRect = DllStructCreate($tagRECT) $ptrRect = DllStructGetPtr($tRect) $DFC = $DFC_CAPTION ;elementy paska tytułu SetPosSize($tRect, 20, 25, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_CAPTIONCLOSE) SetPosSize($tRect, 50, 25, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_CAPTIONHELP + $DFCS_INACTIVE) SetPosSize($tRect, 80, 25, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_CAPTIONMIN) SetPosSize($tRect, 110, 25, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_CAPTIONRESTORE + $DFCS_PUSHED) $DFC = $DFC_MENU ;elementy menu SetPosSize($tRect, 20, 65, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_MENUARROW) SetPosSize($tRect, 50, 65, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_MENUARROWRIGHT) SetPosSize($tRect, 80, 65, 22, 22) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_MENUBULLET) SetPosSize($tRect, 110, 65, 40, 40) _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC, $DFCS_MENUCHECK) ;zwolnienie zasobów _WinAPI_ReleaseDC($hGUI, $hDC) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE Func SetPosSize(ByRef $tRect, $x, $y, $w, $h) DllStructSetData($tRect, "Left", $x) DllStructSetData($tRect, "Top", $y) DllStructSetData($tRect, "Right", $x + $w) DllStructSetData($tRect, "Bottom", $y + $h) EndFunc </syntaxhighlight> ===_WinAPI_FillRect=== #include <WinAPI.au3> _WinAPI_FillRect($hDC, $ptrRect, $hBrush) Funkcja zamalowuje prostokąt podanym pędzlem. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$ptrRect''' - wskaźnik do struktury $tagRECT z opisem położenie i wielkości prostokąta '''$hBrush''' - uchwyt do pędzla, lub powiększony o 1 kod jednego z kolorów systemowych. Kody kolorów systemowych od 0 do 30 (np. 13 to kolor wybranej pozycji w kontrolce). Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("WinAPI", 400, 300) $hDC = _WinAPI_GetWindowDC($hGUI) GUISetState() ;tworzenie pędzla (czerwony) $hBrush = _WinAPI_CreateSolidBrush(0x0000FF) ;tworzenie struktury z danymi prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) ;odczyt wskaźnika do struktury $ptrRect = DllStructGetPtr($tRect) ;zamalowanie prostokąta zdefiniowanym pędzlem _WinAPI_FillRect($hDC, $ptrRect, $hBrush) DllStructSetData($tRect, "Left", 210) DllStructSetData($tRect, "Right", 390) ;zamalowanie prostokąta standardowym kolorem _WinAPI_FillRect($hDC, $ptrRect, 29+1) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC($hGUI, $hDC) </syntaxhighlight> ===_WinAPI_FrameRect=== #include <WinAPI.au3> _WinAPI_FrameRect($hDC, $ptrRect, $hBrush) Funkcja rysuje ramkę wokół prostokątnego obszaru za pomocą podanego pędzla. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu '''$ptrRect''' - wskaźnik do struktury $tagRECT z opisem położenie i wielkości prostokąta '''$hBrush''' - uchwyt do pędzla Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("WinAPI", 400, 300) $hDC = _WinAPI_GetWindowDC($hGUI) GUISetState() ;tworzenie pędzla $hBrush = _WinAPI_CreateSolidBrush(0x0000FF) ;tworzenie struktury z danymi prostokąta $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", 20) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 200) DllStructSetData($tRect, "Bottom", 200) ;odczyt wskaźnika do struktury $ptrRect = DllStructGetPtr($tRect) ;rysowanie ramki wokół prostokąta _WinAPI_FrameRect($hDC, $ptrRect, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC($hGUI, $hDC) </syntaxhighlight> ==Ikony i kursory== ===_WinAPI_DrawIcon=== #include <WinAPI.au3> _WinAPI_DrawIcon($hDC, $iX, $iY, $hIcon) Funkcja rysuje ikonę w określonym kontekście urządzenia. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu urządzenia '''$iX''' i '''$iY''' - współrzędne lewego górnego rogu ikony '''$hIcon''' - uchwyt do ikony ===_WinAPI_DrawIconEx=== #include <WinAPI.au3> _WinAPI_DrawIconEx($hDC, $iX, $iY, $hIcon [, $iWidth = 0 [, $iHeight = 0 [, $iStep = 0 [, $hBrush = 0 [, $iFlags = 3]]]]]) Funkcja rysuje ikonę w określonym kontekście urządzenia. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hDC''' - uchwyt do kontekstu urządzenia '''$iX''' i '''$iY''' - współrzędne lewego górnego rogu ikony '''$hIcon''' - uchwyt do ikony '''$iWidth''' i '''$iHeight''' - szerokość i wysokość ikony lub kursora, 0 szerokość domyślna '''$iStep''' - indeks kadru animowanego kursora, parametr jest ignorowany gdy ikona nie jest animowanym kursorem '''$hBrush''' - uchwyt pędzla do tworzenia migotania kursora '''$iFlags''' - parametr ten może być jedna z następujących wartości: 1 - rysowanie ikony lub kursora za pomocą maski 2 - rysowanie ikony lub kursora za pomocą obrazu 3 - rysowanie ikony lub kursora za pomocą maski i obrazu ===_WinAPI_LoadShell32Icon=== #include <WinAPI.au3> _WinAPI_LoadShell32Icon($iIconID) Funkcja odczytuje i zwraca uchwyt do ikony z pliku '''Shell32.dll''', lub 0 gdy wystąpił błąd. '''$iIconID''' - ID ikony w pliku '''Shell32.dll''' ===_WinAPI_CopyIcon=== #include <WinAPI.au3> _WinAPI_CopyIcon($hIcon) Funkcja tworzy duplikat ikony. Zwraca uchwyt do duplikatu, lub 0 gdy wystąpił błąd. '''$hIcon''' - uchwyt do kopiowanej ikony ===_WinAPI_DestroyIcon=== #include <WinAPI.au3> _WinAPI_DestroyIcon($hIcon) Funkcja usuwa z pamięci ikonę o podanym uchwycie. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hIcon''' - uchwyt do usuwanej ikony Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> ;tworzenie GUI $hGUI = GUICreate("_WinAPI_DrawIcon", 400, 300) $hDC = _WinAPI_GetDC($hGUI) GUISetState() ;odczyt uchwytu do ikony $hIcon1 = _WinAPI_LoadShell32Icon(4) ;rysowanie ikony _WinAPI_DrawIcon($hDC, 20, 40, $hIcon1) ;tworzenie duplikatu ikony $hIcon2 = _WinAPI_CopyIcon($hIcon1) ;rysowanie ikony _WinAPI_DrawIconEx($hDC, 100, 40, $hIcon2, 160, 160) ;zwolnienie zasobów _WinAPI_ReleaseDC($hGUI, $hDC) _WinAPI_DestroyIcon($hIcon1) _WinAPI_DestroyIcon($hIcon2) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_SetCursor=== #include <WinAPI.au3> _WinAPI_SetCursor($hCursor) Funkcja ustawia kształt kursora. Zwraca uchwyt do poprzedniego kursora (o ile taki istniał), lub gdy nie było kursora. '''$hCursor''' - uchwyt do nowego kursora Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hCursor = 0x1000b $hGUI = GUICreate("_WinAPI_SetCursor", 400, 300) GUISetState() Do _WinAPI_SetCursor($hCursor) Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_GetCursorInfo=== #include <WinAPI.au3> _WinAPI_GetCursorInfo() Funkcja zwraca informacje o kursorze w postaci jednowymiarowej tablicy. Jeżeli wystąpi błąd makro @error<>0. Informacje w zwracanej tablicy: [0] - zawsze True [1] - True jeżeli kursor jest widoczny, w przeciwnym razie False [2] - uchwyt do kursora [3] - współrzędna pozioma kursora (globalna) [4] - współrzędna pionowa kursora (globalna) Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> ;odczyt informacji o kursorze $arr = _WinAPI_GetCursorInfo() ;tekst do wyświetlenia $Cursorinfo = " Zawsze : " & $arr[0] & @LF & _ " Widoczny?: " & $arr[1] & @LF & _ " Uchwyt : " & $arr[2] & @LF & _ " Pozycja X: " & $arr[3] & @LF & _ " Pozycja Y: " & $arr[4] ;tworzenie GUI $hGUI = GUICreate("Kursor", 200, 300) GUICtrlCreateLabel("DANE KURSORA", 58, 20,120,70) GUICtrlCreateLabel("IKONA KURSORA", 58, 150,120,70) $lab = GUICtrlCreateLabel($Cursorinfo, 40, 40,120,70) GUICtrlSetBkColor($lab,0xffff00) $hDC = _WinAPI_GetDC($hGUI) GUISetState() ;rysowanie ikony kursora _WinAPI_DrawIconEx($hDC, 60, 190, $arr[2], 100, 100) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_GetIconInfo=== #include <WinAPI.au3> _WinAPI_GetIconInfo($hIcon) Funkcja zwraca w postaci jednowymiarowej tablicy informacje o określonej ikonie lub kursorze. Jeżeli wystąpi błąd makro @error<>0. Informacje w zwracanej tablicy: [0] - zawsze True [1] - True oznacza ikonę, False kursor [2] - współrzędna pozioma "hot spotu" kursora [3] - współrzędna pionowa "hot spotu" kursora [4] - uchwyt do maski ikony [5] - uchwyt do kolorowej bitmapy ikony Dla ikon "hot spot" jest zawsze w środku ikony. '''$hIcon''' - uchwyt do ikony lub jeden z poniższych kodów (dla W7): 0x10003 - normalna strzałka 0x10005 - pionowy kursor tekstowy (I) 0x10007 - koło (oczekiwanie na zakończenie operacji) 0x10009 - krzyż 0x1000B - strzałka w górę 0x1000D - dwustronna strzałka pochylona w prawo 0x1000F - dwustronna strzałka pochylona w prawo 0x10011 - dwustronna strzałka pozioma 0x10013 - dwustronna strzałka pionowa 0x10015 - krzyż z 4 strzałkami na ramionach 0x10017 - znak "STOP" 0x10019 - strzałka z kółkiem 0x1001B - strzałka ze znakiem zapytania 0x1001D - pióro 0x1001F - rączka 0x10021 - przycisk 0x10023 - strzałka z płytą 0x10025 - ikona aplikacji 0x10027 - ikona aplikacji 0x10029 - ostrzeżenie (wykrzyknik w żółtym trójkącie) 0x1002B - znak zapytania 0x1002D - krzyż w czerwonym kole 0x1002F - informacja (i w niebieskim kole) 0x10031 - ikona aplikacji 0x10033 - tarcza Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $kod=0x00002D ;odczyt informacji o kursorze $arr = _WinAPI_GetIconInfo($kod) ;tekst do wyświetlenia $IconInfo = " KOD=" & $kod & " (" & Ptr($kod) & ")" & @LF & _ "-------------------------------------" & @LF & _ " Zawsze : " & $arr[0] & @LF & _ " Ikona? : " & $arr[1] & @LF & _ " X hot spot : " & $arr[2] & @LF & _ " Y hot spot : " & $arr[2] & @LF & _ " Uchwyt maski: " & $arr[4] & @LF & _ " Uchwyt bitmapy: " & $arr[5] ;tworzenie GUI $hGUI = GUICreate("Kursor", 200, 305) GUICtrlCreateLabel("DANE IKONY", 58, 15,120,70) GUICtrlCreateLabel("WYGLĄD IKONY", 58, 180,120,70) $hLab = GUICtrlCreateLabel($IconInfo, 15, 35,170,135) GUICtrlSetBkColor($hLab,0xffff00) GUISetState() ;odczyt uchwytu do kontekstu przestrzeni roboczej okna $hDC = _WinAPI_GetDC($hGUI) ;rysowanie ikony _WinAPI_DrawIconEx($hDC, 50, 200, $kod, 100, 100) Do Sleep(50) _WinAPI_DrawIconEx($hDC, 50, 200, $kod, 100, 100) Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_ReleaseDC ($hGUI, $hDC) </syntaxhighlight> ===_WinAPI_ShowCursor=== #include <WinAPI.au3> _WinAPI_ShowCursor($fShow) Funkcja włącza/wyłącza wyświetlanie kursora w oknie skryptu. Zwraca nowy stan licznika wyświetlania, 0 - kursor wyświetlany, -1 - kursor ukryty. '''$fShow''' - True - kursor będzie wyświetlany, False - kursor będzie ukryty Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GUIConstantsEx.au3> $iCount = 0 $hGui = GUICreate('Kursor widoczny', 350, 200) $iButton = GUICtrlCreateButton('Schowaj kursor', 10, 10, 330, 28) GUISetState() Do Switch GUIGetMsg() Case $iButton If $iCount Then $iCount = _WinAPI_ShowCursor(True) GUICtrlSetData($iButton, 'Schowaj kursor') WinSetTitle($hGui, '','Kursor widoczny, licznik = ' & $iCount) Else $iCount = _WinAPI_ShowCursor(False) GUICtrlSetData($iButton, 'Pokaż kursor') WinSetTitle($hGui, '','Kursor niewidoczny, licznik = ' & $iCount) EndIf Case $GUI_EVENT_CLOSE Exit EndSwitch Until False </syntaxhighlight> ===_WinAPI_SaveHICONToFile=== #include <WinAPIGdi.au3> _WinAPI_SaveHICONToFile ( $sFilePath, $vIcon [, $bCompress = False [, $iStart = 0 [, $iEnd = -1]]] ) Funkcja zapisuje ikonę na dysku. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. '''$sFilePath''' - nazwa pliku ze ścieżką dostępu '''$vIcon''' - uchwyt do ikony lub tablica uchwytów ikon (jeżeli plik ma zawierać kolekcję ikon) '''$bCompress''' - określa czy użyć kompresji PNG przy zapisie ikon 32-bitowych. True - tak, False - nie '''$iStart''' - (tylko dla tablicy uchwytów) indeks pierwszej ikony do zapisu na dysku '''$iEnd''' - (tylko dla tablicy uchwytów) indeks ostatniej ikony do zapisu, domyślna wartość -1 oznacza ostatni indeks w tablicy Przykład: <syntaxhighlight lang="autoit"> #include <GDIPlus.au3> ;#include <WinAPIGdi.au3> nie jest konieczne, gdyż GDIPlus.au3 używa WinAPIGdi.au3 Opt('TrayMenuMode', 3) _GDIPlus_Startup() $sFile = FileOpenDialog("Wybierz obrazek", "", "Obrazy (*.bmp;*.png;*.jpg;*.gif;*.tif)") $hBitmap = _GDIPlus_ImageLoadFromFile($sFile) ;wczytanie bitmapy z dysku $hIcon = _GDIPlus_HICONCreateFromBitmap($hBitmap) ;tworzenie ikony z bitmapy _WinAPI_SaveHICONToFile('MyIcon.ico', $hIcon) ;zapisanie ikony na dysku ;zwolnienie zasobów _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() ;tworzenie menu w tray'u $hMenu = TrayItemGetHandle(0) $idView = TrayCreateItem('Wyświetlenie obrazu ikony') TrayCreateItem('') $idExit = TrayCreateItem('Koniec') TraySetIcon('MyIcon.ico') ;zmiana ikony w tray'u TraySetState() TrayTip("Uwaga", 'Zmiana ikony w tray', 30) Do $idMsg = TrayGetMsg() If $idMsg = $idExit Then Exit if $idMsg = $idView Then SplashImageOn('', $sFile) Sleep(3000) SplashOff() EndIf Until 0 </syntaxhighlight> ==Regiony (Window Regions)== Każde okno w Windows ma zdefiniowany region, który jest widoczny dla użytkownika. Normalnie system operacyjny ustala ten region na całą powierzchnię okna. Istnieją jednak możliwość programowego ograniczenia widocznego obszaru okna poprzez zdefiniowanie własnego regionu. Po za tym regionem okno będzie niewidoczne i przeźroczyste. Samo ustalenie regionu nie ma wpływu na kształt całego okna, więc istnieje możliwość zmiany regonu w czasie działania skryptu. Samo okno nie zmienia się, zmienia się tylko kształt obszaru, w którym to okno jest widoczne. '''UWAGA:''' 1. Wszystkie współrzędne używane do definiowania regionów odnoszą się do całego okna, a nie jego przestrzeni roboczej. 2. Nie należy usuwać uchwytów regionu. System sam usuwa uchwyty, gdy nie są już potrzebne. Poniżej kilka funkcji do operowania regionami. ===_WinAPI_CreateRectRgn=== #include <WinAPI.au3> _WinAPI_CreateRectRgn($iLeftRect, $iTopRect, $iRightRect, $iBottomRect) Funkcja tworzy prostokątny region. Zwraca uchwyt do regionu, lub 0 gdy wystąpił błąd. '''$iLeftRect''' i '''$iTopRect''' - współrzędna lewego górnego narożnika prostokąta '''$iRightRect''' i '''$iBottomRect''' - współrzędna prawego dolnego narożnika prostokąta '''UWAGA:''' 1. Wszystkie współrzędne używane do definiowania regionów odnoszą się do całego okna, a nie jego przestrzeni roboczej. 2. Nie należy usuwać uchwytów regionu. System sam usuwa uchwyty, gdy nie są już potrzebne. ===_WinAPI_CreateRoundRectRgn=== #include <WinAPI.au3> _WinAPI_CreateRoundRectRgn($iLeftRect, $iTopRect, $iRightRect, $iBottomRect, $iWidthEllipse, $iHeightEllipse) Funkcja tworzy prostokątny region z zaokrąglonymi narożnikami. Zwraca uchwyt do regionu, lub 0 gdy wystąpił błąd. '''$iLeftRect''' i '''$iTopRect''' - współrzędna lewego górnego narożnika prostokąta '''$iRightRect''' i '''$iBottomRect''' - współrzędna prawego dolnego narożnika prostokąta '''$iRightRect''' i '''$iBottomRect''' - szerokość i wysokość elipsy tworzącej zaokrąglenia narożników ===_WinAPI_CombineRgn=== #include <WinAPI.au3> _WinAPI_CombineRgn($hRgnDest, $hRgnSrc1, $hRgnSrc2, $iCombineMode) Funkcja tworzy region będący kombinacją dwóch innych regionów. Zwraca typ powstałego regionu, lub 0 gdy wystąpił błąd. Zwracane wartości: $NULLREGION = 1 - region jest pusty $SIMPLEREGION = 2 - pojedynczy prostokąt $COMPLEXREGION = 3 - region kompleksowy zawierający więcej elementów Parametry: '''$hRgnDest''' - uchwyt do nowego regionu o wymiarach odpowiadających kombinacji dwóch pozostałych regionów. Region ten musi być wcześniej zdefiniowany w sposób dowolny, gdyż i tak zostanie nadpisany poprzez referencję. '''$hRgnSrc1''' i '''$hRgnSrc2''' - uchwyty do dwóch regionów, których kombinację tworzymy '''$iCombineMode''' - parametr określający sposób łączenia dwóch regionów. Może być jedną z poniższych wartości: $RGN_AND = 1 - część wspólna $RGN_OR = 2 - suma obu regionów $RGN_XOR = 3 - suma regionów z wyłączeniem części wspólnej $RGN_DIFF = 4 - drugi region odjęty od pierwszego $RGN_COPY = 5 - kopia pierwszego regionu ===_WinAPI_SetWindowRgn=== #include <WinAPI.au3> _WinAPI_SetWindowRgn($hWnd, $hRgn [, $bRedraw]) Funkcja aktywuj region o podanym uchwycie. Zwraca liczbę <>0 gdy sukces, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, którego dotyczyć będzie aktywowany region '''$hRgn''' - uchwyt do zdefiniowanego regionu '''$bRedraw''' - określa czy system ma odświeżyć okno po aktywowaniu regionu Przykład manipulowania regionami: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState(@SW_SHOW) $pos = WinGetPos($hGUI) $width = $pos[2] $height = $pos[3] ;okno normalne Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;region prostokątny $rgn = _WinAPI_CreateRectRgn(10, 10, 200, 200) _WinAPI_SetWindowRgn($hGUI, $rgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;region z zaokrąglonymi narożnikami $rgn = _WinAPI_CreateRoundRectRgn(0, 0, $width, $height,$width, $height) _WinAPI_SetWindowRgn($hGUI, $rgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;region kombinowany $rgn = _WinAPI_CreateRectRgn(0, 0, $width, $height) $rgn1 = _WinAPI_CreateRoundRectRgn(0, 0,200, 200,200, 200) $rgn2 = _WinAPI_CreateRoundRectRgn(220, 100,350,210, 50, 50) _WinAPI_CombineRgn($rgn, $rgn1, $rgn2, 2) _WinAPI_SetWindowRgn($hGUI, $rgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;region kombinowany z przezroczystym tłem $rgn = _WinAPI_CreateRectRgn(0, 0, $width, $height) $rgn2 = _WinAPI_CreateRectRgn(8, 28, 349, 232) $rgn3 = _WinAPI_CreateRectRgn(104, 176, 252, 199) _WinAPI_CombineRgn($rgn, $rgn, $rgn2, 3) _WinAPI_CombineRgn($rgn, $rgn, $rgn3, 2) _WinAPI_SetWindowRgn($hGUI, $rgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit </syntaxhighlight> ===_WinAPI_GetWindowRgn=== #include <WinAPI.au3> _WinAPI_GetWindowRgn($hWnd, $hRgn) Funkcja odczytuje uchwyt do aktualnie ustawionego regionu. Zwraca typ regionu (jak '''_WinAPI_CombineRgn'''), lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, którego region będzie odczytywany '''$hRgn''' - uchwyt do regionu, może być dowolny, gdyż zostanie nadpisany przez referencję odczytywanym regionem okna. Najprościej stworzyć dowolny region funkcją '''_WinAPI_CreateRectRgn'''. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> ;tworzenie testowego GUI $hGUI = GUICreate(" Test Windows regions", 350, 210) GUISetBkColor(0xff0000, $hGUI) $btn_exit = GUICtrlCreateButton("Wyjście", 100, 150, 150) $lab = GUICtrlCreateLabel("To jest testowe okno", 55, 40,150,85) GUICtrlSetBkColor($lab,0xffff00) GUISetState(@SW_SHOW) ;okno wyjściwe Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;ustalenie regionu _WinAPI_SetWindowRgn($hGUI, _WinAPI_CreateRectRgn(0, 0, 200, 210)) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;tworzenie dowolnego regionu $hrgn = _WinAPI_CreateRectRgn(0, 0, 0, 0) ;odczyt uchwytu aktualnego regionu _WinAPI_GetWindowRgn($hGUI, $hrgn) ;zmiana regionu _WinAPI_SetWindowRgn($hGUI, _WinAPI_CreateRectRgn(0, 0, 200, 20)) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit ;odtworzenie regionu _WinAPI_SetWindowRgn($hGUI, $hrgn) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit </syntaxhighlight> ==Funkcje związane z oknami i ekranem== W systemie Windows istnieje wiele różnych typów okien. Okna '''overlapped''' to standardowe okna z ramką i napisem tytułowym. Okna typu '''child''' to okna potomne, wyświetlane w obszarze roboczym swojego okna rodzica. Kiedy przesuwasz po ekranie okno rodzica, to razem z nim przesuwają się wszystkie jego okna-dzieci. Okna typu '''popup''' to również okna potomne, wyświetlane jednak niezależnie od położenia i rozmiarów okna rodzica. Okna potomne znajdują się zawsze nad swoim oknem-rodzicem (nie mogą być przez nie zasłonięte). Również obiekty sterujące typu: przyciski, listbox'y, paski przewijania i inne opisane niżej obiekty są oknami. ===_WinAPI_CreateWindowEx=== #include <WinAPI.au3> _WinAPI_CreateWindowEx($iExStyle, $sClass, $sName, $iStyle, $iX, $iY, $iWidth, $iHeight, $hParent [, $hMenu = 0 [, $hInstance = 0 [, $pParam = 0]]]) Funkcja zwraca uchwyt do tworzonego okna, lub 0 gdy wystąpił błąd. '''$iExStyle''' - rozszerzony styl okna '''$sClass''' - nazwa klasy okna, np.: BUTTON, COMBOBOX, EDIT, LISTBOX, MDICLIENT, SCROLLBAR, STATIC '''$sName''' - nazwa okna '''$iStyle''' - styl okna '''$iX''', '''$iY''' - współrzędne lewego górnego narożnika okna '''$iWidth''', '''$iHeight''' - szerokość i wysokość okna '''$hParent''' - uchwyt okna nadrzędnego '''$hMenu''' - uchwyt do menu lub numer kontrolki '''$hInstance''' - uchwyt instancji '''$pParam''' - parametr używany przy tworzeniu okna MDI (Multiple Document Interface) UWAGA: $iExStyle i $iStyle wg rozdziału [[AutoIt/GUI#Tworzenie okna GUI|AutoIt / GUI / Opis funkcji GUI / Tworzenie okna GUI]]. ===_WinAPI_DestroyWindow=== #include <WinAPI.au3> _WinAPI_DestroyWindow($hWnd) Funkcja niszczy okno o podanym uchwycie. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> $hGui = GUICreate('CreateWindowEx', 240, 60) $hEdit = _WinAPI_CreateWindowEx($WS_EX_CLIENTEDGE, "Edit", "Mały test", _ BitOR($WS_CHILD, $WS_VISIBLE), 10, 10, 140, 22, $hGui) $hButton = _WinAPI_CreateWindowEx($WS_EX_DLGMODALFRAME, "Button", "Przycisk", _ BitOR($WS_CHILD, $WS_VISIBLE), 160, 10, 70, 22, $hGui) GUISetState() Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _WinAPI_DestroyWindow($hEdit) Sleep(1000) _WinAPI_DestroyWindow($hButton) Sleep(1000) </syntaxhighlight> ===_WinAPI_ShowWindow=== #include <WinAPI.au3> _WinAPI_ShowWindow ( $hWnd [, $iCmdShow = 5] ) Funkcja ustawia określony stan wyświetlanego okna. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt okna '''$iCmdShow''' - określa w jaki sposób wyświetlane jest okno: @SW_HIDE - ukrywa okno @SW_MAXIMIZE - maksymalizuje okno @SW_MINIMIZE - minimalizuje okno i aktywuje następne w kolejności wg kolejności nakładania (Z-order) @SW_RESTORE - wyświetla i aktywuje okno @SW_SHOW - wyświetla i aktywuje okno w domyślnej wielkości i położeniu @SW_SHOWDEFAULT - ustawia stan wyświetlania okna w oparciu o SW_flag określonej w strukturze STARTUPINF @SW_SHOWMAXIMIZED - wyświetla i aktywuje zmaksymalizowane okno @SW_SHOWMINIMIZED - wyświetla i aktywuje zminimalizowane okno @SW_SHOWMINNOACTIVE - wyświetla zminimalizowane okno @SW_SHOWNA - wyświetla okno z aktualnymi ustawieniami @SW_SHOWNOACTIVATE - wyświetla w domyślnej wielkości i położeniu @SW_SHOWNORMAL - wyświetla i aktywuje okno ===_WinAPI_RedrawWindow=== #include <WinAPI.au3> _WinAPI_RedrawWindow ( $hWnd [, $tRECT = 0 [, $hRegion = 0 [, $iFlags = 5]]] ) Funkcja aktualizuje określony prostokąt lub region, w obszarze roboczym danego okna. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt okna '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru, parametr jest ignorowany, gdy w $hRegion podano uchwyt do zdefiniowanego regionu aktualizacji '''$hRegion''' - uchwyt do zdefiniowanego regionu aktualizacji, jeżeli $hRegion=0 i $tRect=0 aktualizowany jest cały obszar klienta '''$iFlags''' - flaga definiująca sposób przerysowania okna, może być kombinacją następujących wartości (zdefiniowane w <WindowsConstants.au3>): $RDW_ERASE - Causes the window to receive a WM_ERASEBKGND message when the window is repainted $RDW_FRAME - Causes any part of the nonclient area of the window that intersects the update region to receive a WM_NCPAINT message. $RDW_INTERNALPAINT - Causes a WM_PAINT message to be posted to the window regardless of whether any portion of the window is invalid. $RDW_INVALIDATE - Invalidates $tRECT or $hRegion. If both are 0, the entire window is invalidated. $RDW_NOERASE - Suppresses any pending $WM_ERASEBKGND messages $RDW_NOFRAME - Suppresses any pending $WM_NCPAINT messages $RDW_NOINTERNALPAINT - Suppresses any pending internal $WM_PAINT messages $RDW_VALIDATE - Validates $tRECT or $hRegion $RDW_ERASENOW - Causes the affected windows to receive $WM_NCPAINT and $WM_ERASEBKGND messages, if necessary, before the function returns $RDW_UPDATENOW - Causes the affected windows to receive $WM_NCPAINT, $WM_ERASEBKGND, and $WM_PAINT messages, if necessary, before the function returns. $RDW_ALLCHILDREN - Includes child windows in the repainting operation $RDW_NOCHILDREN - Excludes child windows from the repainting operation ===_WinAPI_InvalidateRect=== #include <WinAPI.au3> _WinAPI_InvalidateRect($hWnd [, $tRect = 0 [, $fErase = True]]) Funkcja powoduje odświeżenie prostokątnego obszaru okna. '''$hWnd''' - uchwyt okna, 0 oznacza cały desktop '''$tRect''' - struktura $tagRECT zawierająca dane o położeniu i wielkości prostokątnego obszaru '''$fErase''' - określa czy ma być kasowane tło okna, True - tło kasowane, False - tło bez zmian Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <GDIPlus.au3> Local $tRect = DllStructCreate($tagRECT) $hGUI = GUICreate("Okno testowe", 400, 450, 200, 200) GUISetState() test_picture() MsgBox(0, "", "Odświerzenie obszaru wewnątrz okna") DllStructSetData($tRect, "Left", 100) DllStructSetData($tRect, "Top", 50) DllStructSetData($tRect, "Right", 250) DllStructSetData($tRect, "Bottom", 300) _WinAPI_InvalidateRect($hGui, $tRect) MsgBox(0, "", "Odświerzenie całego okna") _WinAPI_InvalidateRect($hGui, 0) Sleep(3000) Func test_picture() $hGUIDC = _WinAPI_GetDC($hGUI) $hDC = _WinAPI_GetWindowDC(0) _WinAPI_BitBlt($hGUIDC, 0, 0, 400, 450, $hDC, 0, 0, $SRCCOPY) _WinAPI_ReleaseDC (0, $hDC) _WinAPI_ReleaseDC ($hGUI, $hGUIDC) EndFunc </syntaxhighlight> ===_WinAPI_IsWindow=== #include <WinAPI.au3> _WinAPI_IsWindow($hWnd) Funkcja sprawdza czy podany uchwyt jest uchwytem istniejącego okna. Zwraca True gdy jest, lub False gdy nie jest. '''$hWnd''' - sprawdzany uchwyt ===_WinAPI_IsWindowVisible=== #include <WinAPI.au3> _WinAPI_IsWindowVisible($hWnd) Funkcja sprawdza czy podany uchwyt jest uchwytem widocznego okna. Zwraca True gdy jest, lub False gdy nie jest. '''$hWnd''' - sprawdzany uchwyt Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hGui = GUICreate('') MsgBox(0, 'Test 1', _WinAPI_IsWindowVisible($hGui)) GUISetState() MsgBox(0, 'Test 2', _WinAPI_IsWindowVisible($hGui)) </syntaxhighlight> ===_WinAPI_EnumWindows=== #include <WinAPI.au3> _WinAPI_EnumWindows([$fVisible = True [, $hwnd = Default]]) Funkcja zwraca listę wszystkich otwartych okien w postaci dwuwymiarowej tablicy: [0][0] - liczba okien (n) - [1][0] - uchwyt pierwszego okna [1][1] - nazwa klasy pierwszego okna ... [n][0] - uchwyt n-tego okna [n][1] - nazwa klasy n-tego okna '''$fVisible''' - określa które okna mają być uwzględnione, True - tylko widoczne, False - wszystkie '''$hwnd''' - uchwyt do okna startowego, domyślnie jest to pulpit Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $aWindows = _WinAPI_EnumWindows() For $i = 1 To $aWindows[0][0] $text = "Uchwyt okna: " & $aWindows[$i][0] & @LF & @LF $text &= "Klasa okna: " & $aWindows[$i][1] & @LF & @LF $text &= "Nazwa okna: " & WinGetTitle($aWindows[$i][0]) & @LF & @LF $text &= "Tekst w oknie: " & WinGetText($aWindows[$i][0]) & @LF & @LF $text &= "Nr procesu okna: " & WinGetProcess($aWindows[$i][0]) MsgBox(0, "Otwarte okna: " & $i & " of " & $aWindows[0][0], $text) Next </syntaxhighlight> ===_WinAPI_EnumWindowsPopup=== #include <WinAPI.au3> _WinAPI_EnumWindowsPopup() Funkcja zwraca listę wszystkich otwartych okien typu popup w postaci dwuwymiarowej tablicy: [0][0] - liczba okien (n) - [1][0] - uchwyt pierwszego okna [1][1] - nazwa klasy pierwszego okna ... [n][0] - uchwyt n-tego okna [n][1] - nazwa klasy n-tego okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $aWindows = _WinAPI_EnumWindowsPopup() If $aWindows[0][0] = 0 Then MsgBox(0, "Otwarte okna popup: ", "Brak okien popup.") else For $i = 1 To $aWindows[0][0] $text = "Uchwyt okna: " & $aWindows[$i][0] & @LF & @LF $text &= "Klasa okna: " & $aWindows[$i][1] & @LF & @LF $text &= "Nazwa okna: " & WinGetTitle($aWindows[$i][0]) & @LF & @LF $text &= "Tekst w oknie: " & WinGetText($aWindows[$i][0]) & @LF & @LF $text &= "Nr procesu okna: " & WinGetProcess($aWindows[$i][0]) MsgBox(0, "Otwarte okna popup: " & $i & " of " & $aWindows[0][0], $text) Next EndIf </syntaxhighlight> ===_WinAPI_EnumWindowsTop=== #include <WinAPI.au3> _WinAPI_EnumWindowsTop() Funkcja zwraca listę wszystkich otwartych okien najwyższego poziomu w postaci dwuwymiarowej tablicy: [0][0] - liczba okien (n) - [1][0] - uchwyt pierwszego okna [1][1] - nazwa klasy pierwszego okna ... [n][0] - uchwyt n-tego okna [n][1] - nazwa klasy n-tego okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $aWindows = _WinAPI_EnumWindowsTop() For $i = 1 To $aWindows[0][0] $text = "Uchwyt okna: " & $aWindows[$i][0] & @LF & @LF $text &= "Klasa okna: " & $aWindows[$i][1] & @LF & @LF $text &= "Nazwa okna: " & WinGetTitle($aWindows[$i][0]) & @LF & @LF $text &= "Tekst w oknie: " & WinGetText($aWindows[$i][0]) & @LF & @LF $text &= "Nr procesu okna: " & WinGetProcess($aWindows[$i][0]) MsgBox(0, "Otwarte okna: " & $i & " of " & $aWindows[0][0], $text) Next </syntaxhighlight> ===_WinAPI_EnableWindow=== #include <WinAPI.au3> _WinAPI_EnableWindow($hWnd [, $fEnable = True]) Funkcja włącza i wyłącza dostęp myszy i klawiatury do określonego okna i jego kontrolek. Zwraca poprzedni stan okna: True - okno i kontrolki były dostępne False - okno i kontrolki nie były dostępne '''$hWnd''' - uchwyt do okna '''$fEnable''' - True - udostępnienie okna, False - zablokowanie dostępu Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <GUIConstantsEx.au3> $hGui = GUICreate('Okno testowe', 250, 260, 700, -1, $WS_VISIBLE, $WS_EX_TOPMOST) $hButton = GUICtrlCreateButton("Przycisk", 90, 30, 70) _WinAPI_EnableWindow($hGui, False) MsgBox(0x40000, 'Test', 'W tej chwili okno testowe jest niedostępne,' & @LF & 'po naciśnięciu OK zostanie udostępnione.') _WinAPI_EnableWindow($hGui, True) MsgBox(0x40000, 'Test', 'Okno testowe jest dostępne.') </syntaxhighlight> ===_WinAPI_ClientToScreen=== #include <WinAPI.au3> _WinAPI_ClientToScreen($hWnd, ByRef $tPoint) Funkcja przelicza współrzędne obszaru roboczego okna na współrzędne ekranowe (bezwzględne). Zwraca strukturę ze współrzędnymi ekranowymi. Jeżeli wystąpi błąd makeo @error przyjmuje kod błędu. '''$hWnd''' - uchwyt do okna '''$tPoint''' - struktura '''$tagPOINT''' za współrzędnymi przestrzeni roboczej okna. W wyniku działania struktura przez referencję przyjmie dane dla współrzędnych ekranowych, czyli takie same jakie funkcja zwraca. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> ;tworzenie testowego GUI $hwnd = GUICreate("TOkno testowe", 200, 200,400,300) GUISetState() $xc = 0 $yc = 0 ;tworzenie struktury i nadanie wartości $tpoint = DllStructCreate($tagPOINT) DllStructSetData($tpoint, "X", $xc) DllStructSetData($tpoint, "Y", $yc) ;odczyt współrzędnych ekranowych _WinAPI_ClientToScreen($hwnd, $tpoint) $xs = DllStructGetData($tpoint, "X") $ys = DllStructGetData($tpoint, "Y") MsgBox(4096, "_WinAPI_ClientToScreen", "Współrzędne przestrzeni rogoczej okna:" _ & @LF & "Xc = " & $xc & @TAB & @TAB & "Yc = " & $yc & @LF & @LF & _ "Współrzędne ekranu:" & @LF & "Xs = " & $xs & @TAB & @TAB & "Ys = " & $ys & @LF) </syntaxhighlight> ===_WinAPI_ScreenToClient=== #include <WinAPI.au3> _WinAPI_ScreenToClient($hWnd, ByRef $tPoint) Funkcja przelicza współrzędne ekranowe (bezwzględne), na współrzędne obszaru roboczego okna . Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna '''$tPoint''' - struktura '''$tagPOINT''' za współrzędnymi ekranowymi. W wyniku działania struktura przez referencję przyjmie dane dla współrzędnych przestrzeni roboczej okna. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hWnd = GUICreate("Testowe okno", 400, 200) GUISetState() Do $MousePos = MousePos($hWnd) ToolTip("Ekran:" & @LF & "Xs= " & $MousePos[0] & @LF & "Ys= " & $MousePos[1] & @LF _ & @LF & "Okno:" & @LF & "Xc= " & $MousePos[2] & @LF & "Yc= " & $MousePos[3]) Until GUIGetMsg() = $GUI_EVENT_CLOSE Func MousePos($hWnd) Local $MousePos[4], $tPoint = DllStructCreate($tagPOINT) $MousePos[0] = MouseGetPos(0) $MousePos[1] = MouseGetPos(1) DllStructSetData($tPoint, "X", $MousePos[0]) DllStructSetData($tPoint, "Y", $MousePos[1]) ;przeliczenie współrzędnych ekranowych na współrzędne okna _WinAPI_ScreenToClient($hWnd, $tPoint) $MousePos[2] = DllStructGetData($tPoint, "X") $MousePos[3] = DllStructGetData($tPoint, "Y") Return $MousePos EndFunc </syntaxhighlight> ===_WinAPI_GetClientRect=== #include <WinAPI.au3> _WinAPI_GetClientRect($hWnd) Funkcja zwraca współrzędne obszaru roboczego okna w postaci struktury $tagRECT. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna '''UWAGA:''' Zwracane wyniki są we współrzędnych obszaru roboczego więc poszczególne pola struktury zawierają: "Left" - 0 "Right" - szerokość przestrzeni roboczej okna "Top" - 0 "Bottom" - wysokość przestrzeni roboczej okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $tRect = _WinAPI_GetClientRect($hwnd) MsgBox(4096, "Obszar roboczy:", _ "Lewo..: " & DllStructGetData($tRect, "Left") & @LF & _ "Prawo.: " & DllStructGetData($tRect, "Right") & @LF & _ "Góra...: " & DllStructGetData($tRect, "Top") & @LF & _ "Dół....: " & DllStructGetData($tRect, "Bottom")) </syntaxhighlight> ===_WinAPI_GetClientHeight=== #include <WinAPI.au3> _WinAPI_GetClientHeight($hWnd) Funkcja zwraca wysokość obszaru roboczego okna. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $h = _WinAPI_GetClientHeight($hwnd) MsgBox(4096, "Obszar roboczy:", "Wysokość = " & $h) </syntaxhighlight> ===_WinAPI_GetClientWidth=== #include <WinAPI.au3> _WinAPI_GetClientWidth($hWnd) Funkcja zwraca szerokość obszaru roboczego okna. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $w = _WinAPI_GetClientWidth($hwnd) MsgBox(4096, "Obszar roboczy:", "Szerokość = " & $w) </syntaxhighlight> ===_WinAPI_GetWindowRect=== #include <WinAPI.au3> _WinAPI_GetWindowRect($hWnd) Funkcja zwraca współrzędne okna w postaci struktury $tagRECT. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna '''UWAGA:''' Zwracane wyniki są we współrzędnych ekranu. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $tRect = _WinAPI_GetWindowRect($hwnd) MsgBox(4096, "Współrzędnr okna:", _ "Lewo..: " & DllStructGetData($tRect, "Left") & @LF & _ "Prawo.: " & DllStructGetData($tRect, "Right") & @LF & _ "Góra...: " & DllStructGetData($tRect, "Top") & @LF & _ "Dół....: " & DllStructGetData($tRect, "Bottom")) </syntaxhighlight> ===_WinAPI_GetWindowPlacement=== #include <WinAPI.au3> _WinAPI_GetWindowPlacement ( $hWnd ) Funkcja zwraca w postaci struktury $tagWINDOWPLACEMENT informację o umiejscowieniu i wielkości okna na ekranie. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera, a szczegółowe informacje o błędzie można uzyskać wywołując funkcję _WinAPI_GetLastError(). '''$hWnd''' - uchwyt do okna Znaczenie pól struktury $tagWINDOWPLACEMENT: '''"length"''' - wielkość struktury w bajtach '''"flags"''' - określa flagę, która kontroluje pozycję zminimalizowanego okna i metodę, dzięki której okno zostanie przywrócone. Parametr tem może mieć jedną lub więcej z następujących wartości: $WPF_ASYNCWINDOWPLACEMENT | 4 | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- $WPF_RESTORETOMAXIMIZED | 2 | Określa, że przywrócone zostanie zmaksymalizowane okno, niezależnie od tego, czy zostało ono zmaksymalizowane zanim został zminimalizowane. | | To ustawienie jest ważne tylko przy następnym przywróceniu okna. | | Nie zmienia to zachowanie domyślnego (ustalonego przez parametr funkcji WinSetState() lub GUISetState()) . | | Flaga ta jest ważna tylko wtedy, gdy pole "showcmd" ma wartość @SW_SHOWMINIMIZED. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- $WPF_SETMINPOSITION | 1 | Określa, że współrzędne zminimalizowanego okna mogą być zmienione. Flaga ta musi być ustawiona, jeśli współrzędne okna są zmieniane w polu ptMinPosition. '''"showCmd"''' - określa aktualny stan wyświetlania okna @SW_HIDE | 0 | Ukrywa okno. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_MAXIMIZE | 3 | Maksymalizuje okno. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_MINIMIZE | 6 | Minimalizuje okno. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_RESTORE | 9 | Uaktywnia i wyświetla okno. W przypadku, gdy okno jest zminimalizowane lub zmaksymalizowane, system przywraca je do pierwotnego rozmiaru i położenia. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOW | 5 | Uaktywnia okno i wyświetla je w swojej obecnej wielkości i położeniu. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWMAXIMIZED | 3 | Uaktywnia okno i wyświetla je jako zmaksymalizowane. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWMINIMIZED | 2 | Uaktywnia okno i wyświetla je jako zminimalizowane. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWMINNOACTIVE | 7 | Wyświetla okno jako zminimalizowane. W odróżnieniu od @SW_SHOWMINIMIZED okno nie jest uaktywniane. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWNA | 8 | Wyświetla okno w swojej obecnej wielkości i położeniu. W odróżnieniu od @SW_SHOW okno nie jest uaktywniane. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWNOACTIVATE | 4 | Wyświetla okno w swojej najnowszyej wielkości i położeniu. Wartość ta jest podobna do @SW_SHOWNORMAL, z wyjątkiem tego, że okno nie jest aktywne. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @SW_SHOWNORMAL | 1 | Uaktywnia i wyświetla okno. W przypadku, gdy okno jest zminimalizowane lub zmaksymalizowane, system przywraca je do swojego pierwotnego rozmiaru i położenia. '''"ptMinPosition"''' - Określa współrzędne lewego górnego narożnika okna, gdy okno jest zminimalizowane. Pole jest 2-elementową tablicą. '''"ptMaxPosition"''' - Określa współrzędne lewego górnego narożnika okna, gdy okno jest zmaksymalizowane. Pole jest 2-elementową tablicą. '''"rcNormalPosition"''' - Określa współrzędne domyślne narożników okna (lewy-górny, prawy-dolny). Pole jest 4-elementową tablicą. ===_WinAPI_SetWindowPlacement=== #include <WinAPI.au3> _WinAPI_SetWindowPlacement ( $hWnd, $tWindowPlacement ) Funkcja ustawia wielkość i współrzędne okna za pomocą struktury $tagWINDOWPLACEMENT. Zwraca True gdy sukces, Lub False gdy wystąpił błąd. Szczegółowe informacje o błędzie można uzyskać wywołując funkcję _WinAPI_GetLastError(). '''$hWnd''' - uchwyt do okna '''$tWindowPlacement''' - struktura z danymi okna. Znaczenie pól struktury jak dla _WinAPI_GetWindowPlacement. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Run("notepad.exe") ;uruchomienie notatnika $hWnd = WinWait("[CLASS:Notepad]") ;oczekiwanie na otwarcie okna notatnika i odczyt uchwytu do niego WinMove($hWnd, "", 256, 256, 400, 400) ;przesunięcie i zmiana rozmiarów okna Sleep(1000) WinSetState($hWnd, "", @SW_MINIMIZE) ;zminimalizowanie okna Sleep(1000) $tRET = _WinAPI_GetWindowPlacement($hWnd) ;odczyt do struktury typu $stWindowPlacement danych o umiejscowieniu okna If @error = 0 Then ;formatowanie danych zodczytanych ze struktury $tagWindowPlacement $sMsg = "Pola struktury $tagWindowPlacement:" & @CRLF & "-----------------------------------------------" & @CRLF $sMsg &= "length = " & $tRET.length & " bajty" & @CRLF $sMsg &= "flags = " & $tRET.flags & @CRLF $sMsg &= "showCmd = " & $tRET.showCmd & @CRLF & @CRLF $sMsg &= "ptMinPosition:" & @CRLF $sMsg &= @TAB & "MinX = " & $tRET.ptMinPosition(1) & @CRLF $sMsg &= @TAB & "MinY = " & $tRET.ptMinPosition(2) & @CRLF & @CRLF $sMsg &= "ptMaxPosition:" & @CRLF $sMsg &= @TAB & "MaxX = " & $tRET.ptMaxPosition(1) & @CRLF $sMsg &= @TAB & "MaxY = " & $tRET.ptMaxPosition(2) & @CRLF & @CRLF $sMsg &= "rcNormalPosition:" & @CRLF $sMsg &= @TAB & "left = " & $tRET.rcNormalPosition(1) & @CRLF $sMsg &= @TAB & "top = " & $tRET.rcNormalPosition(2) & @CRLF $sMsg &= @TAB & "right = " & $tRET.rcNormalPosition(3) & @CRLF $sMsg &= @TAB & "bottom = " & $tRET.rcNormalPosition(4) MsgBox(64, "", $sMsg) ;wprowadzenie za pomocą struktury nowych danych okna notatnika $tRET.rcNormalPosition(1) = 50 ;lewy $tRET.rcNormalPosition(2) = 120 ;górny $tRET.rcNormalPosition(3) = @DesktopWidth - 50 ;prawy $tRET.rcNormalPosition(4) = @DesktopHeight - 120 ;dolny $iRET = _WinAPI_SetWindowPlacement($hWnd, $tRET) WinSetState($hWnd, "", @SW_RESTORE) ;aktywowanie nowych ustawień okna ControlSetText($hWnd, "", "Edit1", "Pełny sukces!") ;wstawienie tekstu do notatnika Sleep(3000) WinKill($hWnd) ;zamknięcie okna notatnika Else MsgBox(16, "", "Błąd!") EndIf </syntaxhighlight> ===_WinAPI_GetWindowHeight=== #include <WinAPI.au3> _WinAPI_GetWindowHeight($hWnd) Funkcja zwraca wysokość okna. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $h = _WinAPI_GetWindowHeight($hwnd) MsgBox(4096, "Okno:", "Wysokość = " & $h) </syntaxhighlight> ===_WinAPI_GetWindowWidth=== #include <WinAPI.au3> _WinAPI_GetWindowWidth($hWnd) Funkcja zwraca szerokość okna. Jeżeli wystąpił błąd makro @error > 0. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $hwnd, $tRect $hwnd = GUICreate("") GUISetState() $h = _WinAPI_GetWindowWidth($hwnd) MsgBox(4096, "Okno:", "Szerokość = " & $h) </syntaxhighlight> ===_WinAPI_SetFont=== #include <WinAPI.au3> _WinAPI_SetFont($hWnd, $hFont [, $fRedraw = True]) Funkcja ustawia czcionkę w oknie o podanym uchwycie. Nie zwraca żadnej wartości. '''$hWnd''' - uchwyt do okna '''$hFont''' - uchwyt do czcionki '''$fRedraw''' - określa czy okno ma być odświeżona w momencie wywołania funkcji, True (domyślnie) - tak, False - nie. Przykład: <syntaxhighlight lang="autoit"> #include <GuiListBox.au3> #include <GuiButton.au3> #include <FontConstants.au3> $hGUI = GUICreate(@ScriptName, 320, 120) $hBtn1 = _GUICtrlButton_Create($hGUI, "Przycisk 1", 10, 10, 300, 34) $hBtn2 = _GUICtrlButton_Create($hGUI, "Przycisk 2", 10, 60, 300, 34) ;definiowanie czcionek $hFont1 = _WinAPI_CreateFont(30, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _ $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Comic Sans MS') $hFont2 = _WinAPI_CreateFont(15, 0, 0, 0, 700) ;ustawienie czcionek _WinAPI_SetFont($hBtn1, $hFont1) _WinAPI_SetFont($hBtn2, $hFont2) GUISetState() Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ;zwolnienie zasobów _WinAPI_DeleteObject($hFont1) _WinAPI_DeleteObject($hFont2) </syntaxhighlight> ===_WinAPI_GetLayeredWindowAttributes=== #include <WinAPI.au3> _WinAPI_GetLayeredWindowAttributes($hWnd, ByRef $i_transcolor, ByRef $Transparency [, $asColorRef = False]) Funkcja odczytuje atrybuty warstwy okna. Gdy sukces zwraca: 0 - nic nie ustawiono 1 - ustawiony kolor przezroczysty 2 - ustawiona przezroczystość okna 3 - ustawione oba parametry Jeżeli wystąpił błąd zwraca 0, a makro @error zawiera kod błędu. '''$hWnd''' - uchwyt do okna '''$i_transcolor''' - zmienna w której przez referencję funkcja zapisuje kolor przezroczysty '''$Transparency''' - zmienna w której przez referencję funkcja zapisuje stopień przezroczystości okna '''$asColorRef''' - określa format kodu koloru zwracany w $i_transcolor, True - format 0x00bbggrr, False (domyślnie) - format RGB '''UWAGA:''' Wartość 0 zwrócona przez funkcję oznacza błąd tylko wtedy, gdy jednocześnie makro @error ma wartość większą od zera. ===_WinAPI_SetLayeredWindowAttributes=== #include <WinAPI.au3> _WinAPI_SetLayeredWindowAttributes($hWnd, $i_transcolor [, $Transparency = 255 [, $dwFlags = 0x03 [, $isColorRef = False]]]) Funkcja ustawia atrybuty warstwy okna. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd (makro @error = 4 - działanie funkcji nie powiodło się, @extended - dodatkowe dane o przyczynach błędu). '''$hWnd''' - uchwyt do okna '''$i_transcolor''' - kod koloru przezroczystego w formacie RGB (domyślnie) lub 0x00bbggrr, w zależności od parametru $isColorRef (-1 lub Default - kolor domyślny) '''$Transparency''' - stopień przezroczystości okna, 0 - całkowicie przezroczyste, 255 (0xff) - całkowicie nieprzezroczyste '''$dwFlags''' - flaga określająca jakie własności należy ustawić: 1 - ustawić kolor przezroczysty, 2 - ustawić przezroczystość okna, 3 - ustawić oba parametry (domyślne) '''$isColorRef''' - określa format kodu koloru w $i_transcolor, True - format 0x00bbggrr, False (domyślnie) - format RGB Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> Local $transcolor, $alpha ;tworzenie okna demonstracyjnego, warstwowego (styl $WS_EX_LAYERED) $gui = GUICreate("Przezroczystość", 400, 400, -1, -1, -1, $WS_EX_LAYERED) GUISetBkColor(0xABCDEF) ;kolor tła GUI GUICtrlCreateLabel("To jest okno demonstracyjne", 100, 150) ;początkowa przezroczystość okna =0, domyślny kolor przezroczysty _WinAPI_SetLayeredWindowAttributes($gui, -1) GUISetState() ;tworzenie okna kontrolnego $guicontrol = GUICreate("Test WinAPI", 300, 250, 100, 100) $checkTrans = GUICtrlCreateCheckbox("Kolor tła przezroczysty", 10, 10) GUICtrlCreateLabel("Suwak przezroczystości okna", 10, 50) $slidTrans = GUICtrlCreateSlider(10, 70, 200, 30) ;suwak przezroczystości GUICtrlSetLimit($slidTrans, 255, 0) GUICtrlSetData(-1, 255) $Butt = GUICtrlCreateButton("Info", 10, 150, 40) ;przycisk informacji GUISetState() Do $extMsg = GUIGetMsg(1) $msg = $extMsg[0] Switch $extMsg[1] Case $guicontrol Select Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $checkTrans Or $msg = $slidTrans If GUICtrlRead($checkTrans) = $GUI_CHECKED Then ;tło przezroczyste (kolor 0xABCDEF) _WinAPI_SetLayeredWindowAttributes($gui, 0xABCDEF, GUICtrlRead($slidTrans)) Else ;bez przezroczystego tła _WinAPI_SetLayeredWindowAttributes($gui, -1, GUICtrlRead($slidTrans)) EndIf Case $msg = $Butt $info=_WinAPI_GetLayeredWindowAttributes($gui, $transcolor, $alpha) MsgBox(0, "Info", "Kolor przezroczysty: " & Hex($transcolor) & @LF & _ "Stopień przezroczystości: " & $alpha & @LF & _ "Kod ustawień: " & $info) EndSelect Case $gui If $msg = $GUI_EVENT_CLOSE Then Exit EndSwitch Until 0 </syntaxhighlight> ===_WinAPI_UpdateLayeredWindow=== #include <WinAPI.au3> _WinAPI_UpdateLayeredWindow($hWnd, $hDCDest, $pPTDest, $pSize, $hDCSrce, $pPTSrce, $iRGB, $pBlend, $iFlags) Funkcja aktualizacje położenie, wielkość, kształt, treść i przezroczystość okna warstwowego. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do warstwowego okna. Warstwowe okno jest tworzone przez użycie rozszerzonego stylu $WS_EX_LAYERED. '''$hDCDest''' - uchwyt do kontekstu urządzenie na ekranie. '''$pPTDest''' - wskaźnik do struktury $tagPOINT, która określa nową pozycję warstwowego okna. Wartość 0 oznacza, że pozycja okna nie zmienia się. '''$pSize''' - wskaźnik do struktury $tagSIZE, która określa nowy rozmiar warstwowego okna. Wartość 0 oznacza, że rozmiar okna nie zmienia się. '''$hDCSrce''' - uchwyt kontekstu urządzenia na powierzchni, która zawiera warstwowe okno. Uchwyt ten może być uzyskać wywołując funkcję _WinAPI_CreateCompatibleDC. '''$pPTSrce''' - wskaźnik do struktury $tagPOINT, która określa położenie warstwy w kontekście urządzenia. '''$iRGB''' - kod koloru stosowanego przy komponowaniu warstwowego okna. '''$pBlend''' - wskaźnik do struktury $tagBLENDFUNCTION, która określa wartość przezroczystości stosowanej przy komponowania warstwowego okna. '''$iFlags''' - parametr ten może być jedna z następujących wartości: $ULW_ALPHA - użyj $tblend jako funkcji mieszania $ULW_COLORKEY - użyj $iRGB jako kolor przezroczystości $ULW_OPAQUE - rysowanie nieprzezroczystego warstwowego okna Przykład (należy przygotować bitmapy tła okna): <syntaxhighlight lang="autoit"> #include<WindowsConstants.au3> #include<GDIPlus.au3> #include <WinAPI.au3> HotKeySet("{ESC}","_exit_") _GDIPlus_Startup() ;wczytanie bitmap tła okna Global $sGUI=_GDIPlus_ImageLoadFromFile('1.jpg') Global $subGUI=_GDIPlus_ImageLoadFromFile('2.jpg') $hGUI=GUICreate("", 493, 900, -1, 200, -1, $WS_EX_LAYERED) GUISetState() SetBitmap($hGUI,$sGUI,150) Sleep(2000) SetBitmap($hGUI,$subGUI,255) Sleep(1000) ;tworzenie okna potomnego $sb_GUI = GUICreate("", 400, 600, 50, 30, $WS_POPUP, BitOR($WS_EX_MDICHILD, $WS_EX_LAYERED), $hGUI) GUISetBkColor(0x666666, $sb_GUI) $listview = GUICtrlCreateListView("col1 |col2|col3 ", 10, 10, 380, 585) GUICtrlSetBkColor(-1, 0x666666) GUICtrlSetColor(-1, 0xF0F0F0) ;ustawienie koloru przezroczystego _WinAPI_SetLayeredWindowAttributes($sb_GUI, 0x666666) For $i = 0 To 100 ;tworzenie listy testowej GUICtrlCreateListViewItem("Item" & Random(1, 100, 1) & "|" & "Item" & Random(1, 100, 1) & _ "|" & "Item" & Random(1, 100, 1), $listview) Next GUISetState(@SW_SHOW, $sb_GUI) ;wyświetlenie okna potomnego While 1 Sleep(30) WEnd Func _exit_() _GDIPlus_ImageDispose($sGUI) _GDIPlus_ImageDispose($subGUI) _GDIPlus_Shutdown() Exit EndFunc ;funkcja wstawia bitmapę jako tło okna, jednocześnie można zmieniać przezroczystość okna Func SetBitmap($hGUI,$hImage,$iOpacity) Local $hScrDC,$hMemDC,$hBitmap,$hOld,$pSize,$tSize,$pSource,$tSource,$pBlend,$tBlend $hScrDC=_WinAPI_GetDC(0) $hMemDC=_WinAPI_CreateCompatibleDC($hScrDC) $hBitmap=_GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) $hOld=_WinAPI_SelectObject($hMemDC,$hBitmap) $tSize=DllStructCreate($tagSIZE) $pSize=DllStructGetPtr($tSize) DllStructSetData($tSize,"X",_GDIPlus_ImageGetWidth($hImage)) DllStructSetData($tSize,"Y",_GDIPlus_ImageGetHeight($hImage)) $tSource=DllStructCreate($tagPOINT) $pSource=DllStructGetPtr($tSource) $tBlend=DllStructCreate($tagBLENDFUNCTION) $pBlend=DllStructGetPtr($tBlend) DllStructSetData($tBlend,"Alpha",$iOpacity) DllStructSetData($tBlend,"Format", 1) _WinAPI_UpdateLayeredWindow($hGUI,$hScrDC,0,$pSize,$hMemDC,$pSource,0,$pBlend,$ULW_ALPHA) ;zwolnienie zasobów _WinAPI_ReleaseDC(0,$hScrDC) _WinAPI_SelectObject($hMemDC,$hOld) _WinAPI_DeleteObject($hBitmap) _WinAPI_DeleteDC($hMemDC) EndFunc ;SetBitmap </syntaxhighlight> ===_WinAPI_MoveWindow=== #include <WinAPI.au3> _WinAPI_MoveWindow($hWnd, $iX, $iY, $iWidth, $iHeight [, $fRepaint = True]) Funkcja zmienia położenie i rozmiar okna. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna. '''$iX''' i '''$iY''' - nowe współrzędne lewego górnego narożnika okna. '''$iCX''' i '''$iCY''' - nowa szerokość i wysokość okna. '''$fRepaint''' - True - okno potomne jest przerysowywane po przesunięciu lub zmianie wymiarów (wartość domyślna), False - okno nie jest przerysowane. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <Constants.au3> Run('notepad.exe') Sleep(2000) $hGui = WinWait("[CLASS:Notepad]", "", 5) $aOld = WinGetPos($hGUI) Sleep(2000) _WinAPI_MoveWindow ($hGui, 350, 200, 200, 200) ;przesuwanie okna $a = WinGetPos($hGui) For $i=0 To 300 Step 0.01 _WinAPI_MoveWindow ($hGui, $a[1]+$i, $a[1]+$i/2, $a[2], $a[3]) Next ;powiększanie okna $a = WinGetPos($hGui) For $i=0 To 500 Step 0.01 _WinAPI_MoveWindow ($hGui, $a[0], $a[1], $a[2]+$i, $a[3]+$i) Next ;zmniejszanie okna bez zmiany położenia jego środka $a = WinGetPos($hGui) For $i=0 To 350 Step 0.01 _WinAPI_MoveWindow ($hGui, $a[0]+$i, $a[1]+$i, $a[2]-2*$i, $a[3]-2*$i) Next Sleep(1000) ;przywrócenie pierwotnego położenia i rozmiarów okna _WinAPI_MoveWindow ($hGui, $aOld[0], $aOld[1], $aOld[2], $aOld[3]) </syntaxhighlight> Przykład 2 (z oknem potomnym): <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include<WindowsConstants.au3> Local $iX = 50, $iY = 100, $iCX = 300, $iCY = 240, $style = BitOR($WS_CHILD, $WS_VSCROLL) $h = GUICreate ( "Test" , 650 , 600, 300, 300 ) GUICtrlCreateButton(' TEST ', 250, 360, 120, 28) $ch=GUICreate("", $iCX, $iCY, $iX, $iY, $style, -1, $h) GUICtrlCreateButton(' TEST ', 50, 60, 100, 28) GUISetBkColor(0xff0000) GUISetState(@SW_SHOW ,$h) GUISetState(@SW_SHOW ,$ch) Sleep(1000) For $i=0 To 250 Sleep(1) $iX += 1 $iY += 0.5 _WinAPI_MoveWindow ($ch, $iX, $iY, $iCX, $iCY) Next Sleep(3000) </syntaxhighlight> ===_WinAPI_GetDesktopWindow=== #include <WinAPI.au3> _WinAPI_GetDesktopWindow() Funkcja zwraca uchwyt do okna desktopu. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $win = _WinAPI_GetDesktopWindow() MsgBox(0, "Uchwyt desktopu:", $win) </syntaxhighlight> ===_WinAPI_GetWindow=== #include <WinAPI.au3> _WinAPI_GetWindow($hWnd, $iCmd) Funkcja zwraca uchwyt do okna pozostającego w określonym związku z danym oknem. Zwraca 0 gdy wystąpił błąd lub nie istnieje okno o zdefiniowanym związku. '''$hWnd''' - uchwyt do okna '''$iCmd''' - parametr określa zależność między określonym oknem, a oknem, którego uchwyt ma być zwrócony: <Constants.au3>| | Opis --------------------------------------------------------------------------------------------------------- $GW_CHILD | 5 | aktywne okno podrzędne $GW_HWNDFIRST | 0 | najwyżej stojące okno wg kolejności nakładania Z, posiadające to samo okno nadrzędne $GW_HWNDLAST | 1 | najniżej stojące okno wg kolejności nakładania Z, posiadające to samo okno nadrzędne $GW_HWNDNEXT | 2 | okno będące bezpośrednio poniżej danego okna wg kolejności nakładania Z $GW_HWNDPREV | 3 | okno będące bezpośrednio powyżej danego okna wg kolejności nakładania Z $GW_OWNER | 4 | okno nadrzędne danego okna ===_WinAPI_GetForegroundWindow=== #include <WinAPI.au3> _WinAPI_GetForegroundWindow() Funkcja zwraca uchwyt do aktywnego okna, lub 0 gdy wystąpił błąd. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0, "_WinAPI_GetForegroundWindow", _ "Uchwyt do aktywnego okna: " & _WinAPI_GetForegroundWindow()) </syntaxhighlight> ===_WinAPI_GetParent=== #include <WinAPI.au3> _WinAPI_GetParent($hWnd) Funkcja zwraca uchwyt do okna nadrzędnego, lub 0 gdy wystąpił błąd (pełne informacje o błędzie zwraca funkcja _WinAPI_GetLastError()). '''$hWnd''' - uchwyt do okna ===_WinAPI_SetParent=== #include <WinAPI.au3> _WinAPI_SetParent ( $hWndChild, $hWndParent ) Funkcja zmienia okno nadrzędne dla podanego okna potomnego. Zwraca uchwyt do poprzedniego okna nadrzędnego, lub 0 gdy wystąpił błąd (pełne informacje o błędzie zwraca funkcja _WinAPI_GetLastError()). '''$hWndChild''' - uchwyt do okna potomnego. '''$hWndParent''' - uchwyt do nowego okna nadrzędnego, jeżeli =0 to nowym oknem nadrzędnym będzie pulpit. <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> ;tworzenie dwóch okien GUI $hGUI1 = GUICreate("GUI 1", 400, 400, 200, 100) $hGUI2 = GUICreate("GUI 2", 400, 400, 1200, 200) ;tworzenie okna potomnego w oknie GUI 1 $hChild = GUICreate("Okno potomne", 200, 200, 50, 50, BitOR($WS_CHILD, $WS_CAPTION), -1, $hGUI1) ;wyświetlenie okien GUISetState(@SW_SHOW, $hGUI1) GUISetState(@SW_SHOW, $hChild) GUISetState(@SW_SHOW, $hGUI2) MsgBox(64,"","Okno potomne do GUI 2") _WinAPI_SetParent($hChild, $hGUI2) ;zmiana okna nadrzędnego MsgBox(64,"","Okno potomne do GUI 1") _WinAPI_SetParent($hChild, $hGUI1) ;zmiana okna nadrzędnego Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_GetAncestor=== #include <WinAPI.au3> _WinAPI_GetAncestor($hWnd [, $iFlags = 1]) Funkcja zwraca uchwyt okna nadrzędnego, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, którego przodka chcemy uzyskać, jeżeli jest to uchwyt do pulpitu to funkcja zwróci 0 '''$iFlags''' - określa jakiego okna uchwyt chcemy uzyskać: WindowsConstants.au3 | | Opis --------------------------------------------------------------------------------------- $GA_PARENT | 1 | zwraca uchwyt do rodzica obiektu przekazanego jako argument, | | jeżeli pierwszym w kolejności "rodzicem" nie jest | | okno programu lecz inny obiekt, to zwrócony zostanie | | uchwyt do tego obiektu, a nie do okna programu --------------------------------------------------------------------------------------- $GA_ROOT | 2 | zwraca uchwyt do okna obiektu przekazanego jako argument, | | poprzez przejście przez kolejnych "rodziców" (parent) | | wskazanego obiektu, aż natrafi na okno --------------------------------------------------------------------------------------- $GA_ROOTOWNER | 3 | --------------------------------------------------------------------------------------- Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <WindowsConstants.au3> $hWnd = GUICreate("TEST") $hParent = _WinAPI_GetAncestor($hWnd, $GA_PARENT) MsgBox(0, "GetAncestor dla " & $hWnd, _ 'Parent:' & @TAB & @TAB & $hParent & @CRLF & _ 'Root:' & @tab & @tab & _WinAPI_GetAncestor($hWnd, $GA_ROOT) & @CRLF & _ 'Root Owner:' & @tab & _WinAPI_GetAncestor($hWnd, $GA_ROOTOWNER)) </syntaxhighlight> ===_WinAPI_GetWindowLong=== #include <WinAPI.au3> _WinAPI_GetWindowLong($hWnd, $iIndex) Funkcja zwraca informacje o określonym oknie. Jeżeli wystąpi błąd makro @error zwraca kod błędu. '''$hWnd''' - uchwyt do okna '''$iIndex''' - rodzaj zwracanej informacji: <Constants.au3> | | Opis ------------------------------------------------------------------------------------------------ $GWL_EXSTYLE |-20 | rozszerzony styl okna $GWL_HINSTANCE | -6 | uchwyt do instancji programu $GWL_HWNDPARENT | -8 | uchwyt do okna nadrzędnego (jeśli dane okno ma rodzica) $GWL_ID |-12 | identyfikator okna potomnego $GWL_STYLE |-16 | styl okna $GWL_USERDATA |-21 | 32-bitowe dane użytkownika powiązane z oknem. Takie dane są przeznaczone | | do użycia przez program, który utworzył okno. Na początku ta wartość =0. $GWL_WNDPROC | -4 | adres procedury okna ===_WinAPI_SetWindowLong=== #include <WinAPI.au3> _WinAPI_SetWindowLong($hWnd, $iIndex, $iValue) Funkcja ustawia parametry okna o określonym uchwycie. Zwraca poprzednią wartość ustawianego parametru, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna '''$iIndex''' - rodzaj ustawianej informacji (jak dla _WinAPI_GetWindowLong) Przykłąd: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <Constants.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> $hGui = GUICreate('_WinAPI_SetWindowLong', 250, 260) $iButton = GUICtrlCreateButton('Zmiana stylu okna', 10, 10, 120, 28) $iExStyle = $WS_EX_TOOLWINDOW GUISetState() Do Switch GUIGetMsg() Case $iButton $iOldExStyle = _WinAPI_SetWindowLong($hGui, $GWL_EXSTYLE, $iExStyle) $iExStyle = $iOldExStyle GUISetState(@SW_HIDE) GUISetState(@SW_SHOW) Case $GUI_EVENT_CLOSE Exit EndSwitch Until 0 </syntaxhighlight> ===_WinAPI_GetWindowText=== #include <WinAPI.au3> _WinAPI_GetWindowText($hWnd) Funkcja zwraca tytuł z belki okna lub z kontrolki o podanym uchwycie. Jeżeli wystąpił błąd ustawiane jest makro @error. '''$hWnd''' - uchwyt do okna (kontrolki) Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hWin = WinGetHandle("[ACTIVE]") $hGui = GUICreate('Okno testowe') $iButton = GUICtrlCreateButton('Przycisk', 10, 10) GUISetState() MsgBox(0, 'Wyniki:', _ _WinAPI_GetWindowText($hWin) &@CRLF& _ _WinAPI_GetWindowText($hGui) &@CRLF& _ _WinAPI_GetWindowText(GUICtrlGetHandle($iButton))) </syntaxhighlight> ===_WinAPI_SetWindowText=== #include <WinAPI.au3> _WinAPI_SetWindowText($hWnd, $sText) Funkcja wstawia tytuł na belce okna lub kontrolce o podanym uchwycie. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna (kontrolki) '''$sText''' - wstawiany tekst tytułu okna lub kontrolki Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GUIConstantsEx.au3> $hGui = GUICreate('GUI testowy', 350, 260) $iButton = GUICtrlCreateButton('Przycisk', 10, 10, 160, 28) $hButton = GUICtrlGetHandle(-1) GUISetState() Do Switch GUIGetMsg() Case $iButton If _WinAPI_GetWindowText($hButton) = "Przycisk" Then _WinAPI_SetWindowText($hButton, "Klawisz") Else _WinAPI_SetWindowText($hButton, "Przycisk") EndIf $txt = _WinAPI_GetWindowText($hGui) & "!" _WinAPI_SetWindowText($hGui, $txt) Case $GUI_EVENT_CLOSE Exit EndSwitch Until False </syntaxhighlight> ===_WinAPI_GetClassName=== #include <WinAPI.au3> _WinAPI_GetClassName($hWnd) Funkcja zwraca nazwę klasy, do której należy okno. Jeżeli wystąpi błąd ustawiane jest makro @error. '''$hWnd''' - uchwyt do okna Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hDesktop = _WinAPI_GetDesktopWindow() ;uchwyt do desktopu MsgBox(0, "Klasa okna desktopu", 'ClassName = "' & _WinAPI_GetClassName($hDesktop) & '"') $hwnd = GUICreate("test") ;uchwyt do okna skryptu $iButton = GUICtrlCreateButton('TEST', 10, 10, 120, 28) MsgBox(0, "Klasa okna skryptu", 'ClassName = "' & _WinAPI_GetClassName($hwnd) & '"') </syntaxhighlight> ===_WinAPI_SetWindowPos=== #include <WinAPI.au3> _WinAPI_SetWindowPos($hWnd, $hAfter, $iX, $iY, $iCX, $iCY, $iFlags) Funkcja zmienia rozmiar, położenie i Z-kolejność okna dziecka, pop-up, lub okna najwyższego poziomu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna. '''$hAfter''' - uchwyt do okna poprzedzającego dane okno w osi Z (znajdującego się bezpośrednio nad nim), lub jedna z poniższych wartości: Wg Constants.au3 | | Opis --------------------------------------------------------------------------------------------------------- $HWND_BOTTOM | 1 | Umieszcza okno na spodzie Z rzędu. --------------------------------------------------------------------------------------------------------- $HWND_NOTOPMOST | -2 | Umieszcza okno poniżej wszystkich okien najwyższego poziomu. Ustawienie tej | | flagi niczego nie zmienia, jeśli okno nie jest oknem najwyższego poziomu. --------------------------------------------------------------------------------------------------------- $HWND_TOP | 0 | Umieszcza okno na wierzchu Z rzędu. --------------------------------------------------------------------------------------------------------- $HWND_TOPMOST | -1 | Umieszcza okno powyżej wszystkich okien, które nie są oknami najwyższego poziomu. | | Okno utrzymuje swój stan okna najwyższego poziomu, nawet gdy jest dezaktywowane. --------------------------------------------------------------------------------------------------------- '''$iX''' i '''$iY''' - nowe współrzędne lewego górnego narożnika okna. '''$iCX''' i '''$iCY''' - nowa szerokość i wysokość okna. '''$iFlags''' - flaga: Wg Constants.au3 | Wartość| Opis ------------------------------------------------------------------------------------------------------------- $SWP_DRAWFRAME | 0x0020 | Rysuje ramkę wokół okna. ------------------------------------------------------------------------------------------------------------- $SWP_FRAMECHANGED | 0x0020 | Zmienia nowe style ramki używając funkcji _SetWindowLong. Wysyła komunikat | | WM_NCCALCSIZE do okna, nawet jeśli jego rozmiar nie zostanie zmieniony. | | Jeśli ta flaga nie jest ustawiona, komunikat WM_NCCALCSIZE jest wysyłany | | tylko podczas zmiany rozmiaru okna. ------------------------------------------------------------------------------------------------------------- $SWP_HIDEWINDOW | 0x0080 | Ukrywa okno. ------------------------------------------------------------------------------------------------------------- $SWP_NOACTIVATE | 0x0010 | Nie pozwala na aktywację okna. ------------------------------------------------------------------------------------------------------------- $SWP_NOCOPYBITS | 0x0100 | Nie kopiuje zawartości obszaru klienta. Jeśli ta flaga nie jest ustawiona, | | poprawna treść obszaru klienta jest zapisywana i kopiowana z powrotem | | do obszaru klienta po zmianie pozycji lub rozmiaru okna. ------------------------------------------------------------------------------------------------------------- $SWP_NOMOVE | 0x0002 | Zachowuje obecną pozycję (ignoruje wartości argumentów $iX i $iY). ------------------------------------------------------------------------------------------------------------- $SWP_NOOWNERZORDER | 0x0200 | Nie zmienia pozycji okna w osi Z. $SWP_NOREPOSITION | | ------------------------------------------------------------------------------------------------------------- $SWP_NOREDRAW | 0x0008 | Nie odrysowuje okna. Jeśli ta flaga jest ustawiona, okno nie jest odmalowywane. | | Kiedy ta flaga jest ustawiona, program musi jawnie odświeżyć lub odrysować | | określone części danego okna oraz okna nadrzędnego. ------------------------------------------------------------------------------------------------------------- $SWP_NOSENDCHANGING| 0x0400 | Zapobiega przechwytywaniu komunikatu WM_WINDOWPOSCHANGING przez dane okno. ------------------------------------------------------------------------------------------------------------- $SWP_NOSIZE | 0x0001 | Zachowuje obecny rozmiar okna (ignoruje argumenty $iCX i $iCY). ------------------------------------------------------------------------------------------------------------- $SWP_NOZORDER | 0x0004 | Zachowuje obecną kolejność elementów w osi Z (ignoruje argument $hAfter). ------------------------------------------------------------------------------------------------------------- $SWP_SHOWWINDOW | 0x0040 | Wyświetla dane okno. ------------------------------------------------------------------------------------------------------------- Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <Constants.au3> $hGui2 = GUICreate('Okno 1', 550, 350, 500, 200) GUISetState() Sleep(1000) $hGui1 = GUICreate('Okno 2', 350, 200, 100, 100) $iButton = GUICtrlCreateButton('TEST', 10, 10, 120, 28) GUISetState() Sleep(1000) ;przesuwanie okna (okno 1 za oknem 2) $a = WinGetPos($hGui1) For $i=0 To 300 Step 0.1 _WinAPI_SetWindowPos ($hGui1, $hGui2, $a[1]+$i, $a[1]+$i/2, $a[2], $a[3], $SWP_DRAWFRAME) Next ;powiększanie okna (okno 1 przed oknem 2) $a = WinGetPos($hGui1) For $i=0 To 500 Step 0.1 _WinAPI_SetWindowPos ($hGui1, $HWND_TOP, $a[0], $a[1], $a[2]+$i, $a[3]+$i, $SWP_DRAWFRAME) Next ;zmniejszanie okna bez zmiany położenia jego środka (okno 1 za oknem 2) $a = WinGetPos($hGui1) For $i=0 To 350 Step 0.1 _WinAPI_SetWindowPos ($hGui1, $hGui2, $a[0]+$i, $a[1]+$i, $a[2]-2*$i, $a[3]-2*$i, $SWP_DRAWFRAME) Next </syntaxhighlight> ===_WinAPI_WindowFromPoint=== #Include <WinAPI.au3> _WinAPI_WindowFromPoint (ByRef $tPoint) Funkcja zwraca uchwyt do okna znajdującego się w punkcie o podanych współrzędnych, lub 0 gdy wystąpił błąd. '''$tPoint''' - struktura $tagPOINT zawierająca współrzędne punktu '''UWAGA:''' Funkcja nie zwraca uchwytu do okien ukrytych lub wyłączonych, nawet gdy punkt znajduje się wewnątrz okna. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> HotKeySet("{ESC}", "Close") ;ESC - koniec programu $tStruct = DllStructCreate($tagPOINT) ;tworzenie struktury Do ToolTip("") ;odczyt współrzednych kursora i zapis do struktury DllStructSetData($tStruct, "x", MouseGetPos(0)) DllStructSetData($tStruct, "y", MouseGetPos(1)) ;odczyt uchwytu do okna pod kursorem $hWnd = _WinAPI_WindowFromPoint($tStruct) ToolTip($hWnd) ;wyświetlenie uchwytu do okna Sleep(100) Until 0 </syntaxhighlight> ===_WinAPI_GetFocus=== #include <WinAPI.au3> _WinAPI_GetFocus() Funkcja zwraca uchwyt do okna (kontrolki) z ustawionym focus'em, lub 0 gdy wystąpił błąd. '''UWAGA:''' '''Focus''' (z ang. skupienie) jest to jeden ze stanów elementu graficznego interfejsu użytkownika. Wszelkie zdarzenia związane z naciskaniem klawiszy przez użytkownika zostaną skierowane właśnie do tego elementu (np.kontrolki). Zazwyczaj w oknach można przenosić focus na następny element za pomocą klawisza TAB (i SHIFT-TAB). Focus jest najczęściej odpowiednio odwzorowany w wyglądzie elementu, np. przycisk dostaje dodatkowe obramowanie, w polu edycyjnym pojawia się migający kursor, itp. ===_WinAPI_SetFocus=== #include <WinAPI.au3> _WinAPI_SetFocus($hWnd) Funkcja ustawia focus dla danego okna (kontrolki). Zwraca uchwyt do okna (kontrolki), które poprzednio miało ustawiony focus, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna (kontrolki), dla której ustawiamy focus Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <GUIConstantsEx.au3> $hGui = GUICreate("Focus - okno testowe", 370, 80, -1, 300) $hInput1 = GUICtrlCreateInput("Pole 1", 12, 28, 121, 21) $hInput2 = GUICtrlCreateInput("Pole 2", 232, 28, 121, 21) $hButton1 = GUICtrlCreateButton("<", 148, 24, 27, 25) $hButton2 = GUICtrlCreateButton(">", 184, 24, 27, 25) GUISetState(@SW_SHOW) Sleep(2000) $hFocus = _WinAPI_GetFocus() ;przycisk z focusem MsgBox(0, "Focus na kontrolce:", WinGetTitle($hFocus)) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $hButton1 _WinAPI_SetFocus(GUICtrlGetHandle($hInput1)) Case $hButton2 _WinAPI_SetFocus(GUICtrlGetHandle($hInput2)) EndSwitch WEnd </syntaxhighlight> ===_WinAPI_FlashWindow=== #include <WinAPI.au3> _WinAPI_FlashWindow ( $hWnd [, $bInvert = True] ) Funkcja powoduje pojedyncze mrugnięcie (flash) okna i przycisku na pasku zadań. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, które ma mrugnąć. Okno może być otwarte lub zminimalizowane. '''$bInvert''' - określa sposób zadziałania: True - powoduje mrugnięcie okna i przycisku na pasku zadań, jeżeli okno jest zminimalizowane mruga przycisk i zmienia barwę False - okno i przycisk nie mrugają, jeżeli okno jest zminimalizowane przycisk zmienia barwę bez uprzedniego mrugnięcia Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hWnd = GUICreate("_WinAPI_FlashWindow", 200, 200) $idBtnFlash = GUICtrlCreateButton("Mrugnięcie", 50, 85, 100, 30) GUISetState(@SW_SHOW) While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE Exit Case $iMsg = $idBtnFlash Sleep(2000) _WinAPI_FlashWindow($hWnd) EndSelect WEnd </syntaxhighlight> ===_WinAPI_FlashWindowEx=== #include <WinAPI.au3> _WinAPI_FlashWindowEx ( $hWnd [, $iFlags = 3 [, $iCount = 3 [, $iTimeout = 0]]] ) Funkcja powoduje mrugnie (flash) okna i przycisku na pasku zadań. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. W stosunku do _WinAPI_FlashWindow posiada większe możliwości konfigurowania. '''$hWnd''' - uchwyt do okna, które ma mrugać. Okno może być otwarte lub zminimalizowane. '''$iFlags''' - tryb działania: 0 - mruganie wyłączone, system przywraca okno do stanu pierwotnego 1 - mruganie okna 2 - mruganie przycisku na pasku zadań 4 - mruganie nieprzerwane, aż do zatrzymania 8 - mruga nieprzerwanie, aż okno wyjdzie na pierwszy plan '''$iCount''' - ilość mrugnięć okna '''$iTimeout''' - czas mrugnięcia w milisekundach, 0 - domyślny czas mrugnięcia kursora Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hWnd = GUICreate("_WinAPI_FlashWindowEx", 200, 200) $idBtnFlash = GUICtrlCreateButton("Mrugnięcia", 50, 85, 100, 30) GUISetState(@SW_SHOW) While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE Exit Case $iMsg = $idBtnFlash Sleep(1000) _WinAPI_FlashWindowEx($hWnd, 3, 6) EndSelect WEnd </syntaxhighlight> ==Mysz i klawiatura== ===_WinAPI_GetAsyncKeyState=== #include <WinAPI.au3> _WinAPI_GetAsyncKeyState ( $iKey ) Funkcja sprawdza czy został wciśnięty klawisz o podanym kodzie. Zwraca liczbę dwu bajtową w której: - ustawiony jest najstarszy bit jeżeli dany klawisz jest wciśnięty w momencie wywołania funkcji (wartość -32767) - ustawiony jest najmłodszy bit jeżeli dany klawisz był wciśnięty po poprzednim wywołaniu funkcji _WinAPI_GetAsyncKeyState (wartość 1, na tym rezultacie nie można jednak w 100% polegać) - ma wartość 0 gdy klawisz nie był wciśnięty, lub gdy wystąpił błąd '''$iKey''' - kod klawisza ([http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx MSDN Library - Virtual-Key Codes] '''UWAGA:''' 1. Funkcja rozpoznaje stan klawiszy klawiatury i myszy. 2. Funkcja rozpoznaje tylko klawisze fizyczne, a nie funkcjonalne. Przykładowo lewy klawisz myszy to konstrukcyjnie klawisz z lewej strony urządzenie, a nie klawisz mający funkcję lewego klawisza (w systemie operacyjnym osoba leworęczna można przypisać funkcję lewego klawisza do fizycznego klawisza prawego). Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $iKey = 0x1 ;lewy przycisk myszy Sleep(2000) MsgBox(0, "", _WinAPI_GetAsyncKeyState($iKey)) ;wyświetli -32767 gdy lewy przycisk myszy był wciśnięty w momencie ;wywołania funkcji, 1 gdy wciśniemy na krótko klawisz przed wywołaniem ;funkcji, 0 gdy w ogóle nie wciśniemy lewego klawisza myszy </syntaxhighlight> ===_WinAPI_Mouse_Event=== #include <WinAPI.au3> _WinAPI_Mouse_Event($iFlags [, $iX = 0 [, $iY = 0 [, $iData = 0 [, $iExtraInfo = 0]]]]) Funkcja symuluje ruchy myszy, wciskanie jej przycisków i obracanie kółkiem. Nie zwraca żadnej wartości. '''$iFlags''' - flaga określająca rodzaj symulowanej akcji myszy, może być każdą rozsądną kombinacją następujących wartości: wg Constants.au3 | | opis ------------------------------------------------------------------------------------ $MOUSEEVENTF_ABSOLUTE | 0x8000 | $iX i $iY są współrzędnymi absolutnymi kursora | | w przeciwnym razie są przesunięciami w danej osi ------------------------------------------------------------------------------------ $MOUSEEVENTF_MOVE | 0x0001 | przesunięcie myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_LEFTDOWN | 0x0002 | wciśnięty lewy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_LEFTUP | 0x0004 | zwolniony lewy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_RIGHTDOWN | 0x0008 | wciśnięty prawy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_RIGHTUP | 0x0010 | zwolniony prawy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_MIDDLEDOWN | 0x0020 | wciśnięty środkowy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_MIDDLEUP | 0x0040 | zwolniony środkowy klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_WHEEL | 0x0800 | obrócone kółko myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_XDOWN | 0x0080 | wciśnięty X klawisz myszy ------------------------------------------------------------------------------------ $MOUSEEVENTF_XUP | 0x0100 | zwolniony X klawisz myszy '''$iX''' i '''$iY''' - nowe współrzędne absolutne kursora myszy ($MOUSEEVENTF_ABSOLUTE) lub przesunięcie kursora w odpowiedniej osi '''$iData''' - jeżeli ustawione $MOUSEEVENTF_WHEEL to jest to wielkość obrotu kółka myszy, wartość dodatnia - obrót do przodu, wartość ujemna - obrót do tyłu, jednostkowy obrót kółka to 120, jeżeli $MOUSEEVENTF_WHEEL nie jest ustawione to powinno być $iData = 0 '''$iExtraInfo''' - 32 bitowa wartość związana z myszą '''UWAGA:''' Współrzędne $iX i$iY odnoszą się do wirtualnego ekranu o wymiarach 65535x65535. Aby przeliczyć rzeczywiste współrzędne na wirtualne należy przyjąć: $iX=$x*65535/@DesktopWidth i $y=$y*65535/@DesktopHeight (gdzie $x i $y to rzeczywiste współrzędne ekranowe). Ta sama zasada dotyczy przesunięć przy nie ustawionym $MOUSEEVENTF_ABSOLUTE. Przykład: <syntaxhighlight lang="autoit"> #include <Constants.au3> #include <WinAPI.au3> Local $x = 500, $y = 400 ;przeliczenie współrzędnych na wirtualny ekran $iX = $x * 65535 / @DesktopWidth $iY = $y * 65535 / @DesktopHeight ;przesunięcie myszy _WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE), $iX, $iY) _WinAPI_Mouse_Event($MOUSEEVENTF_RIGHTDOWN) ;wciśnięcie prawego przycisku _WinAPI_Mouse_Event($MOUSEEVENTF_RIGHTUP) ;zwolnienie prawego przycisku </syntaxhighlight> ===_WinAPI_GetMousePos=== #include <WinAPI.au3> _WinAPI_GetMousePos([$fToClient = False [, $hWnd = 0]]) Funkcja zwraca bieżącą pozycję kursora myszy w postaci struktury $tagPOINT. Jeżeli wystąpił błąd ustawiane jest makro @error. '''$fToClient''' - False - współrzędne absolutne ekranu, True - współrzędne przestrzeni roboczej okna '''$hWnd''' - uchwyt do okna, tylko dla $fToClient = True Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hWnd = GUICreate("Okno testowe") GUISetState() $tPoint1 = _WinAPI_GetMousePos() $tPoint2 = _WinAPI_GetMousePos(True, $hWnd) MsgBox(0, "Położenie kursora myszy", _ "We współrzędnych absolutnych:" & @LF & _ "X = " & DllStructGetData($tPoint1, "X") & @LF & _ "y = " & DllStructGetData($tPoint1, "Y") & @LF & @LF & _ "We współrzędnych okna:" & @lf & _ "x = " & DllStructGetData($tPoint2, "X") & @lf & _ "y = " & DllStructGetData($tPoint2, "Y")) </syntaxhighlight> ===_WinAPI_GetMousePosX=== #Include <WinAPI.au3> _WinAPI_GetMousePosX ([$fToClient = False [, $hWnd = 0]]) Funkcja zwraca współrzędną poziomą kursora myszy. Jeżeli wystąpił błąd ustawiane jest makro @error. '''$fToClient''' - False - współrzędne absolutne ekranu, True - współrzędne przestrzeni roboczej okna '''$hWnd''' - uchwyt do okna, tylko dla $fToClient = True ===_WinAPI_GetMousePosY=== #Include <WinAPI.au3> _WinAPI_GetMousePosY ([$fToClient = False [, $hWnd = 0]]) Funkcja zwraca współrzędną poziomą kursora myszy. Jeżeli wystąpił błąd ustawiane jest makro @error. '''$fToClient''' - False - współrzędne absolutne ekranu, True - współrzędne przestrzeni roboczej okna '''$hWnd''' - uchwyt do okna, tylko dla $fToClient = True Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $hWnd = GUICreate("Okno testowe") GUISetState() $x1 = _WinAPI_GetMousePosX() $x2 = _WinAPI_GetMousePosX(True, $hWnd) $y1 = _WinAPI_GetMousePosY() $y2 = _WinAPI_GetMousePosY(True, $hWnd) MsgBox(0, "Położenie kursora myszy", _ "We współrzędnych absolutnych:" & @LF & _ "X = " & $x1 & @LF & _ "y = " & $y1 & @LF & @LF & _ "We współrzędnych okna:" & @lf & _ "x = " & $x2 & @lf & _ "y = " & $y2) </syntaxhighlight> ===_WinAPI_EnableWindow=== #include <WinAPI.au3> _WinAPI_EnableWindow ( $hWnd [, $bEnable = True] ) Funkcja blokuje, lub odblokowuje dostęp myszki i klawiatury do określonego okna lub kontrolki. Zwraca True gdy okno (kontrolka) było poprzednio zablokowane, lub Felse gdy było odblokowane. ''$hWnd''' - uchwyt do okna lub kontrolki '''$bEnable''' - rodzaj operacji, True - odblokowanie, False - blokowanie Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("_WinAPI_EnableWindow", 400, 300) $hLab = GUICtrlCreateLabel("", 70, 80,220,70) GUISetState() _WinAPI_EnableWindow ( $hGUI, False) ;zablokowanie dostępu do okna GUICtrlSetData($hLab,"Kursor zablokowany na 5 sekund") Sleep(5000) _WinAPI_EnableWindow ( $hGUI, True) ;odblokowanie dostępu do okna GUICtrlSetData($hLab,"Kursor odblokowany") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ===_WinAPI_SetCapture=== #include <WinAPI.au3> _WinAPI_SetCapture($hWnd) Funkcja przechwytuje kursor myszki w danym oknie (kursor jest nieaktywny, ikona klepsydry). Zwraca uchwyt do okna, w którym poprzednio był przechwycony kursor, lub 0 gdy wystąpił błąd. '''$hWnd''' - uchwyt do okna, w którym zostanie przechwycony kursor ===_WinAPI_ReleaseCapture=== #include <WinAPI.au3> _WinAPI_ReleaseCapture() Funkcja zwalnia przechwytywanie kursora myszki. Zwraca True gdy sukces, lub False gdy wystąpił błąd. Przykład: <syntaxhighlight lang="autoit"> #include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGUI = GUICreate("_WinAPI_SetCapture", 400, 300) $hLab = GUICtrlCreateLabel("KURSOR ZABLOKOWANY - Naciśnij ESC", 70, 80,220,70) GUISetState() Do _WinAPI_SetCapture($hGUI) ;przechwycenie kursora Until GUIGetMsg() = $GUI_EVENT_CLOSE _WinAPI_ReleaseCapture() ;zwolnienie kursora GUICtrlSetData($hLab,"KURSOR ODBLOKOWANY") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE </syntaxhighlight> ==Pliki i programy== ===_WinAPI_CreateFile=== #include <WinAPI.au3> _WinAPI_CreateFile($sFileName, $iCreation [, $iAccess = 4 [, $iShare = 0 [, $iAttributes = 0 [, $pSecurity = 0]]]]) Funkcja tworzy lub otwiera plik o podanej nazwie. Zwraca otwarty uchwyt pliku, lub 0 gdy wystąpił błąd. '''$sFileName''' - nazwa pliku do utworzenia lub otwarcia '''$iCreation''' - działania odnoszące się do plików, które istnieją lub nie istnieją: 0 - tworzy nowy plik, funkcja nie działa, jeśli plik istnieje 1 - tworzy nowy plik, jeśli plik istnieje, to zostanie nadpisany 2 - otwiera plik, funkcja nie działa, jeśli plik nie istnieje 3 - otwiera plik, jeśli plik nie istnieje, funkcja tworzy plik 4 - otwiera plik i czyści go do rozmiaru 0 bajtów, funkcja nie działa, jeśli plik nie istnieje '''$iAccess''' - dostęp do obiektu: 1 - wykonanie 2 - odczytanie 4 - zapisanie '''$iShare''' - trybu udostępniania obiektu: 1 - usuwanie 2 - czytanie 4 - zapisanie '''$iAttributes''' - atrybuty pliku: 1 - plik archiwalny 2 - Plik ukryty 4 - plik tylko do odczytu 8 - jest częścią lub jest wykorzystywany wyłącznie przez system operacyjny '''$pSecurity''' - wskaźnik do struktury $tagSECURITY_ATTRIBUTES, która ustala, czy zwrócony uchwyt może być dziedziczony przez procesy potomne, jeśli $pSecurity = 0, uchwyt nie może być dziedziczony. ===_WinAPI_ReadFile=== #include <WinAPI.au3> _WinAPI_ReadFile($hFile, $pBuffer, $iToRead, ByRef $iRead [, $pOverlapped = 0]) Funkcja odczytuje dane z pliku. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$sFileName''' - nazwa pliku do utworzenia lub otwarcia '''$pBuffer''' - wskaźnik do bufora do którego będą wczytywane dane '''$iToRead''' - maksymalna liczba bajtów do odczytu '''$iRead''' - liczba odczytanych bajtów '''$pOverlapped''' - wskaźnik do $ tagOVERLAPPED ===_WinAPI_WriteFile=== #include <WinAPI.au3> _WinAPI_WriteFile($hFile, $pBuffer, $iToWrite, ByRef $iWritten [, $pOverlapped = 0]) Funkcja zapisuje w pliku, w położeniu określonym przez wskaźnik. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hFile''' - uchwyt do pliku '''$pBuffer''' - wskaźnik do bufora zawierającego dane do zapisu '''$iToWrite''' - liczba bajtów do zapisu '''$iWritten''' - liczba zapisanych bajtów '''$pOverlapped''' - wskaźnik do $ tagOVERLAPPED ===_WinAPI_SetFilePointer=== #include <WinAPI.au3> _WinAPI_SetFilePointer($hFile, $iPos [, $iMethod = 0]) Funkcja przesuwa wskaźnik pliku o podaną ilość pozycji. Zwraca nowe położenie wskaźnika. Jeżeli wystąpił błąd makro @error <> 0. Wskaźnik pliku to pozycja, od której rozpoczyna się zapis lub odczyt danych w pliku. '''$hFile''' - uchwyt do pliku '''$iPos''' - ilość bajtów, o które zostanie przesunięty wskaźnik pliku, wartość dodatnia oznacza przesunięcie w kierunku końca pliku, ujemna w kierunku początku (maksymalna wartość 2^32) '''$iMethod''' - początkowa pozycja wskaźnika, może to być jedna z następujących wartości: 0 - początek pliku (domyślnie) 1 - aktualne położenie wskaźnika 2 - koniec pliku '''UWAGA:''' Funkcja może być użyta do odczytu aktualnego położenia wskaźnika. W takim przypadku należy podać $iPos = 0 i $iMethod = 1. ===_WinAPI_SetEndOfFile=== #include <WinAPI.au3> _WinAPI_SetEndOfFile($hFile) Funkcja ustawia fizyczny rozmiar podanego pliku w bieżącej pozycji wskaźnika pliku. Zwraca True gdy sukces, lub False gdy wystąpił błąd (makro @extended zawiera kod błędu, taki jak zwracany przez _WinAPI_GetLastError). '''$hFile''' - uchwyt do pliku '''UWAGA:''' Funkcja ta może być użyta do zmniejszenia lub zwiększenia plik, a więc do ustawienia jego rozmiaru. Jeśli plik jest zwiększany zawartość pomiędzy starym i nowym końcem pliku nie jest zdefiniowana. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $nBytes, $sFile = 'test.txt' $sTxt1 = 'abcdefghijklmnopqrstuvwxyz' & @LF & '1234567890' $len1 = StringLen($sTxt1) $tBuffer = DllStructCreate("char[" & $len1 & "]") DllStructSetData($tBuffer, 1, $sTxt1) ;tworzenie struktury z danymi ;tworzenie pliku tekstowego $hFile = _WinAPI_CreateFile($sFile, 1) ;utworzenie pliku _WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), $len1, $nBytes) _WinAPI_CloseHandle($hFile) ;zamknięcie pliku MsgBox(0,"Test 1", FileRead($sFile)) ;odczyt 6 znaków z pliku, poczynając od poz. 3 $tBuffer = DllStructCreate("char[6]") $hFile = _WinAPI_CreateFile($sFile, 2, 2) ;otwarcie pliku do odczytu _WinAPI_SetFilePointer($hFile, 3) ;wskaźnik na poz. 3 _WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes) ;odczyt 6 bajtów _WinAPI_CloseHandle($hFile) MsgBox(0,"Test 2", DllStructGetData($tBuffer, 1)) ;wstawienie do pliku nowych danych 6 znaków od poz. 30 $sTxt2 = "#####" $len2 = StringLen($sTxt2) $tBuffer = DllStructCreate("char[" & $len2 & "]") DllStructSetData($tBuffer, 1, $sTxt2) $hFile = _WinAPI_CreateFile($sFile, 2, 4) _WinAPI_SetFilePointer($hFile, 28) _WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), $len2, $nBytes) _WinAPI_CloseHandle($hFile) MsgBox(0,"Test 3", FileRead($sFile)) ;skrócenie pliku na poz. 29 $hFile = _WinAPI_CreateFile($sFile, 2, 4) _WinAPI_SetFilePointer($hFile, 29) ;wskaźnik na poz. 29 _WinAPI_SetEndOfFile($hFile) ;ustawienie końca pliku _WinAPI_CloseHandle($hFile) MsgBox(0,"Test 4", FileRead($sFile)) </syntaxhighlight> ===_WinAPI_GetFileSizeEx=== #include <WinAPI.au3> _WinAPI_GetFileSizeEx($hFile) Funkcja zwraca wielkość pliku. Jeżeli wystąpi błąd ustawiane jest makro @error. '''$hFile''' - uchwyt do pliku ===_WinAPI_GetOpenFileName=== #include <WinAPI.au3> _WinAPI_GetOpenFileName ( [$sTitle = "" [, $sFilter = "All files ( *.* ) " [, $sInitalDir = "." [, $sDefaultFile = "" [, $sDefaultExt = "" [, $iFilterIndex = 1 [, $iFlags = 0 [, $iFlagsEx = 0 [, $hwndOwner = 0]]]]]]]]] ) Funkcja wywołuje systemowy selektor do otwarcia plików. Zwraca jednowymiarową tablicę z danymi wybranych plików. Jeżeli wystąpi błąd (np. nie wybrano żadnego pliku), zwracana jest jednoelementowa tablica zawierająca wartość 0. Zawartość zwracanej tablicy: $Tablica[0] - liczba łańcuchów tekstowych, jest równa ilości wybranych plików + 1 = n $Tablica[1] - ścieżka dostępu do wybranego pliku (plików) $Tablica[2] - nazwa wybranego pliku ... $Tablica[n] - nazwa wybranego pliku '''$sTitle''' - nazwa okna selektora '''$sFilter''' - zestaw filtrów określający jakie pliki będą wyświetlane. Każdy składa się z dwóch elementów. Pierwszym elementem to jego opis, który będzie wyświetlany w oknie selektora, np.: "Pliki tekstowe". Drugi element filtru opisuje maskę ​​pliku, np.: "*.txt". Aby opisać zestaw masek w jednym filtrze, należy rozdzielić je znakiem średnika (;), np.: "(*.TXT;*.DOC;*.BAK)". Maska może być kombinacją zwykłych znaków i symboli wieloznacznych (* - dowolna ilość dowolnych znaków, ? - jeden dowolny znak), np.: "a*.???" oznacza dowolną nazwę zaczynająca się na a, i dowolne 3-literowe rozszerzenie nazwy. Nie należy używać spacji w masce. Filtry można łączyć w zestawy rozdzielając poszczególne składniki znakiem pionowej kreski (|). Pełny zestaw filtrów może wyglądać np. tak: '''"Pliki Graficzne (*.bmp;*.jpg;*.gif) | Pliki tekstowe (*.txt) | Pliki audio (*.MP3;*.Wav;*.WMA)"''' '''$sInitalDir''' - początkowy folder, kropka (".") oznacza folder bieżący uruchomionego skryptu (wartość domyślna). '''$sDefaultFile''' - wyjściowa nazwa pliku, która będzie wyświetlona w polu "Nazwa pliku:", domyślnie jest string pusty czyli brak nazwy. '''$sDefaultExt''' - wyjściowe rozszerzenie nazwy pliku, domyślnie jest string pusty czyli brak wyjściowego rozszerzenia. '''$iFilterIndex''' - numer filtru, który będzie aktywny po wywołaniu selektora '''$iFlags''' - flaga, pełny opis w dokumentacji AutoIt'a, jak dla struktury $tagOPENFILENAME, np.: $OFN_ALLOWMULTISELECT = 0x80000 - możliwość wybrania większej ilości plików, $OFN_EXPLORER = 0x200 - selektor w nowym stylu. '''$iFlagsEx''' - flaga rozszerzona, pełny opis w dokumentacji AutoIt'a, jak dla struktury $tagOPENFILENAME. '''$hwndOwner''' - uchwyt do okna nadrzędnego Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $aFile = _WinAPI_GetOpenFileName( "Test selektora plików", _ "Pliki grafiki(*.jpg;*.bmp;*.gif) | Skrypt(*.au3)", _ "", "", "", 1, BitOR($OFN_ALLOWMULTISELECT, $OFN_EXPLORER)) $iFile = (UBound($aFile)>1 ? $aFile[0]-1 : 0) $txt = "Ilość wybranych plików: " & $iFile If $iFile Then $txt &= @LF & "Ścieżka do plików: " & $aFile[1] For $i = 1 To $iFile $txt &= @LF & "Nazwa pliku " & $i & ": "& $aFile[$i + 1] Next EndIf MsgBox(0, "Wybrane pliki", $txt) </syntaxhighlight> ===_WinAPI_GetSaveFileName=== #include <WinAPI.au3> _WinAPI_GetSaveFileName ( [$sTitle = "" [, $sFilter = "All files ( *.* ) " [, $sInitalDir = "." [, $sDefaultFile = "" [, $sDefaultExt = "" [, $iFilterIndex = 1 [, $iFlags = 0 [, $iFlagsEx = 0 [, $hwndOwner = 0]]]]]]]]] ) Funkcja wywołuje systemowy selektor do zapisywania pliku. Zwraca jednowymiarową tablicę z danymi wybranego pliku. Jeżeli wystąpi błąd (np. nie wybrano żadnego pliku), zwracana jest jednoelementowa tablica zawierająca wartość 0. Zawartość zwracanej tablicy: $Tablica[0] - liczba łańcuchów tekstowych, 2 jeśli wybrano plik $Tablica[1] - ścieżka dostępu do wybranego pliku $Tablica[2] - nazwa wybranego pliku Wszystkie parametry jak dla '''_WinAPI_GetOpenFileName'''. ===_WinAPI_FlushFileBuffers=== #include <WinAPI.au3> _WinAPI_FlushFileBuffers($hFile) Funkcja powoduje zapisanie buforowanych danych do pliku. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hFile''' - uchwyt do pliku ===_WinAPI_FindExecutable=== #include <WinAPI.au3> _WinAPI_FindExecutable($sFileName [, $sDirectory = ""]) Funkcja zwraca ścieżkę do programu (pliku wykonywalnego) skojarzonego z określonym plikiem, lub pusty string gdy wystąpił błąd (w @error ustawiony jest kod błędu). '''$sFileName''' - pełna ścieżka do istniejącego pliku '''$sDirectory''' - ścieżka do domyślnego katalogu Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $sPath = FileOpenDialog("Wybierz plik", @mydocumentsdir, "Wszystkie (*.*)", 1 + 2) If Not @error Then MsgBox(0, "Aplikacja skojarzone z plikiem", "Plik: " & @LF & $sPath & @LF & @LF & _ "Skojarzona aplikacja: " & @lf & _WinAPI_FindExecutable($sPath)) EndIf </syntaxhighlight> ===_WinAPI_GetModuleHandle=== #include <WinAPI.au3> _WinAPI_GetModuleHandle ( $sModuleName ) Funkcja zwraca uchwyt dla określonego modułu. Moduł musi być ładowany przez proces wywołujący. Gdy wystąpił błąd zwracane jest 0. '''$sModuleName''' - nazwa załadowanego modułu (*.dll lub *.exe). Jeżeli pominiemy rozszerzenie to domyślnie zostanie przyjęte jako .dll. Jeżeli moduł nie posiada rozszerzenia, to nazwę należy zakończyć kropką (np. moj_modul.). Wartość NULL zamiast nazwy oznacza, że zostanie zwrócony uchwyt do własnego procesu (skryptu). ==Powiadomienia i komunikaty== ===_WinAPI_MessageBeep=== #include <WinAPI.au3> _WinAPI_MessageBeep([$iType = 1]) Funkcja odtwarza określony dźwięk systemowy. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$iType''' - kod dźwięku 0 - normalny sygnał 1 - OK 2 - błąd 3 - pytanie 4 - wykrzyknik 5 - gwiazdka Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0,"Test dźwiękowy", "0 - Normalny dźwięk") _WinAPI_MessageBeep(0) MsgBox(0,"Test dźwiękowy", "1 - OK") _WinAPI_MessageBeep(1) MsgBox(0,"Test dźwiękowy", "2 - błąd") _WinAPI_MessageBeep(2) MsgBox(0,"Test dźwiękowy", "3 - pytanie") _WinAPI_MessageBeep(3) MsgBox(0,"Test dźwiękowy", "4 - wykrzyknik") _WinAPI_MessageBeep(4) MsgBox(0,"Test dźwiękowy", "5 - gwiazdka") _WinAPI_MessageBeep(5) </syntaxhighlight> ===_WinAPI_FatalAppExit=== #include <WinAPI.au3> _WinAPI_FatalAppExit ( $sMessage ) Funkcja wyświetla okno komunikatu i kończy działanie skryptu. Nie zwraca żadnej wartości. '''UWAGA:''' Używać _WinAPI_FatalAppExit tylko wtedy, gdy nie ma możliwości zakończenia skryptu w inny sposób. Funkcja może nie zwolnić całej pamięci używanej przez skrypt oraz nie zamknąć wszystkich używanych przez niego plików. Może to spowodować ogólną awarię systemu. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> _WinAPI_FatalAppExit ("To już konic!") MsgBox(0, "???", "To i tak się nie wyświetli!") </syntaxhighlight> ===_WinAPI_ShowError=== #include <WinAPI.au3> _WinAPI_ShowError($sText [, $fExit = True]) Funkcja wyświetla okienko powiadomienia o błędzie i generuje stosowny sygnał dźwiękowy. Nie zwraca żadnej wartości. '''$sText''' - treść powiadomienia '''$fExit''' - określa czy działanie skryptu ma być przerwane po zamknięciu okienka, True - tak, False - nie Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> _WinAPI_ShowError('Wystąpił przerażający błąd!', False) MsgBox(4096, 'Bardzo ważna informacja!', 'Mimo wszystko próbujmy działąć dalej.') _WinAPI_ShowError('Błąd jeszcze straszniejszy!') MsgBox(4096, 'Nie ma co pisać, i tak się nie wyświetli', '') </syntaxhighlight> ===_WinAPI_ShowMsg=== #include <WinAPI.au3> _WinAPI_ShowMsg($sText) Funkcja wyświetla okienko informacyjne i generuje stosowny sygnał dźwiękowy. Nie zwraca żadnej wartości. '''$sText''' - treść powiadomienia Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> _WinAPI_ShowMsg('To jest bardzo ważna informacja!') </syntaxhighlight> ===_WinAPI_MsgBox=== #include <WinAPI.au3> _WinAPI_MsgBox($iFlags, $sTitle, $sText) Funkcja wyświetla okienko komunikatu. Nie zwraca żadnej wartości. '''$iFlags''' - flaga (jak dla MsgBox) '''$sTitle''' - tekst na belce '''$sText''' - tekst wewnątrz okienka '''UWAGA:''' Funkcja jest bardzo podobna do '''MsgBox'''. Różnicą jest to, że nie można ustalić czasu, po którym okno automatycznie się zamknie. Ponieważ funkcja nie zwraca żadnej wartości, używanie flagi o większej ilości przycisków jest pozbawione sensu (nie można rozpoznać, który przycisk został użyty). W odróżnieniu od '''MsgBox''', '''_WinAPI_MsgBox''' powoduje automatyczne odblokowanie klawiatury i myszy, co ilustruje poniższy przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> BlockInput(1) _WinAPI_MsgBox(64, '_WinAPI_MsgBox', 'Automatyczne odblokowanie') BlockInput(1) MsgBox(64, 'MsgBox', 'Odblokowanie po 3 sek.',3) BlockInput(0) </syntaxhighlight> ===_WinAPI_GetLastError=== #include <WinAPI.au3> _WinAPI_GetLastError ( ) Funkcja zwraca kod ostatniego błędu powstałego w aktualnym wątku. ===_WinAPI_GetLastErrorMessage=== #include <WinAPI.au3> _WinAPI_GetLastErrorMessage ( ) Funkcja zwraca komunikat ostatniego błędu powstałego w aktualnym wątku. ===_WinAPI_SetLastError=== #include <WinAPI.au3> _WinAPI_SetLastError ( $iErrorCode ) Funkcja ustawia kod ostatniego błędu powstałego w aktualnym wątku. '''$iErrorCode''' - kod błędu Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> FileOpen ("ble ble ble") ;próba otwarcia nieistniejącego pliku celem wywołania błędu systemowego MsgBox(64, "Błąd:", _WinAPI_GetLastError() &" - " & _WinAPI_GetLastErrorMessage()) _WinAPI_SetLastError(66) ;"ręczne" ustawienie kodu błędu MsgBox(64, "Błąd:", _WinAPI_GetLastError() &" - " & _WinAPI_GetLastErrorMessage()) </syntaxhighlight> ===_WinAPI_PostMessage=== #include <WinAPI.au3> _WinAPI_PostMessage ( $hWnd, $iMsg, $wParam, $lParam ) Funkcja wysyła komunikat do okna )kontrolki). Zwraca True gdy sukces, lub False gdy wystąpił błąd (informacje o błedzie można odczytać funkcją _WinAPI_GetLastError. '''$hWnd''' - Uchwyt okna (kontrolki) która otrzyma komunikat. Jeśli parametr wynosi 0xFFFF (HWND_BROADCAST),to komunikat zostanie wysłany do wszystkich okien najwyższego poziomu w systemie, włączając w to okna nieaktywne, niewidoczne, pokrywające się i pop-up Komunikat nie jest natomiast wysyłana do okien podrzędnych. '''$iMsg''' - wysyłany komunikat '''$wParam''' - pierwszy parametr komunikatu (zależny od rodzaju komunikatu) '''$lParam''' - drugi parametr komunikatu (zależny od rodzaju komunikatu) Komunikat | Opis | $wParam | $lParam --------------------------------------------------------------------------------------------------------------------- $WM_LBUTTONDBLCLK | Dwukrotne wciśnięcie LPM (dwuklik) | Współrzędne x i y | "" $WM_LBUTTONDOWN | Wciśnięcie i przytrzymanie LPM | Współrzędne x i y | "" $WM_LBUTTONUP | Puszczenie LPM | Współrzędne x i y | "" --------------------------------------------------------------------------------------------------------------------- $WM_MBUTTONDBLCLK | J/w dla środkowego przycisku myszy | Współrzędne x i y | "" $WM_MBUTTONDOWN | | Współrzędne x i y | "" $WM_MBUTTONUP | | Współrzędne x i y | "" --------------------------------------------------------------------------------------------------------------------- $WM_RBUTTONDBLCLK | J/w dla prawego przycisku myszy | | $WM_RBUTTONDOWN | | Współrzędne x i y | "" $WM_RBUTTONUP | | Współrzędne x i y | "" --------------------------------------------------------------------------------------------------------------------- Przykład: <syntaxhighlight lang="autoit"> #include <WindowsConstants.au3> #include <WinAPI.au3> Run("calc.exe") Sleep(1000) WinSetState("Kalkulator", "", @SW_HIDE) Sleep(200) Local $hHandle = ControlGetHandle("Kalkulator", "", "5") Local $iCoordinates = _WinAPI_MakeLong(10,10) For $i=1 To 5 _WinAPI_PostMessage($hHandle, $WM_LBUTTONDOWN, "", $iCoordinates ) _WinAPI_PostMessage($hHandle, $WM_LBUTTONUP, "", $iCoordinates ) Next Sleep(1000) WinSetState("Kalkulator", "", @SW_SHOW) </syntaxhighlight> ==System== ===_WinAPI_CloseHandle=== #include <WinAPI.au3> _WinAPI_CloseHandle($hObject) Funkcja zamyka otwarty uchwyt obiektu. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$hObject''' - uchwyt obiektu, np. okna, pliku, itp. ===_WinAPI_EnumDisplayDevices=== #include <WinAPI.au3> _WinAPI_EnumDisplayDevices ( $sDevice, $iDevNum ) Funkcja zwraca informacje na temat urządzeń wyświetlających w systemie. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. '''$sDevice''' - nazwa urządzenia. Jeżeli pusta, funkcja zwraca informacje dla kart graficznych. '''$iDevNum''' - numer (indeks) urządzenia Informacje są zwracane w postaci jednowymiarowej tablicy: [1] - True [2] - adapter lub monitor [3] - opis adaptera lub monitora [4] - flaga statusu urządzenia (suma następujących wartości): 1 - urządzenie jest częścią pulpitu 2 - podstawowy pulpit jest na tym urządzeniu, dla systemów z jedną kartą graficzną jest zawsze ustawione, dla systemów z wieloma kartami graficznymi, może być ustawione tylko dla jednej z nich. 4 - wirtualne urządzenie dla usług zdalnego dostępu 8 - urządzenie jest kompatybilne z VGA 16 - urządzenie wymienne, nie jest głównym wyświetlaczem 32 - urządzenie posiada więcej trybów wyświetlania niż wsparcie urządzeń wyjściowych Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> Local $aDev, $i=0, $txt While 1 $aDev = _WinAPI_EnumDisplayDevices("", $i) If Not $aDev[0] Then ExitLoop $txt = "Sukces? " & $aDev[0] & @CRLF $txt &= "Urządzenie (Adapter lub monitor): " & $aDev[1] & @CRLF $txt &= "Opis (Adapter lub monitor): " & $aDev[2] & @CRLF $txt &= "Flaga statusu urządzenia: " & $aDev[3] & @CRLF If BitAND($aDev[3], 32) Then $txt &= @TAB & "- Urządzenie ma więcej trybów wyświetlania niż wsparcie urządzeń wyjściowych" & @CRLF If BitAND($aDev[3], 16) Then $txt &= @TAB & "- Urządzenie wymienne, nie jest głównym wyświetlaczem" & @CRLF If BitAND($aDev[3], 8) Then $txt &= @TAB & "- Urządzenie kompatybilne z VGA" & @CRLF If BitAND($aDev[3], 4) Then $txt &= @TAB & "- Wirtualne urządzenie dla usług zdalnego dostępu" & @CRLF If BitAND($aDev[3], 2) Then $txt &= @TAB & "- Urządzenie podstawowego pulpitu" & @CRLF If BitAND($aDev[3], 1) Then $txt &= @TAB & "- Urządzenie znajduje się w pulpicie" & @CRLF $txt &= "Ciąg identyfikatora Plug and Play: " & $aDev[4] & @CRLF MsgBox(0, "", $txt) $i += 1 WEnd </syntaxhighlight> ===_WinAPI_GlobalMemoryStatus=== #include <WinAPI.au3> _WinAPI_GlobalMemoryStatus ( ) Funkcja zwraca informacje na temat aktualnie dostępnej pamięci operacyjnej. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. Informacje są zwracane w postaci jednowymiarowej tablicy: [0] - procent zajętej pamięci [1] - całkowity rozmiar fizycznej pamięci [2] - rozmiar wolnej pamięci fizycznej [3] - całkowity rozmiar pliku stronicowania [4] - wolny obszar pliku stronicowania [5] - całkowity rozmiar pamięci użytkownika [6] - rozmiar wolnej pamięci użytkownika Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> #include <WinAPI.au3> $aMemInfo = _WinAPI_GlobalMemoryStatus() $sMemInfo = "Procent zajętej pamięci: " & $aMemInfo[0] & "%" & @CRLF & @CRLF & _ "Całkowity rozmiar fizycznej pamięci:" & @TAB & $aMemInfo[1] & @CRLF & @CRLF & _ "Rozmiar wolnej pamięci fizyczne:" & @TAB & $aMemInfo[2] & @CRLF & @CRLF & _ "Całkowity rozmiar pliku stronicowania:" & @TAB & $aMemInfo[3] & @CRLF & @CRLF & _ "Wolny obszar pliku stronicowania:" & @TAB & $aMemInfo[4] & @CRLF & @CRLF & _ "Całkowity rozmiar pamięci użytkownika:" & @TAB & $aMemInfo[5] & @CRLF & @CRLF & _ "Rozmiar wolnej pamięci użytkownika:" & @TAB & $aMemInfo[6] MsgBox(64, "Pamięć operacyjna:", $sMemInfo) </syntaxhighlight> ===_WinAPI_ExpandEnvironmentStrings=== #include <WinAPI.au3> _WinAPI_ExpandEnvironmentStrings ( $sString ) Funkcja zwraca string odpowiadający danej zmiennej środowiskowej. Jeżeli wystąpił błąd makro @error przyjmuje wartość różną od zera. '''$sString''' - nazwa zmiennej systemowej Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0, "String zmiennej środowiskowej", "%windir% = " & _ _WinAPI_ExpandEnvironmentStrings("%windir%")) </syntaxhighlight> ===_WinAPI_GetSystemMetrics=== #include <WinAPI.au3> _WinAPI_GetSystemMetrics($iIndex) Funkcja zwraca określoną metrykę lub ustawienie konfiguracji systemu. Jeżeli wystąpił błąd zwracane jest 0. '''$iIndex''' - indeks parametru systemu, który chcemy poznać 0 - szerokość ekranu w pikselach 1 - wysokość ekranu w pikselach 2 - szerokość pionowego paska przewijania w pikselach 3 - wysokość poziomego paska przewijania w pikselach 4 - wysokość paska tytułowego okna w pikselach 5 - szerokość obramowanie okna w pikselach 7 - grubość ramy na obwodzie okna 8 - szerokość pionowej ramki wokół obwodu okna, które ma tytuł, ale nie zmienia swojego rozmiaru 9 - wysokość thumbbox'a na pionowym pasku przewijania 10 - szerokość thumbbox'a na poziomym pasku przewijania 11 - domyślna szerokość ikony w pikselach 12 - domyślna wysokość ikony w pikselach 13 - szerokość kursora w pikselach 14 - wysokość kursora w pikselach 15 - wysokość pojedynczej linii paska menu 16 - szerokość obszaru roboczego dla okna pełnoekranowego 17 - wysokość obszaru roboczego dla okna pełnoekranowego 20 - wysokość pionowego paska przewijania 21 - szerokość poziomego paska przewijania 23 - wartość niezerowa, jeśli znacznie lewego i prawego przycisku myszy zostało zamienione, inaczej 0 28 - minimalna szerokość okna w pikselach 29 - minimalna wysokość okna w pikselach 30 - szerokość przycisku w tytule okna lub na pasku tytułowym 36 - szerokość prostokąta wokół obszaru pierwszego kliknięcia w sekwencji podwójnego kliknięcia. Drugie kliknięcie musi wystąpić w obszarze tego prostokąta, aby uznać dwa kliknięcia za podwójne kliknięcie. 37 - jak 36 lecz dla wysokości prostokąta 43 - liczba przycisków myszy, 0 gdy mysz nie zainstalowana 67 - określa jak system został uruchomiony 0 - normalnie 1 - w trybie awaryjny 2 - w trybie awaryjnym z obsługą sieci ===_WinAPI_SystemParametersInfo=== #include <WinAPI.au3> _WinAPI_SystemParametersInfo($iAction [, $iParam = 0 [, $vParam = 0 [, $iWinIni = 0]]]) Funkcja obiera albo ustawia wartość jednego z parametrów systemu. Funkcja ta może również zaktualizować profil użytkownika podczas ustawiania parametru. Zwraca True gdy sukces lub False gdy wystąpił błąd. ===_WinAPI_GetSysColor=== #include <WinAPI.au3> _WinAPI_GetSysColor($iIndex) Funkcja zwraca kod koloru elementów systemowych okien (w formacie BGR). '''$iIndex''' - kod elementu, którego kolor ma być zwrócony przez funkcję $COLOR_3DDKSHADOW | 21 | ciemny cień elementów trójwymiarowych $COLOR_3DFACE | 15 | kolor tła trójwymiarowych elementów dialogowych $COLOR_3DHILIGHT | 20 | kolor trójwymiarowego elementy ekranu (na krawędzi skierowanej do źródła światła) $COLOR_3DLIGHT | 22 | kolor trójwymiarowe elementy ekranu (na krawędzi skierowaną do źródła światła.) $COLOR_3DSHADOW | 16 | kolor cienia trójwymiarowe elementu ekranu (na krawędzi przeciwległych do źródła światła) $COLOR_ACTIVEBORDER | 10 | granice aktywnego okna $COLOR_ACTIVECAPTION | 2 | aktywny pasek tytułu $COLOR_APPWORKSPACE | 12 | obszar roboczy aplikacji (MDI). $COLOR_BTNTEXT | 18 | kolor tekstu na przycisku $COLOR_CAPTIONTEXT | 9 | kolor tekstu tytułu $COLOR_DESKTOP | 1 | kolor tła pulpitu $COLOR_GRADIENTACTIVECAPTION | 27 | kolor gradientu w prawej stronie tytułu aktywnego okna $COLOR_ACTIVECAPTION | 2 | kolor aktywnego paska tytułu $COLOR_GRADIENTINACTIVECAPTION | 28 |kolor gradientu w prawej stronie tytułu nieaktywnego okna $COLOR_INACTIVECAPTION | 3 | określa lewy kolor boczny $COLOR_GRAYTEXT | 17 | szary tekst (niedostępny) $COLOR_HIGHLIGHT | 13 | pozycja (pozycje) wybrana w kontrolce $COLOR_HIGHLIGHTTEXT | 14 | kolor tekstu elementu (elenentów) wybranego w kontrolce $COLOR_HOTLIGHT | 26 | kolor dla hiperłącza i pozycji "hot-tracked" $COLOR_INACTIVEBORDER | 11 | kolor ramki nieaktywnego okna $COLOR_INACTIVECAPTION | 3 | kolor tytuł nieaktywnego okna $COLOR_INACTIVECAPTIONTEXT | 19 | kolor tekstu w nagłówku nieaktywnego okna $COLOR_INFOBK | 24 | tło tooltip'u $COLOR_INFOTEXT | 23 | tekst na tooltip'ie $COLOR_MENU | 4 | kolor tła menu $COLOR_MENUHILIGHT | 29 | kolor pozycji menu, gdy menu jest płaskie $COLOR_MENUBAR | 30 | kolor tła menu, gdy menu jest płaskie $COLOR_MENUTEXT | 7 | kolor tekstu w menu $COLOR_SCROLLBAR | 0 | szary obszar paska przewijania $COLOR_WINDOW | 5 | kolor tła okna $COLOR_WINDOWFRAME | 6 | kolor ramy okna $COLOR_WINDOWTEXT | 8 | kolor tekstu w oknie ===_WinAPI_SetSysColors=== #include <WinAPI.au3> _WinAPI_SetSysColors($vElements, $vColors) Funkcja ustawia kolor elementów okien. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$vElements''' - kod elementu, lub tablica kodów (kody jak dla '''_WinAPI_SetGetColors''') '''$vColors''' - kod koloru, lub tablica kodów (format BRG) '''UWAGA:''' Zmiana kolorów będzie aktualna nawet po zakończeniu skryptu! Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> GUICreate("Testowy GUI", 300, 200) GUISetState() $xcol = 15 $wincol = _WinAPI_GetSysColor($xcol) ;odczyt koloru _WinAPI_SetSysColors($xcol, 0xff) ;ustawienie nowego koloru MsgBox(0, "Test", "Pierwotny kolor: " & Hex($wincol) & @LF & _ "Nowy kolor : " & Hex(_WinAPI_GetSysColor($xcol))) _WinAPI_SetSysColors($xcol, $wincol) ;odtworzenie pierwotnego koloru </syntaxhighlight> ===_WinAPI_SetDefaultPrinter=== #Include <WinAPI.au3> _WinAPI_SetDefaultPrinter ($Sprinter) Funkcja ustawia domyślną drukarkę dla bieżącego użytkownika na komputerze lokalnym. Zwraca True gdy sukces, lub False gdy wystąpił błąd. '''$Sprinter''' - domyślna nazwa drukarki. Do zdalnego wydruku nazwa ma postać: "\\server\NazwaDrukarki", dla drukarki lokalnej: "NazwaDrukarki". Jeśli tym parametrem jest "" (pusty string), to funkcja nie robi nic, o ile drukarka domyślna jest już zdefiniowana. Jednakże, jeśli domyślna drukarka nie jest dostępna, to funkcja sprawia, że ​​pierwsza na liście drukarek będzie ustawiona jako domyślna (o ile jest jakaś drukarka na liście). ==Haki== Hak (ang. hook) - mechanizm pozwalający na przechwytywanie określonych wiadomości systemowych zanim dotrą do docelowej aplikacji. Wyróżniamy dwa typy haków: - lokalne (thread hooks) – pozwalają przechwytywać wiadomości skierowane do określonego wątku, - globalne (system-wide hooks) – pozwalają przechwytywać wszystkie wiadomości danego typu wysyłane przez system. Haki można podpiąć do wielu wiadomości systemowych. Podczas wystąpienia którejś z nich (np. wciśnięcie klawisza, tworzenie okna...) Windows sprawdza czy istnieją zarejestrowane dla niej haki. Jeżeli tak – normalne operacje związane z wykonaniem zadania zostają zawieszone i kontrolę nad zdarzeniem przejmuje funkcja haka. Do niej należy przekazanie sterowania do kolejnych haków oraz poprawne przetworzenia wiadomości. W przypadku zarejestrowania więcej niż jednego haka dla danego zdarzenia zostaje budowany tzw. łańcuch haków („hook chain”). Jest to struktura typu LIFO - funkcja zarejestrowana najpóźniej otrzymuje możliwość działania jako pierwsza. Co z tego wynika? Hak zainstalowany jako ostatni może skutecznie ograniczyć wcześniejszym dostęp do informacji. System operacyjny odzyskuje kontrolę po zakończeniu działania wszystkich haków. Haki mają wiele zastosowań. Programy antywirusowe mogą instalować swoje haki aby przechwytywać otrzymywane/wysyłane e-maile i sprawdzać ich bezpieczeństwo. Keyloggery gromadzą wciśnięcia wszystkich klawiszy. Nic nie stoi na przeszkodzie, aby nasz system wzbogadcić o obsługę gestów myszki. Dodanie specyficznych skrótów klawiszowych także nie będzie problemem. Haki umożliwiają też badanie aktywności użytkownika poprzez nasłuchiwanie aktywności klawiatury i myszki. Oprócz tego mogą być przydatne przy debugowaniu aplikacji – dają bezpośredni dostęp do komunikatów systemu dla danego programu. Procedury dla haków globalnych muszą obowiązkowo znajdować się w bibliotece DLL. ===_WinAPI_SetWindowsHookEx=== #include <WinAPI.au3> _WinAPI_SetWindowsHookEx ( $iHook, $pProc, $hDll [, $iThreadId = 0] ) Funkcja zakłada hak na początku łańcucha i zwraca uchwyt do niego. Jeżeli wystąpił błąd zwracane jest 0, a informację o błędzie można odczytać za pomocą funkcji _WinAPI_GetLastError(). _SetWindowsHookEx powinniśmy wywołać tam, gdzie wykonujemy inicjalizację naszej aplikacji - np. po stworzeniu głównego okna. '''$iHook''' - Określa typ procedury haka do zainstalowania: $WH_CALLWNDPROC oraz $WH_CALLWNDPROCRET - pozwalają monitorować komunikaty przeznaczone dla konkretnej procedury okna. $WH_CALLWNDPROC przechwytuje komunikat przed jego dotarciem do procedury okna, $WH_CALLWNDPROCRET - po. $WH_CBT - nazwa pochodzi od computer-based training (CBT), czyli komputerowej edukacji, dla którego to rodzaju aplikacji przede wszystkim powstał ten hak. Pozwala przechwytywać komunikaty przed utworzeniem, zniszczeniem, minimalizacją, maksymalizacją, przeniesieniem, zmianą rozmiaru okna, przed wykonaniem polecenia systemowego, przed zdjęciem komunikatu myszy lub klawiatury z kolejki komunikatów, przed ustawieniem fokusa oraz przed synchronizacją kolejki komunikatów. Dzięki temu możemy określić, czy nasza aplikacja "pozwala" na te operacje czy też nie. Teraz już co niektórzy mogą kojarzyć - tak, wszelkiego rodzaju komputerowe testy, quizy i programy egzaminacyjne korzystają z tego, by zablokować biednym studentom dostęp do pomocy naukowych. $WH_DEBUG - ten hak wywoływany jest zawsze przed wszystkimi innymi hakami, więc można go użyć do "odpluskwiania" innych haków. $WH_FOREGROUNDIDLE - hak pozwalający nam wykonywać różne zadania w tle, gdy system wykryje, że pierwszoplanowy wątek nic w danej chwili nie robi. $WH_GETMESSAGE - pozwala przechwycić komunikat, który właśnie ma być zwrócony przez GetMessage lub PeekMessage (w przeciwieństwie do $WH_CALLWNDPROC, który przechwytuje komunikat już po wywołaniu DispatchMessage). To jest właśnie najbardziej zalecany hak do przechwytywania komunikatów związanych z myszą i klawiaturą. $WH_JOURNALPLAYBACK - ciekawy hak, który umożliwia odtworzenie "nagranych" wcześniej zdarzeń wejściowych (np. ruchu myszy). Jest to hak globalny, dotyczący wszystkich wątków w systemie. $WH_JOURNALRECORD - "nagrywa" zdarzenia do późniejszego wykorzystania przez $WH_JOURNALPLAYBACK, oczywiście to również jest hak globalny. $WH_KEYBOARD_LL - przechwytuje niskopoziomowe (low-level) zdarzenia, wywołane przez klawiaturę. $WH_KEYBOARD - przechwytuje wysokopoziomowe zdarzenia klawiatury (jest to więc wyspecjalizowany wariant haka $WH_GETMESSAGE). $WH_MOUSE_LL - przechwytuje niskopoziomowe zdarzenia myszy. $WH_MOUSE - przechwytuje wysokopoziomowe zdarzenia myszy (kolejna wyspecjalizowana wersja $WH_GETMESSAGE). $WH_MSGFILTER oraz $WH_SYSMSGFILTER - dzięki tym hakom możemy monitorować komunikaty pochodzące z menu, pasków przewijania, message box'ów oraz okien dialogowych. Możemy też wykrywać aktywację okna przy pomocy Alt+Tab lub Alt+Esc. Normalnie nie możemy tego wszystkiego zrobić, gdy wykonywana jest jakakolwiek pętla modalna np. wewnętrzna pętla message box'a). $WH_SYSMSGFILTER ma działanie globalne, zaś $WH_MSGFILTER dotyczy jedynie aplikacji, która zainstalowała hak. $WH_SHELL - został stworzony po to, byśmy w aplikacji shell'owej mogli otrzymywać istotne powiadomienia systemowe. Domyślnie jest to aktywacja aplikacji shell'owej oraz utworzenie/zniszczenie jej głównego okna. '''$pProc''' - wskaznik do procedury haka. Jeśli parametr $iThreadId wynosi zero lub określa identyfikator wątku utworzone przez inny proces, parametr $pProc musi wskazywać procedury haka w DLL. '''$hDll''' - uchwyt do biblioteki DLL zawierającej procedurę haka wskazywana przez parametr $pProc. Dla lokalnych haków należy podać wartość NULL. '''$iThreadId''' - określa identyfikator wątku, z którym procedura haka ma być związana. Jeśli parametr ten ma wartość zero, procedura haka jest związany z wszystkimi istniejącymi wątkami działającymi na tym samym pulpicie co wątek wywołujący. '''UWAGA:''' Ponieważ funkcje haków globalnych muszą znajdować się w bibliotece DLL, za pomocą sanego AutoIt'a nie można założyć haków tego rodzaju (AutoIt nie umożliwia tworzenia plików DLL). Można natomiast zakładać haki globalne z wykorzystaniem plików DLL utworzonych za pomocą innych języków programowania. ===_WinAPI_UnhookWindowsHookEx=== #include <WinAPI.au3> _WinAPI_UnhookWindowsHookEx ( $hHook ) Funkcja usuwa haka zainstalowanego w łańcuchu haków za pomocą funkcji WinAPI_SetWindowsHookEx. Zwraca TRUE gdy sukces, lub FALSE gdy wystąpił błąd. '''$hHook''' - uchwyt do usuwanego haka ===_WinAPI_CallNextHookEx=== #include <WinAPI.au3> _WinAPI_CallNextHookEx ( $hHook, $iCode, $wParam, $lParam ) Funkcja przekazuje sterowanie do procedury następnego haka w łańcuchu haków. '''$hHook''' - ten parametr jest ignorowany '''$iCode''' - '''$wParam''' - '''$lParam''' - Przykład założenia łańcucha haków na klawiaturę: <syntaxhighlight lang="autoit"> #include <StructureConstants.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> OnAutoItExitRegister("Cleanup") ;rejestracja funkcji wywoływanej przy zakończeniu skryptu Global $hHook1, $hKeyProc1, $hHook2, $hKeyProc2, $sLog $hKeyProc1 = DllCallbackRegister("_KeyProc1", "long", "int;wparam;lparam") ;rejestracja funkcji callback pierwszego haka $hHook1 = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hKeyProc1), Null) ;założenie pierwszego haka $hKeyProc2 = DllCallbackRegister("_KeyProc2", "long", "int;wparam;lparam") ;rejestracja funkcji callback drugiego haka $hHook2 = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hKeyProc2), Null) ;założenie drugiego haka ;pętla główna skryptu While 1 Sleep(10) WEnd #Region Definicje funkcji ;funkcja callback dla pierwszego haka Func _KeyProc1($nCode, $wParam, $lParam) Local $tKEYHOOKS $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam) If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook1, $nCode, $wParam, $lParam) ;wywołanie kolejnego haka EndIf If $wParam = $WM_KEYDOWN Then Modified_action_key1($tKEYHOOKS.vkCode) EndIf Return _WinAPI_CallNextHookEx($hHook1, $nCode, $wParam, $lParam) ;wywołanie kolejnego haka EndFunc ;funkcja callback dla drugiego haka Func _KeyProc2($nCode, $wParam, $lParam) Local $tKEYHOOKS $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam) If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook2, $nCode, $wParam, $lParam) ;;wywołanie kolejnego haka EndIf If $wParam = $WM_KEYDOWN Then Modified_action_key2($tKEYHOOKS.vkCode) EndIf Return _WinAPI_CallNextHookEx($hHook2, $nCode, $wParam, $lParam) ;wywołanie kolejnego haka EndFunc ;funkcja obsługi klawiatury przez pierwszego haka Func Modified_action_key1($iKeyCode) If $iKeyCode = 27 Then Exit ;zakończenie skryptu If $iKeyCode = 49 Then Beep(262, 200) ;klawisze 1 do 8 grają gamę If $iKeyCode = 50 Then Beep(294, 200) If $iKeyCode = 51 Then Beep(330, 200) If $iKeyCode = 52 Then Beep(349, 200) If $iKeyCode = 53 Then Beep(392, 200) If $iKeyCode = 54 Then Beep(440, 200) If $iKeyCode = 55 Then Beep(494, 200) If $iKeyCode = 56 Then Beep(523, 200) If $iKeyCode = 65 Then ToolTip ("AutoIt to jest to!", 500, 200) ;klawisz A $sLog &= Chr($iKeyCode) ;log klawiatury EndFunc ;funkcja obsługi klawiatury przez drugiego haka Func Modified_action_key2($iKeyCode) If $iKeyCode = 66 Then ToolTip ("AutoIt to jest lipa!", 500, 250) ;klawisz B EndFunc ;funkcja kończąca skrypt po wciśnięciu ESC ;zwalnia zasoby i wyświetla historię użycia klawiatury (prymitywny keylogger) Func Cleanup() _WinAPI_UnhookWindowsHookEx($hHook1) ;usunięcie pierwszego haka _WinAPI_UnhookWindowsHookEx($hHook2) ;usunięcie drugiego haka DllCallbackFree($hKeyProc1) ;wyrejestrowanie funkcji callback pierwszego haka DllCallbackFree($hKeyProc2) ;wyrejestrowanie funkcji callback drugiego haka MsgBox(64, 'Log klawiatury:', $sLog) ;wyświetlenie loga EndFunc #EndRegion Koniec definicji funkcji </syntaxhighlight> ==Arytmetyka bitowa== ===_WinAPI_HiWord=== #include <WinAPI.au3> _WinAPI_HiWord($iLong) Funkcja zwraca starsze słowo (2-bajtowe) z podwójnego słowa (4-bajtowego). '''$iLong''' - podwójnego słowa (4-bajtowe) ===_WinAPI_LoWord=== #include <WinAPI.au3> _WinAPI_LoWord($iLong) Funkcja zwraca młodsze słowo (2-bajtowe) z podwójnego słowa (4-bajtowego). '''$iLong''' - podwójnego słowa (4-bajtowe) Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $iWord = 0xAAFFFF MsgBox(0, $iWord, "Starsze słowo: " & Hex(_WinAPI_HiWord($iWord)) & @CRLF & _ "Młodsze słowo: " & Hex(_WinAPI_LoWord($iWord))) </syntaxhighlight> ===_WinAPI_FloatToInt=== #include <WinAPI.au3> _WinAPI_FloatToInt($nFloat) Funkcja zamienia liczbę zmiennoprzecinkową (typ Float) na odpowiadającą jej 4-bajtową liczbę całkowitą (typ Integer). '''$nFloat''' - liczba zmiennoprzecinkowa Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $float = 10.55 $INT = _WinAPI_FloatToInt($float) $text = "Liczba zmiennoprzecinkowa " & $float & " przkonwertowano na liczbę całkowitą " & $INT & " (Hex = " & Hex($INT) & ")" MsgBox(4096, "_WinAPI_FloatToInt", $text) </syntaxhighlight> ===_WinAPI_IntToFloat=== #include <WinAPI.au3> _WinAPI_IntToFloat($iInt) Funkcja zamienia 4-bajtową liczbę całkowitą (typ Integer) na odpowiadającą jej liczbę zmiennoprzecinkową (typ Float). Jeżeli wystąpi błąd zwracany jest string "-1.#QNAN". '''$nFloat''' - 4-bajtowa liczba całkowita '''UWAGA:''' Funkcja nie zmienia typu liczby (jak np. funkcja Int()), lecz sposób interpretacji bitowego zapisu liczby w pamięci komputera. Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0, "", _WinAPI_IntToFloat(1000000)) </syntaxhighlight> ===_WinAPI_MakeLong=== #include <WinAPI.au3> _WinAPI_MakeLong($iLo, $iHi) Funkcja łączy dwa 2-bajtowe słowa w 4-bajtowe podwójne słowo. '''$iLo''' - 2-bajtowe młodsze słowo '''$iHi''' - 2-bajtowe starsze słowo Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $iWord = _WinAPI_MakeLong(0xaa, 0xbb) MsgBox(4096, "_WinAPI_MakeLong", Hex($iWord)) </syntaxhighlight> ===_WinAPI_MakeQWord=== #include <WinAPI.au3> _WinAPI_MakeQWord($LoDWORD, $HiDWORD) Funkcja łączy dwa 4-bajtowe podwójne słowa w 8-bajtowe poczwórne słowo (Int64). '''$LoDWORD''' - 4-bajtowe młodsze słowo '''$HiDWORD''' - 4-bajtowe starsze słowo Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> $iWord = _WinAPI_MakeQWord(0xaa, 0xbb) MsgBox(4096, "_WinAPI_MakeQWord", Hex($iWord)) </syntaxhighlight> ===_WinAPI_MulDiv=== #include <WinAPI.au3> _WinAPI_MulDiv($iNumber, $iNumerator, $iDenominator) Funkcja mnoży dwie 32-bitowe liczby i dzieli 64-bitowy wynik przez trzecią 32-bitową liczbę. Zwraca wynik, lub -1 gdy wystąpił błąd. Jeśli wynik nie jest liczbą całkowitą, jest zaokrąglany zgodnie z ogólnymi zasadami. '''$iNumber i $iNumerator''' - dwie mnożone liczby '''$iDenominator''' - liczba przez którą dzielimy Przykład: <syntaxhighlight lang="autoit"> #include <WinAPI.au3> MsgBox(0, '_WinAPI_MulDiv', _WinAPI_MulDiv(3, 8, 6) & ' = ' & 3 * 8 / 6) </syntaxhighlight> f40sqilyz487h13e46ybo2hkr5jqthd Moduł:Parametry 828 45669 558488 555703 2026-10-04T07:17:49Z Persino 2851 558488 Scribunto text/plain local p={}; p["LiczbaElementówNumerowanychTablicy"]=function(tabela, niepuste_wliczac,mnoga) local liczba_elementow_ponumerowanych_w_tablicy=0; local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local czy_mnoga=p.CzyTak(mnoga); for _1,_2 in ipairs(tabela)do if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then liczba_elementow_ponumerowanych_w_tablicy=liczba_elementow_ponumerowanych_w_tablicy+1; if((czy_mnoga)and(liczba_elementow_ponumerowanych_w_tablicy>1))then return liczba_elementow_ponumerowanych_w_tablicy;end; end; end; return liczba_elementow_ponumerowanych_w_tablicy; end; p["LiczbaElementówNumerowanychSzablonu"]=function(frame) local parametry_modul=require("Module:Parametry"); return parametry_modul["LiczbaElementówNumerowanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"]); end; p["LiczbaElementówNienazwanychTablicy"] = function(tabela,niepuste_wliczac,mnoga) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local czy_mnoga=p.CzyTak(mnoga); local liczba_elementow_nienazwanych_w_tablicy=0; for _1,_2 in pairs(tabela)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then liczba_elementow_nienazwanych_w_tablicy=liczba_elementow_nienazwanych_w_tablicy+1; if((czy_mnoga)and(liczba_elementow_nienazwanych_w_tablicy>1))then return liczba_elementow_nienazwanych_w_tablicy;end; end; end; end; return liczba_elementow_nienazwanych_w_tablicy; end; p["LiczbaParametrówNienazwanychSzablonu"] = function (frame) return p["LiczbaElementówNienazwanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"]) end; p["LiczbaElementówTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local liczba_elementow_w_tablicy=0; for _1,_2 in pairs(tabela)do if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1; end; end; return liczba_elementow_w_tablicy; end; p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,niepuste_wliczac,czy_formy_numerkowe) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local liczba_elementow_w_tablicy=0; local techniczne_modul=require("Module:Techniczne"); local wzor="^"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](przedrostek).."(%d+)$"; for _1,_2 in pairs(tabela)do local string_liczba=tonumber(_1) or nil; local czy_liczba=((string_liczba)and(czy_formy_numerkowe or p.TypeNumber(_1))and(string_liczba>0)); local zmienna=czy_liczba and przedrostek.._1 or nil; local element=(czy_liczba and tabela[zmienna] or nil) or (czy_liczba and tabela[_1] or (mw.ustring.match(tostring(_1),wzor) and tabela[_1] or nil) ); if(element)then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(element~="")))then liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1; end; end; end; return liczba_elementow_w_tablicy; end; function p.MaksymalnaLiczbaParametruNienazwanegoSzablonu(frame) return p.MaksymalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]); end; function p.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela, niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local liczba_elementow_ponumerowanych_w_tablicy=0; for _1,_2 in pairs(tabela)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then liczba_elementow_ponumerowanych_w_tablicy=math.max(liczba_elementow_ponumerowanych_w_tablicy,_1); end; end; end; return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 0; end; function p.MinimalnaLiczbaParametruNienazwanegoSzablonu(frame) return p.MinimalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]); end; function p.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local liczba_elementow_ponumerowanych_w_tablicy; for _1,_2 in pairs(tabela)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then if(not liczba_elementow_ponumerowanych_w_tablicy)then liczba_elementow_ponumerowanych_w_tablicy=_1; else liczba_elementow_ponumerowanych_w_tablicy=math.min(liczba_elementow_ponumerowanych_w_tablicy,_1); end; end; end; end; return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 1; end; function p.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(tabela,podstawa_parametru, czy_od_zera) local liczba_maksimum=0; local liczba_minimum; for nazwa_parametru,wartosc_parametru in pairs(tabela)do local liczba_z_parametru=mw.ustring.match(nazwa_parametru,"^"..podstawa_parametru.."%s(%d+)$") if(liczba_z_parametru)then local liczba=tonumber(liczba_z_parametru) or (czy_od_zera and 0 or 1); liczba=(liczba>0)and liczba or (czy_od_zera and 0 or 1); liczba_maksimum=math.max(liczba_maksimum,liczba); if(not liczba_minimum)then liczba_minimum=liczba; else liczba_minimum=math.min(liczba_minimum,liczba); end; elseif(podstawa_parametru==nazwa_parametru)then liczba_maksimum=math.max(liczba_maksimum,(czy_od_zera and 0 or 1)); if(not liczba_minimum)then liczba_minimum=czy_od_zera and 0 or 1; else liczba_minimum=math.min(liczba_minimum,czy_od_zera and 0 or 1); end; end; end; if(not liczba_minimum)then liczba_minimum=1;end; return liczba_minimum,liczba_maksimum; end; p["CzySąParametryNumerowaneSzablonu"] = function(frame) local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNumerowaneTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_sa_elementy_tablicy)then return "tak";end; return; end; p["CzySąElementyNumerowaneTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); for _1,_2 in ipairs(tabela)do if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then return true; end; end; return false; end; p["CzySąParametryNienazwaneSzablonu"] = function(frame) local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNienazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_sa_elementy_tablicy)then return "tak";end; return; end; p["CzySąElementyNienazwaneTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); for _1,_2 in pairs(tabela)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then return true; end; end; end; return false; end; p["CzySąParametryNazwaneSzablonu"] = function(frame) local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_sa_elementy_tablicy)then return "tak";end; return; end; p["CzySąElementyNazwaneTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); for _1,_2 in pairs(tabela)do if(type(_1)~="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then return true; end; end; end; return false; end; p["CzySąParametrySzablonu"] = function(frame) local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_sa_elementy_tablicy)then return "tak";end; return; end; p["CzySąElementyTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); for _1,_2 in pairs(tabela)do if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then return true; end; end; return false; end; p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame) local parametry_modul=require("Module:Parametry"); local czy_jest_taki_element=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_jest_taki_element)then return "tak";end; end; p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local i=1; local czy=false; for _1,_2 in pairs(args)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then if(_1==1)then czy=true;end; if(i>1)then return false; else i=i+1; end; end; end; end; if((czy)or(i==1))then return true;end; return false; end; p["KopiujTabelęŁańcuchów"]=function(args) local args2={}; local wzor_temp=args["wzór"];local wzor_wszystko=args["wzór wszystko"]; local podstawienie_temp=args.podstawienie;local podstawienie_wszystko=args["podstawienie wszystko"]; local wzor2_temp=args["wzór 2"];local wzor_wszystko_2=args["wzór wszystko 2"]; local przedrostek_temp=args.przedrostek;local przedrostek_wszystko=args["przedrostek wszystko"]; local przyrostek_temp=args.przyrostek;local przyrostek_wszystko=args["przyrostek wszystko"]; for name,value in pairs(args.tabela)do local wzor=wzor_temp and wzor_temp[name] or wzor_wszystko; local podstawienie=wzor and (podstawienie_temp and podstawienie_temp[name] or podstawienie_wszystko) or nil; if(wzor and podstawienie)then value=mw.ustring.gsub(value,wzor,podstawienie);end; local wzor2=wzor2_temp and wzor2_temp[name] or wzor_wszystko_2; if(wzor2)then value=mw.ustring.match(value,wzor2);end; if(value)then local przedrostek=przedrostek_temp and przedrostek_temp[name] or przedrostek_wszystko; local przyrostek=przyrostek_temp and przyrostek_temp[name] or przyrostek_wszystko; args2[name]=(przedrostek or '')..value..(przyrostek or ''); end; end; return args2; end; p["KopiujTabelęElementów"]=function(tabelka,niepuste_wliczac_nazwy,niepuste_wliczac_wartosci) local czy_tylko_niepuste_wliczac_nazwy=p.CzyTak(niepuste_wliczac_nazwy); local czy_tylko_niepuste_wliczac_wartosci=p.CzyTak(niepuste_wliczac_wartosci); local tabelka2={}; for name,value in pairs(tabelka)do if(((not czy_tylko_niepuste_wliczac_nazwy)or((czy_tylko_niepuste_wliczac_nazwy)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_wartosci)or((czy_tylko_niepuste_wliczac_wartosci)and(p.CzyTak(value)))))then tabelka2[name]=value; end; end; return tabelka2; end; p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,niepuste_wliczac_nazwy,niepuste_wliczac_wartosci) local czy_tylko_niepuste_wliczac_nazwy=p.CzyTak(niepuste_wliczac_nazwy); local czy_tylko_niepuste_wliczac_wartosci=p.CzyTak(niepuste_wliczac_wartosci); local tabelka3={}; for name,value in pairs(tabelka)do if(((not czy_tylko_niepuste_wliczac_nazwy)or((czy_tylko_niepuste_wliczac_nazwy)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_wartosci)or((czy_tylko_niepuste_wliczac_wartosci)and(p.CzyTak(value)))))then local czy=p.CzyJestTakiKluczTabeli(tabelka2,name); if(not czy)then tabelka3[name]=value; end; end; end; return tabelka3; end; p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,niepuste_wliczac_nazwy,niepuste_wliczac_wartosci,__funkcja) local czy_tylko_niepuste_wliczac_nazwy=p.CzyTak(niepuste_wliczac_nazwy); local czy_tylko_niepuste_wliczac_wartosci=p.CzyTak(niepuste_wliczac_wartosci); local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local szablonowe_modul=require("Module:Szablonowe"); local kopiuj_metatable=function(value,funkcja,funkcja2) local __metatabelka=getmetatable(value); if(__metatabelka)then if(__metatabelka.KopiujMetaTabela)then __metatabelka.KopiujMetaTabela(value,funkcja,funkcja2) else funkcja(value,true); end; else funkcja(value,true); end; end; local function kopiuj(tabelka,tabelka_nowa) local tabelka2=tabelka_nowa or {}; for name,value in pairs(tabelka)do if(((not czy_tylko_niepuste_wliczac_nazwy)or((czy_tylko_niepuste_wliczac_nazwy)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_wartosci)or((czy_tylko_niepuste_wliczac_wartosci)and(p.CzyTak(value)))))then if(type(value)=="table")then kopiuj_metatable(value,function(value,jak) value=__funkcja and __funkcja(value,type(value),jak) or value; if(jak)then tabelka2[name]=kopiuj(value); else tabelka2[name]=value; end; end,kopiuj); else value=__funkcja and __funkcja(value,type(value)) or value; tabelka2[name]=value; end; end; end; return tabelka2; end; local tabela_kopiuj={}; kopiuj_metatable(tabelka,function(value,jak) if(jak)then tabela_kopiuj=kopiuj(value); else tabela_kopiuj=value; end; end,kopiuj); return tabela_kopiuj; end; p["NazwanyLiczbą"] = function(frame) local pf=frame:getParent() local numer_parametru=frame.args[1] if(numer_parametru)then numer_parametru=tonumber(numer_parametru); if(numer_parametru and pf.args[numer_parametru])then return "tak" end end; return; end p["NazwanyCiągiem"] = function (frame) local pf=frame:getParent() local klucz_parametru=frame.args[1] if(klucz_parametru)then local klucz_parametru_do_liczby=tonumber(klucz_parametru); if((not klucz_parametru_do_liczby)and(pf.args[klucz_parametru]))then return "tak" end end; return; end; function p.Nazwane(frame) local pf = frame:getParent() for _, nazwa_parametru in ipairs(frame.args)do local wartosc_parametru_nazwanego=pf.args[mw.text.trim(nazwa_parametru)] if(wartosc_parametru_nazwanego)then return "tak" end end return; end function p.Nienazwane(frame) local pf = frame:getParent() for _, wartosc_parametru in ipairs(frame.args)do wartosc_parametru=mw.text.trim(wartosc_parametru) for name, wartosc_parametru2 in pairs(pf.args) do if(type(name)=="number")then if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then return "tak" end end; end end return; end function p.Numerowane(frame) local pf = frame:getParent() for _, wartosc_parametru in ipairs(frame.args)do wartosc_parametru=mw.text.trim(wartosc_parametru) for _, wartosc_parametru2 in ipairs(pf.args) do if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then return "tak" end end end return; end p["Odstępy"] = function(frame) local PobierzParametr=p.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local czy=PobierzParametr(2) or PobierzParametr("wewnątrz"); local dolny_myslnik=PobierzParametr(3) or PobierzParametr("dolny-myślnik"); local odstep_spacje=PobierzParametr(4) or PobierzParametr("spacje"); if(not p.CzyTak(nazwa))then return nazwa;end; local m_=(p.CzyTak(odstep_spacje) and "" or "_"); nazwa=mw.ustring.gsub(nazwa,"^[%s"..m_.."]+",""); nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+$","") if(p.CzyTak(czy))then nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+",(p.CzyTak(dolny_myslnik) and "_" or " ")); end; return nazwa; end; function p.DodajElementDoZbioru(tabela,wartosc) if(wartosc==nil)then return; end; if(type(tabela)~="table")then return;end; for _,element_tabeli in pairs(tabela)do if(element_tabeli==wartosc)then return false; end; end; table.insert(tabela,wartosc); return true; end; function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc) if(wartosc==nil)then return;end; if(type(tabela)~="table")then return;end; for _, element_tabeli in ipairs(tabela)do if(element_tabeli==wartosc)then return true; end; end; return false; end; function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc) if(wartosc==nil)then return;end; if(type(tabela)~="table")then return;end; for name,value in pairs(tabela)do if(type(name)=="number")then if(value==wartosc)then return true; end; end; end; return false; end; function p.CzyJestTakiKluczTabeli(tabela,klucz) if(klucz==nil)then return;end; if(type(tabela)~="table")then return;end; local wartosc=tabela[klucz]; if(wartosc~=nil)then return true;end; return false; end; function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc) if((klucz==nil)or(wartosc==nil))then return;end; if(type(tabela)~="table")then return;end; for __klucz, __wartosc in pairs(tabela)do if((__klucz==klucz)and(__wartosc==wartosc))then return true; end; end; return false; end; p["ŁączDwieTabele"] = function (tabelka1,tabelka2) local parametry_modul=require("Module:Parametry"); return (tabelka2 and parametry_modul["CzySąElementyTablicy"](tabelka2)) and ((tabelka1 and parametry_modul["CzySąElementyTablicy"](tabelka1)) and parametry_modul["ŁączNumerowaneTabele"]{[1]=tabelka1,[2]=tabelka2,} or tabelka2) or tabelka1; end; p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabelka1,tabelka2) local parametry_modul=require("Module:Parametry"); return (tabelka1 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2; end; p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabelka1,tabelka2) local parametry_modul=require("Module:Parametry"); return (tabelka1 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2; end; p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabelka1,tabelka2) local parametry_modul=require("Module:Parametry"); return (tabelka1 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2; end; 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; 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; 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; 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; 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; 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; 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; 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; p["ŁączTabele"] = function(args,args2) local tabela={}; local par1=(args2.CzyPairsTablic)and pairs or ipairs; local czy_number_nie_tylko_tablic=(not args2.CzyPairsTablic)and true or false; local par2=(args2["CzyPairsElementówTablic"])and pairs or ipairs; local czy_number_nie_tylko_elementow_tablic=(not args2["CzyPairsElementówTablic"])and true or false; local czy_nazwane=(args2.CzyNazwaneElementyTabel)and true or false; local czy_nie_tylko_nazwane=(not args2.CzyTylkoNazwaneElementyTabel)and true or false; local nazwij_elementy_numerowane=(args2.NazwijElementyNumerowane) and true or false; for licznik, args_tabeli in par1(args)do if(((czy_number_nie_tylko_tablic)or(type(licznik)=="number"))and(type(args_tabeli)=="table"))then for name,value in par2(args_tabeli)do if((czy_nie_tylko_nazwane)and((czy_number_nie_tylko_elementow_tablic)or(type(name)=="number")))then if(nazwij_elementy_numerowane)then if(not tabela[name])then tabela[name]=value;end; else table.insert(tabela,value); end; elseif((czy_nazwane)and(czy_nie_tylko_nazwane or ((not czy_nie_tylko_nazwane)and(type(name)~="number"))))then if(not tabela[name])then tabela[name]=value;end; end; end; end; end; return tabela; end; p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2) if(not tabelka_1)then return nil;end; if(not tabelka_2)then return tabelka_1;end; for name,_ in pairs(tabelka_1)do if(tabelka_2[name]~=nil)then tabelka_1[name]=nil; end; end; return tabelka_1; end; p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args) local tabela_poczatkowa=args[1]; local tabela={}; local lens=#args; for name,value in pairs(tabela_poczatkowa)do local yes=false; for i=2,lens,1 do if(args[i][name]~=nil)then yes=true; break; end; end; if(not yes)then tabela[name]=value; end; end; return tabela; end; function p.TypeTable(zmienna) return (type(zmienna)=="table"); end; function p.TypeFunction(zmienna) return (type(zmienna)=="function"); end; function p.TypeString(zmienna) return (type(zmienna)=="string"); end; function p.TypeBoolean(zmienna) return (type(zmienna)=="boolean"); end; function p.TypeNumber(zmienna) return (type(zmienna)=="number"); end; function p.TypeNil(zmienna) return (zmienna==nil); end; local function CzyTakSilnik(args,funkcja) local parametry_modul=require("Module:Parametry"); local parametr=p.CzyTak(args[2]) and require("Module:"..args[2])[args[1]] or args[1]; local argsfun; if(p.CzyTak(args[2]))then for name,value in pairs(args)do local typen=(type(name)=="number"); if(((typen)and((name~=1)and(name~=2)))or(not typen))then if(not argsfun)then argsfun={};end; argsfun[(typen and name>2) and (name-2) or name]=value; end; end; else parametr=tonumber(parametr) or parametr; if(type(parametr)=="string")then local parametr2=parametry_modul["Odstępy"](parametr); if(parametr2=="true")then parametr=true; elseif(parametr2=="false")then parametr=false; elseif(parametr2=="nil")then parametr=nil; else parametr=tonumber(parametr2) or parametr; end; end; end; return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; end; p["CzyTakCiąg"]=function(...) local frame_parametry={...}; local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1]; local czy_table=p.TypeTable(frame); if((czy_table and (not frame.getParent)) or (not czy_table))then local PobierzParametr=p.PobierzParametr(frame); local ciag=PobierzParametr("ciąg") or PobierzParametr(1); local parametry=PobierzParametr("parametry") or PobierzParametr(2); local parametry_modul=require("Module:Parametry"); return ciag and p.CzyTak{[1]=(p.TypeString(ciag) and parametry_modul["Odstępy"]{[1]=ciag,[2]="tak",} or ciag),[2]=parametry,} or false; else local args=p.PobierzArgsParametry(frame); return CzyTakSilnik(args,"CzyTakCiąg"); end; end; function p.CzyTak(...) local frame_parametry={...}; local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1]; local czy_table=p.TypeTable(frame); if((czy_table and (not frame.getParent)) or (not czy_table))then local PobierzParametr=p.PobierzParametr(frame); local zmienna;local parametry; if(czy_table)then local zmienna_temp=PobierzParametr("zmienna") or PobierzParametr(1); zmienna=zmienna_temp or frame; parametry=zmienna_temp and (PobierzParametr("parametry") or PobierzParametr(2)) or nil; else zmienna=frame; parametry=nil; end; if(zmienna~=nil)then if(p.TypeString(zmienna))then if(zmienna~="")then return "tak"; else return nil; end; elseif(p.TypeNumber(zmienna))then if(zmienna~=0)then return "tak"; else return nil; end; elseif(p.TypeBoolean(zmienna))then return (zmienna and "tak" or nil); elseif(p.TypeTable(zmienna))then local parametry_modul=require("Module:Parametry"); return (parametry_modul["CzySąElementyTablicy"](zmienna) and "tak" or nil); elseif(p.TypeFunction(zmienna))then return (zmienna(parametry) and "tak" or nil); else return nil; end; else return nil; end; else local args=p.PobierzArgsParametry(frame); return CzyTakSilnik(args,"CzyTak"); end; end; function p.PobierzFrameEwentualnieParent(frame) return (frame.getParent and (p.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame); end; function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica) local TempFunc=function(frame) local pf=p.PobierzFrameEwentualnieParent(frame); local args=pf.args; if(p.TypeTable(args))then return args; else return nil; end; end; if(not p.TypeNil(frame))then return p.TypeTable(frame) and (TempFunc(frame) or frame) or ((czy_nie_tablica_jako_tablica)and {frame,} or frame); else return {}; end; end; function p.PobierzParametryRamki(frame) local TempFun1=function(tablica) return function(nazwa) return tablica[nazwa]; end; end; local TempFun2=function(wartosc) local tak=true; return function(nazwa) if(tak)then tak=false; return wartosc; end; return nil; end; end; local tablica_parametrow_ramki=p.TypeTable(frame) and (p.TypeTable(frame.args) and TempFun1(frame.args) or TempFun1(frame)) or TempFun2(frame); return function(nazwa) return tablica_parametrow_ramki(nazwa); end; end; function p.PobierzElementNumerowanyZFrameLubTablicy(frame) local tablica_parametrow_funkcji=p.TypeTable(frame[1]) and p.TypeTable(frame[1].args)and frame[1].args or frame; return function(nazwa) local wartosc=tablica_parametrow_funkcji[nazwa]; return wartosc; end; end; function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) local __pobierz_parametr_table_args=nil; if(not p.TypeNil(frame))then if(p.TypeTable(frame))then local tak_frame_lub_parent=p.CzyTak(czy_frame_lub_parent); if((not tak_frame_lub_parent)or(not frame.getParent))then local __pobierz_parametr_table_args_temp=p.CzyTak(czy_frame) and frame.args or p.PobierzArgsParametry(frame); __pobierz_parametr_table_args=function(nazwa) return __pobierz_parametr_table_args_temp[nazwa or 1],1; end; elseif(tak_frame_lub_parent)then local pf=(frame.getParent)and frame:getParent() or nil; __pobierz_parametr_table_args=function(nazwa) local wartosc=frame.args[nazwa or 1] or (pf and pf.args[nazwa or 1] or nil); return wartosc,2; end; end; else local tak=true; __pobierz_parametr_table_args=function(nazwa) if(tak)then tak=false; return frame,0; end; return nil,0; end; end; else __pobierz_parametr_table_args=function(nazwa) return nil,0; end; end; return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; function p.And(frame) local czy="tak"; local parametry_modul=require("Module:Parametry"); local wartosc_uzyskana=nil; for _,wartosc in ipairs(frame.args)do czy=czy and parametry_modul["CzyTakCiąg"](wartosc); if(not czy)then return nil;end; wartosc_uzyskana=wartosc; end; return czy and wartosc_uzyskana or nil; end; function p.Or(frame) local czy=nil; for _,wartosc in ipairs(frame.args)do czy=czy or p["CzyTakCiąg"](wartosc); if(czy)then return wartosc;end; end; return nil; end; function p.Not(frame) local parametry_modul=require("Module:Parametry"); return (not parametry_modul["CzyTakCiąg"](frame.args[1]))and "tak" or nil; end; function p.Mniejszy(frame) local wyraz1=tonumber(frame.args[1]) or 0; local wyraz2=tonumber(frame.args[2]) or 0; if(wyraz1<wyraz2)then return "tak"; end; return; end; function p.IlePodano(frame) local args=frame.args; local args2=frame:getParent().args; local licznik=0; for _,name in pairs(args)do if(args2[name])then licznik=licznik+1; end; end; return licznik; end; p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter={}; function p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz) local html_modul=require("Module:Html"); klucz=html_modul.DecodeKoduHTMLZnaku(klucz); klucz=p["Odstępy"]{[1]=klucz,[2]="tak",}; klucz=mw.ustring.lower(klucz); return rawget(t,klucz); end; function p.IteratorPoNumerowanychElementachTablicy(t) local i=1; return function() local v=t[i]; if(v~=nil)then i=i+1;end; return v; end; end; p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=function(tabela,czy_number,funkcja) local keys={}; for name,_ in next,tabela do if((not czy_number)or((czy_number)and(p.TypeNumber(name))))then table.insert(keys,name); end; end; table.sort(keys, funkcja or ((czy_number) and function(a,b) return (a<b); end or nil ) ); return function(tablica,klucz) if(klucz==nil)then local klucz=keys[1]; return klucz,tablica[klucz]; end; for k,_ in ipairs(keys)do if(keys[k]==klucz)then local klucz=keys[k+1]; return klucz,tablica[klucz]; end; end; end; end; function p.Max(...) local frame={...}; local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame); local parametr1=tonumber(PobierzElement(1)); local parametr2=tonumber(PobierzElement(2)); return math.max(parametr1,parametr2); end; function p.Min(...) local frame={...}; local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame); local parametr1=tonumber(PobierzElement(1)); local parametr2=tonumber(PobierzElement(2)); return math.min(parametr1,parametr2); end; return p; mi0xsatc6h47xhr56u47voicpjdh36f Moduł:StronicowyParser/ZbieranieDanychStron 828 55009 558414 558410 2026-10-03T12:46:23Z Persino 2851 558414 Scribunto text/plain local p={}; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local korzystany_wolumin=false; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then korzystany_wolumin=true; if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; else korzystany_wolumin=true; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif(wartosc_wyniku==0)then if(tabela_artykul)then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; else return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif(wartosc_wyniku==0)then if(tabela_artykul)then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; else return wartosc_wyniku; end; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu;local aktualna_nazwa_modulu_szablonowa; if(nazwa_modulu_aktualna_czy_biezaca)then aktualna_nazwa_modulu=nazwa_modulu_aktualna_czy_biezaca; aktualna_nazwa_modulu_szablonowa=nazwa_modulu_aktualna_czy_biezaca_szablonowa; else aktualna_nazwa_modulu=nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); aktualna_nazwa_modulu_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](aktualna_nazwa_modulu); end; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu,aktualna_nazwa_modulu_szablonowa); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_zbieraniedanychstron_poprzebne_modul=require("Module:StronicowyParser/ZbieranieDanychStron/Potrzebne"); local tabela_elementow_strony_kodow={}; ---- -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); stronicowyparser_zbieraniedanychstron_poprzebne_modul.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then ---- local tekst_stare=tekst; --local tablica_analizy_obiektow_strony_dany_modul_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul); --local tablica_danych_parametrow_szablonu_strony_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony); local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); local tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare=stronicowyparser_szablonytekstu_modul["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"](szablon_kod,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local tabela_parametrow_szablonu_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabela_parametrow_szablonu); ---- local tekst_szablon=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablon_kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local czy_szablon_wszystko=false; tekst_stare=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_stare,nil,tablica_analizy_obiektow_strony_dany_modul_stare, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_stare,kod,nazwa_modulu, function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu_stare["nazwa jednostki"]=tabela_parametrow_szablonu_stare["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=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not czy_bez_preprocess))then local frame=mw.getCurrentFrame(); tekst_stare=frame:preprocess(tekst_stare); end; lista_dwuelementowa[2]=tekst_stare; --local __metatabelka=getmetatable(tabela_parametrow_szablonu_stare); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu_stare,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany); end; end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; return; elseif(stronicowyparser_obiekty_modul.szablony_spisu[nazwa_szablonu_wywolania])then local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; local czy_analiza=parametry_modul.CzyTak(tabela_parametrow_szablonu["analiza"]); local czy_parser=parametry_modul.CzyTak(tabela_parametrow_szablonu["parser"]); local czy_specjalne=parametry_modul.CzyTak(tabela_parametrow_szablonu["specjalne"]); local dokumentacja=tabela_parametrow_szablonu["dokumentacja"]; local czy_dokumentacja; if(not dokumentacja)then czy_dokumentacja=czy_analiza or czy_specjalne or czy_parser; else czy_dokumentacja=parametry_modul.CzyTak(dokumentacja); end; if( ((czy_dokumentacja)and(czy_parser)) or((not czy_dokumentacja)and(czy_analiza)) )then stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie); else stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) --local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); --tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst_rozwiniety_calego_artykulu,"",nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu); end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony; local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; end; else local niekorzystany_wolumin=(not korzystany_wolumin); if(niekorzystany_wolumin)then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,niekorzystany_wolumin,czy_artykul_korzystany,}; end; end; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona,czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; ko6qbob2t7n6o7ujrvslj1ng6u8dfcd 558444 558414 2026-10-03T17:40:06Z Persino 2851 558444 Scribunto text/plain local p={}; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local korzystany_wolumin=false; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then korzystany_wolumin=true; if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; else korzystany_wolumin=true; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif(wartosc_wyniku==0)then if(tabela_artykul)then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; else return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif(wartosc_wyniku==0)then if(tabela_artykul)then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; else return wartosc_wyniku; end; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu;local aktualna_nazwa_modulu_szablonowa; if(nazwa_modulu_aktualna_czy_biezaca)then aktualna_nazwa_modulu=nazwa_modulu_aktualna_czy_biezaca; aktualna_nazwa_modulu_szablonowa=nazwa_modulu_aktualna_czy_biezaca_szablonowa; else aktualna_nazwa_modulu=nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); aktualna_nazwa_modulu_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](aktualna_nazwa_modulu); end; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu,aktualna_nazwa_modulu_szablonowa); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_zbieraniedanychstron_poprzebne_modul=require("Module:StronicowyParser/ZbieranieDanychStron/Potrzebne"); local tabela_elementow_strony_kodow={}; ---- -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); stronicowyparser_zbieraniedanychstron_poprzebne_modul.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=stronicowyparser_zbieraniedanychstron_poprzebne_modul.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then ---- local tekst_stare=tekst; --local tablica_analizy_obiektow_strony_dany_modul_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul); --local tablica_danych_parametrow_szablonu_strony_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony); local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); local tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare=stronicowyparser_szablonytekstu_modul["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"](szablon_kod,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local tabela_parametrow_szablonu_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabela_parametrow_szablonu); ---- local tekst_szablon=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablon_kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local czy_szablon_wszystko=false; tekst_stare=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_stare,nil,tablica_analizy_obiektow_strony_dany_modul_stare, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_stare,kod,nazwa_modulu, function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu_stare["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu_stare["nazwa jednostki"]=tabela_parametrow_szablonu_stare["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=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu_stare,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu_stare,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu_stare,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not czy_bez_preprocess))then local frame=mw.getCurrentFrame(); tekst_stare=frame:preprocess(tekst_stare); end; lista_dwuelementowa[2]=tekst_stare; --local __metatabelka=getmetatable(tabela_parametrow_szablonu_stare); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu_stare,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany); end; end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; local korzystane=self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=korzystane; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; return; elseif(stronicowyparser_obiekty_modul.szablony_spisu[nazwa_szablonu_wywolania])then local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; local czy_analiza=parametry_modul.CzyTak(tabela_parametrow_szablonu["analiza"]); local czy_parser=parametry_modul.CzyTak(tabela_parametrow_szablonu["parser"]); local czy_specjalne=parametry_modul.CzyTak(tabela_parametrow_szablonu["specjalne"]); local dokumentacja=tabela_parametrow_szablonu["dokumentacja"]; local czy_dokumentacja; if(not dokumentacja)then czy_dokumentacja=czy_analiza or czy_specjalne or czy_parser; else czy_dokumentacja=parametry_modul.CzyTak(dokumentacja); end; if( ((czy_dokumentacja)and(czy_parser)) or((not czy_dokumentacja)and(czy_analiza)) )then stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie); else stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then stronicowyparser_zbieraniedanychstron_poprzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) --local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); --tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst_rozwiniety_calego_artykulu,"",nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu); end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony; local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; end; else local niekorzystany_wolumin=(not korzystany_wolumin); if(niekorzystany_wolumin)then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,niekorzystany_wolumin,czy_artykul_korzystany,}; end; end; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona,czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; fzbeqeqzjfzrm2ele5nqpz83ghh3npt Wolna przedsiębiorczość/Inflacja 0 57482 558412 541956 2026-10-03T12:15:44Z Marek Mazurkiewicz 8990 red 558412 wikitext text/x-wiki Z tego rozdziału dowiesz się: * czym jest zjawisko inflacji, * czym jest siła nabywcza pieniądza, * jak się liczy inflację, * jak na inflacji jedni zyskują, a inni tracą, * w jaki sposób inflacja zaburza funkcjonowanie rynku, * co powoduje inflację. Najważniejsze pojęcia: * inflacja, deflacja, siła nabywcza pieniądza == Inflacja i siła nabywcza pieniądza == Inflacja to w największym uproszczeniu trwały wzrost cen dóbr i usług. Możemy ją sobie wyobrazić jako opłatę, którą uiszczamy co pewien czas z pieniędzy z naszego portfela. Oto w 2015 roku wydaliśmy 100 złotych na pięćdziesiąt gałek lodów (gałka po 2 złote). Załóżmy teraz, że w 2016 roku jedna gałka zaczęła kosztować 2,5 złotego. Oznacza to, że za 100 złotych mogliśmy kupić już tylko 40 gałek, a nie jak wcześniej 50. Możemy zatem kupić realnie mniej dóbr niż w okresie poprzednim. W języku ekonomicznym mówimy wtedy, że doszło do zjawiska inflacji, czyli spadku siły nabywczej pieniądza. Siła nabywcza pieniądza to zdolność do nabywania za niego dóbr i usług. W danym momencie za 100 złotych mogliśmy nabyć 50 gałek lodów. W kolejnym roku ceny lodów wzrosły, doszło zatem do inflacji – spadku siły nabywczej pieniądza. W konsekwencji za tę samą kwotę możemy nabyć mniej dóbr. Inflacja działa zatem niczym siła zabierająca nam pieniądze z portfela. Jeśli bowiem chodzi o możliwość kupowania dóbr i usług, nie ma większego znaczenia to, czy jakaś siła zabrała nam pieniądze z portfela, czy ceny dóbr i usług wzrosły. Efekt finalny jest dokładnie taki sam: możemy kupić mniej towarów na rynku. Gdy zabiera się nam pieniądze, zmniejsza się kwota, jaką dysponujemy, w przypadku inflacji rosną ceny. == Pomiar inflacji == Słowo „inflacja” oznacza w innych językach „nadmuchiwanie” (np. w języku angielskim inflation [wym. inflejszyn] to zarówno inflacja, jak i nadmuchiwanie), więc można ją postrzegać jako nadmuchiwanie „balonu cen”. Co charakterystyczne przy procesach inflacji, utożsamia się ją przede wszystkim ze wzrostem wszystkich cen na rynku, a nie tylko pojedynczych cen. W podanym przykładzie posłużyliśmy się tylko jedną ceną – gałek lodów. W rzeczywistości gdy mówimy o inflacji cenowej, mamy na myśli jednoczesny wzrost wszystkich cen, a nie tylko jednej z nich. Wiadomo bowiem, że w danym dniu ceny danego dobra mogą wzrosnąć, a innego dobra – spaść. W procesie inflacji interesuje nas zjawi- sko ciągłego wzrostu wszystkich cen. Co tak naprawdę oznacza pojęcie „wszystkie ceny”? W celu uśrednie- nia zmian wszystkich cen na rynku tworzy się specjalne indeksy cenowe. W największym skrócie polega to na tworzeniu pewnego reprezentatyw- nego koszyka dóbr i usług, który w danym okresie jest kupowany przez konsumentów. Przykładem takiego koszyka mógłby być koszyk wielka- nocny, zawierający rozmaite produkty żywnościowe. W najprostszym uję- ciu inflacja koszyka wielkanocnego pokazywałaby, o ile więcej pieniędzy trzeba wydać po jakimś okresie na to, by kupić taki sam koszyk jak wcześ- niej. Jeśli kiedyś wystarczyło 200 złotych na taki koszyk, a teraz trzeba za niego zapłacić 220 złotych, to możemy powiedzieć, że inflacja koszyka wielkanocnego wyniosła 10 procent. Koszyk wielkanocny nie jest oczywiście reprezentatywny dla całej go- spodarki, dlatego Główny Urząd Statystyczny (GUS), licząc inflację, kon- struuje inny koszyk, który uwzględnia więcej dóbr i usług niż tylko żyw- ność. Choć jego konstrukcja jest inna (ponieważ znajdują się w nim inne dobra), to idea jest bardzo podobna jak w wypadku naszego koszyka wiel- kanocnego. Na podstawie informacji o tym, czego ludzie najwięcej kupu- ją, wybiera się taki uśredniony, reprezentatywny koszyk, a następnie ob- licza, ile więcej trzeba na niego wydać po upływie jakiegoś czasu. Inflacja wynosząca 5 procent oznacza, że na taki koszyk trzeba wydać 5 procent więcej pieniędzy niż w okresie poprzednim (zob. wykresy 9 i 10). Kiedy siła nabywcza pieniądza rośnie, a ceny spadają, mamy do czynie- nia ze zjawiskiem deflacji. Deflacja była dość powszechnym zjawiskiem w XIX wieku, kiedy pieniądzem było złoto lub srebro. Ponieważ ilość wy- dobywanego kruszcu była relatywnie niewielka, to podaż towarów często rosła szybciej od podaży pieniądza. Wywoływało to presję na spadek cen.76 Dział I. Podstawy ekonomii Obecnie deflacja jest zjawiskiem znacznie rzadszym, ale sporadycznie wy- stępuje także we współczesnych gospodarkach. Wykres 9. Roczna inflacja w Polsce w latach 1989–1995 (w procentach) Wykres 9. Roczna inflacja w Polsce w latach 1989–1995 (w procentach) 600 600 500 500 400 400 300 300 200 200 100 100 0 1989 0 1990 1991 1992 1993 1994 1995 1989 1990 1991 1992 1993 1994 1995 Źródło: Główny Urząd Statystyczny, Roczne wskaźniki cen towarów i usług konsumpcyjnych od 1950 roku, dostępne online 31 X 2019 r.: http://stat.gov.pl/obszary-tematyczne/ceny-handel/ wskazniki-cen/wskazniki-cen-towarow-i-uslug-konsumpcyjnychpot-inflacja-/roczne-wskazniki- cen-towarow-i-uslug-konsumpcyjnych/. Wykres 10. Roczna inflacja w Polsce w latach 1996–2018 (procenty) Wykres 10. Roczna inflacja w Polsce w latach 1996–2018 (procenty) 20 20 18 18 16 16 14 14 12 12 10 10 8 8 6 6 4 4 2 2 0 -2 0 -2 Źródło: Główny Urząd Statystyczny, Roczne wskaźniki cen towarów i usług konsumpcyjnych od 1950 roku.77 12. Inflacja Wykres 11. Siła nabywcza dolara amerykańskiego (1913=100) Wykres 11. Siła nabywcza dolara amerykańskiego (1913=100) 100,0 100,0 80,0 80,0 60,0 60,0 40,0 40,0 20,0 20,0 1963 1959 0,0 0,0 Źródło: FRED, Federal Reserve Bank of St. Louis, Consumer Price Index for All Urban Consumers: Purchasing Power of the Consumer Dollar [CUUR0000SA0R], dostępne online 15 VII 2020 r.: https://fred.stlouisfred.org/graph/?g=sYO2. Konsekwencje inf lacji Czy inflacja niesie ze sobą realne konsekwencje poza tym, że podno- szą się ceny? Gdybyśmy sobie wyobrazili inflację jednolitą, obejmującą wszystkie dobra i usługi w takim samym stopniu, to w zasadzie dotknę- łaby niewiele osób. Jak taka inflacja musiałaby wyglądać? Byłaby to sytu- acja zdecydowanie dziwna. Wyobraźmy sobie na przykład, że wszystkie dobra i usługi na rynku drożeją o 100 procent, czyli stają się dwukrotnie droższe. Chleb kosztuje 5 złotych zamiast 2,5 złotego, książka zamiast 30 złotych kosztuje 60 złotych itd. Jednocześnie, skoro wszystkie dobra i usługi miałyby podrożeć w takim samym stopniu, wzrosłyby dwukrot- nie również inne ceny: koszty produkcji i płace pracowników. Dlatego w tym hipotetycznym – i nierealnym – scenariuszu wzrost cen odbyłby się bez znaczących konsekwencji ekonomicznych. Ekonomiści powiedzieliby, że nastąpiła zmiana czysto nominalna. Łatwo to zrozumieć intuicyjnie na osobistym przykładzie. Gdyby wszyst- kie ceny podwoiły się, moglibyśmy to bardzo odczuć. Gdyby jednak jed- nocześnie również dwukrotnie wzrosła otrzymywana przez nas płaca, nie miałoby to dla nas specjalnego znaczenia. Płaca to też cena (pracy), a skoro wszystko miałoby podrożeć dwukrotnie, to również wynagrodzenie za pracę. W praktyce jednak nie dzieje się tak, że przy procesach inflacyjnych wszystkie ceny podnoszą się w tym samym tempie. Jedne ceny rosną78 Dział I. Podstawy ekonomii szybciej, inne wolniej. Jedne rosną znacznie, inne ledwie drgną. To samo dotyczy płac czy zarobków przedsiębiorców. W niektórych branżach zmia- ny są gwałtowne i wyraźne, w innych niezauważalne. W tym miejscu dochodzimy do głównej cechy każdej inflacji – jej redystrybucyjnego charakteru. Ponieważ nie wszystkie ceny na rynku reagują tak samo mocno i tak samo szybko, to w trakcie inflacji mamy do czynienia z tymi, którzy na niej korzystają, oraz z tymi, którzy na niej tracą. To, kto dokładnie traci, a kto zyskuje, zależy przede wszyst- kim od tego, gdzie pojawiają się impulsy inflacyjne (zob. rozdział 15). Zależy to również od tego, jakie zostały podpisane kontrakty na rynku. Jeśli na przykład właściciel mieszkania podpisał kilkuletni kontrakt na jego wynajem i nie uwzględnił w swoich kalkulacjach wysokiej inflacji, to straci na jej wystąpieniu. Podobnie rzecz ma się ze wszystkimi sprze- dającymi czy oszczędzającymi pieniądze w wypadku, gdy nie doszacują wysokości inflacji. Analogicznie osoba trzymająca gotówkę w portfelu traci na inflacji. Dlatego inflacja w szczególności wysoka zaburza sta- bilność gospodarczą: utrudnia przewidywanie przyszłych warunków rynkowych. Jeśli ceny potrafią się wahać o 5, 10, kilkanaście czy nawet kilkadziesiąt procent, to trudno jest przedsiębiorcy skutecznie gospo- darować na rynku, zwłaszcza że inflacja jest procesem przebiegającym nierównomiernie. Często dokonuje się kategoryzacji inflacji ze względu na jej wyso- kość. Inflacja kilkuprocentowa to inflacja pełzająca, inflacja krocząca jest trochę większa, a inflacja galopująca przekracza te niższe pozio- my. Hiperinflacja odnosi się najczęściej do bardzo wysokiej inflacji, odczuwalnej nawet w skali miesięcznej. Przyczyny inf lacji Na koniec należy odpowiedzieć na istotne pytanie o przyczyny in- flacji. Co powoduje, że ceny dóbr i usług rosną? Główną przyczyną jest wzrost ilości pieniądza w obiegu. Kiedyś za ten wzrost odpowiadało wy- dobycie dodatkowych kruszców, z których można było wyprodukować nowe monety. W starożytności i średniowieczu rządy uciekały się do12. Inflacja 79 zmniejszenia ilości kruszcu w monetach (żeby wybić więcej monet i na- być więcej dóbr, zanim ceny wzrosną), przez co siła nabywcza mone- ty obniżała się. Dzisiaj ilość pieniądza rośnie przy tworzeniu kredytów przez banki. Banki, udzielając kredytów, tworzą nowe środki płatnicze (w dzisiejszych czasach elektronicznie), czym stwarzają nowe możli- wości płacenia. O szczegółach tego procesu opowiada kolejny rozdział podręcznika. Im więcej środków płatniczych zostanie wytworzonych, tym więcej społeczeństwo może płacić za dobra i usługi. Zwiększenie się ilości środków wydatkowanych przez ludzi sprawia, że wzrastają ceny towarów i usług. Oczywiście ceny wzrastają nierównomiernie, ponie- waż wszystko zależy od tego, gdzie te nowe środki są tworzone. Jeśli na przykład odbywa się to na rynku kredytów hipotecznych, to najbardziej zauważalne będą wzrosty cen mieszkań. Ponadto, jednym z najchętniej kupowanych dóbr na rynku finansowym są obligacje państwowe, co oznacza, że największym beneficjentem inflacji jest zazwyczaj rząd. Ze względu na to, w jakich miejscach inflacja jest widoczna najpierw, wprowadzono również podział na inflację kosztową, gdy przykładowo najpierw wzrastają ceny surowców (ropy, gazu itd.), oraz inflację popy- tową, gdy wzrosty cen rozpoczynają się od rynku dóbr zakupywanych bezpośrednio przez konsumentów (np. żywności). Analogicznie może- my mówić o inflacji importowanej, która rozpoczyna się od rynku dóbr importowanych (zwłaszcza surowców). Inflację klasyfikuje się również pod względem jej tempa (zob. ramkę powyżej). Czy wiesz, że...? W historii świata zdarzyły się już wiele razy epizody hiperinflacji, gdy wzrosty cen potrafiły osiągać poziom kilku miliardów procent w ciągu roku, a nawet więcej. Jedną z najbardziej dotkliwych była hiperinflacja na Węgrzech w latach 1945–1946. W szczytowym mo- mencie stopa inflacji wynosiła tam 400% dziennie. Hiperinflacji nie ustrzegły się także Niemcy (w latach 1922–1923) i Polska (w roku 1923 i w latach 1989–1990). Ogromną rolę w procesie tworzenia kredytów i pieniędzy przez banki odgrywa bank centralny, który w pośredni sposób decyduje o tym, jak wysoka będzie inflacja (zob. rozdział 16).80 Dział I. Podstawy ekonomii == Pytania i zadania == # Wyjaśnij na przykładzie cen, czym jest siła nabywcza. # Wyjaśnij na przykładzie koszyka, co oznacza inflacja 50-procentowa. # Dlaczego inflacja nie jest neutralna dla wszystkich? # Co powoduje inflację i jak można ją klasyfikować? # Jakie są skutki inflacji? # Do roku 1933 w Stanach Zjednoczonych w obiegu funkcjonowały złote monety. Wtedy zakazano Amerykanom posiadania oszczędności w złocie i nakazono wymienić kruszec na papierowe dolary. Przyjrzyj się wykresowi 11 i odpowiedz, jak zmieniała się siła nabywcza dolara przed 1933 rokiem, a jak później. {{Nawigacja |Wolna przedsiębiorczość |[[../Ceny maksymalne i minimalne w prowadzane przez państwo/]] |[[../Banki/]] }} k1oynr7v96msa887ansf5tua9ehfo6h Moduł:Szablonowe 828 58954 558428 557964 2026-10-03T15:43:12Z Persino 2851 558428 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) return szablon; end, funkcja1,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end,__funkcja2,funkcja3); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.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) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,czy_ustalanie_szybkie_nazwy,__FUNKCJA,__FUNKCJA2) local czy_kody_w_nazwa; if(czy_ustalanie_szybkie_nazwy)then czy_kody_w_nazwa=mw.ustring.match(nazwa,p.NormaWzoruKodowaniaTekstu()); if(not czy_kody_w_nazwa)then local czy_jest_dwukropek=mw.ustring.match(nazwa,"[%:%&%%]"); if(not czy_jest_dwukropek)then return nazwa,nil; end; end; else czy_kody_w_nazwa=true; end; local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if((__FUNKCJA)and(czy_kody_w_nazwa))then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2)and(czy_kody_w_nazwa)and(not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa,nil; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa) or nil; if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaKompletnaNazwaStrony"]=function(czy_szablon,czy_pelna) if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=czy_pelna and mw.ustring.match(czy_szablon,"^%s*[^:]") or nil; if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; return nazwa_szablonu; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; local nazwa_szablonu=p["SzablonowaKompletnaNazwaStrony"](czy_szablon,true); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,true,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*[%-]?[1-9]%d*%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,true,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local function __FUNKCJA2() return true; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,__FUNKCJA2,}); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local wynik=p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); end; end ,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); if(wynik)then return wynik;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; local parametry_modul=require("Module:Parametry"); local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_inna_tabelka,true); for _,value in __next,tab_inna_tabelka,nil do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); ---- local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tab_atrybuty); return tab_atrybuty; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,}); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local __metatablica=getmetatable(atrybuty); if(not __metatablica)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(atrybuty); local tab_inna_tabelka={}; for name,value in pairs(tabelka_metatable)do tab_inna_tabelka[value[2]]={name,value[1],}; end; for __name,tab_value in ipairs(tab_inna_tabelka)do table.insert(tab_str," "); table.insert(tab_str,tab_value[1]); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(tab_value[2]))then table.insert(tab_str,"\""..tab_value[2].."\""); else table.insert(tab_str,tostring(tab_value[2])); end; end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa,true); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; 8urj9riroympnb079kuxpn2p88lycq6 Moduł:Szablonowe/dane 828 60130 558417 557836 2026-10-03T13:23:03Z Persino 2851 558417 Scribunto text/plain local p={}; p.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji={ ["SZABLON"]={ 1,--szablonowe_modul["ParsowanieWywołaniaSzablonu"](); 2,--szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(); 3,--szablonowe_modul["SzablonowaNazwaStrony"](); 4,--szablonowe_modul["NazwaSzablonuWywołania"](); 5,--szablonowe_modul["PełnaNazwaStronyNazwySzablonu"](); 0,--stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(); -1,--techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"] -2,--stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(); -5,--stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(); -6,--stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(); -7,--stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoObiektu(); -8,--stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy }, ["LINKW"]={ -3,--stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(); }, ["LINKZ"]={ -4,--stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(); }, ["ZNACZNIK"]={ 100,--szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(); }, ["MATH"]={ 101,--szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(); }, ["PRE"]={ 102,--szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(); }, ["ŹRÓDŁO"]={ 103,--szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(); }, ["NOWIKI"]={ 104,--szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(); }, ["GALERIA"]={ 105, }, ["MAPAOBRAZU"]={ 106, }, ["PUDEŁKOWEJŚCIA"]={ 107, }, ["QUIZ"]={ 108, }, }; p.tablica_znaczniki_typowo_mechanizmu_mediawiki={ ["pre"]="PRE", ["nowiki"]="NOWIKI", ["math"]="MATH", ["source"]="ŹRÓDŁO", ["syntaxhighlight"]="ŹRÓDŁO", ["gallery"]="GALERIA", ["imagemap"]="MAPAOBRAZU", ["inputbox"]="PUDEŁKOWEJŚCIA", ["quiz"]="QUIZ", ["score"]="MUZYKA", }; p.tablica_podstawowe_elementy_szablonowe_mediawiki={ ["SZABLON"]=true, ["LINKW"]=true, ["LINKZ"]=true, ["ZMIENNA"]=true, ["WIKITABELA"]=true, ["INNEPRE"]=true, ["ZNACZNIK"]=true, ["INCLUDE"]=true, ["STARE"]=true, ["ARCHIW"]=true, }; p.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki={ ["ATRYBUTY"]=true, ["UCIECZKI"]=true, ["KOŃCOWE"]=true, }; local m={}; function m.TworzenieTablicyZnacznikowejMechanizmuMediawiki() local tab={}; for _,obiekt in pairs(p.tablica_znaczniki_typowo_mechanizmu_mediawiki)do if(not tab[obiekt])then tab[obiekt]=true;end; end; return tab; end; p.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=m.TworzenieTablicyZnacznikowejMechanizmuMediawiki(); p.tablica_html_mechanizmu_mediawiki={ ["div"]=true, ["span"]=true, ["p"]=true, ["font"]=true, ["code"]=true, ["kbd"]=true, ["sub"]=true, ["sup"]=true, ["bdo"]=true, ["small"]=true, ["big"]=true, ["strong"]=true, ["tt"]=true, ["strike"]=true, ["u"]=true, ["br"]=true, ["hr"]=true, ["dd"]=true, ["dt"]=true, ["b"]=true, ["i"]=true, ["center"]=true, ["table"]=true, ["caption"]=true, ["tbody"]=true, ["tr"]=true, ["td"]=true, ["th"]=true, ["ol"]=true, ["ul"]=true, ["li"]=true, ["em"]=true, ["b"]=true, ["h1"]=true, ["h2"]=true, ["h3"]=true, ["h4"]=true, ["h5"]=true, ["h6"]=true, ["table"]=true, ["tr"]=true, ["td"]=true, ["th"]=true, ["caption"]=true, }; p.tablica_znacznikowa_preprocesora_szablonowego={ ["includeonly"]=true; ["onlyinclude"]=true; ["noinclude"]=true; } local m={}; p.tablica_podobne_html={ ["ref"]=true; ["references"]=true; ["templatestyles"]=true; ["poem"]=true; } m.TablicaZnacznikiMechanizmuMediaWiki=function() local tablica={}; for name,value in pairs(p.tablica_html_mechanizmu_mediawiki)do tablica[name]=value; end; for name,value in pairs(p.tablica_podobne_html)do tablica[name]=value; end; return tablica; end; p.tablica_wiki_znaczniki=m.TablicaZnacznikiMechanizmuMediaWiki(); p.tablica_elementowe_modyfikatory_szablonowe={ ["#invoke:"]={"[%s_]*#[%s_]*invoke[%s_]*:[%s_]*","Module",}, ["#if:"]={"[%s_]*#[%s_]*if[%s_]*:[%s_]*",nil,}, ["#ifeq:"]={"[%s_]*#[%s_]*ifeq[%s_]*:[%s_]*",nil,}, ["#iferror:"]={"[%s_]*#[%s_]*iferror[%s_]*:[%s_]*",nil,}, ["#ifexpr:"]={"[%s_]*#[%s_]*ifexpr[%s_]*:[%s_]*",nil,}, ["#ifexist:"]={"[%s_]*#[%s_]*ifexist[%s_]*:[%s_]*",nil,}, ["#expr:"]={"[%s_]*#[%s_]*expr[%s_]*:[%s_]*",nil,}, ["#tag:"]={"[%s_]*#[%s_]*tag[%s_]*:[%s_]*",nil,}, ["#switch:"]={"[%s_]*#[%s_]*switch[%s_]*:[%s_]*",nil,}, ["#property:"]={"[%s_]*#[%s_]*property[%s_]*:[%s_]*",nil,}, ["#time:"]={"[%s_]*#[%s_]*time[%s_]*:[%s_]*",nil,}, ["int:"]={"[%s_]*int[%s_]*:[%s_]*","MediaWiki",}, ["msg:"]={"[%s_]*msg[%s_]*:[%s_]*","Template",}, ["msgnw:"]={"[%s_]*msgnw[%s_]*:[%s_]*","Template"}, ["raw:"]={"[%s_]*raw[%s_]*:[%s_]*","Template",}, ["subst:"]={"[%s_]*subst[%s_]*:[%s_]*",nil,}, ["safesubst:"]={"[%s_]*safesubst[%s_]*:[%s_]*",nil,}, ["gender:"]={"[%s_]*gender[%s_]*:[%s_]*",nil,}, ["ucfirst:"]={"[%s_]*ucfirst[%s_]*:[%s_]*",nil,}, ["lcfirst:"]={"[%s_]*lcfirst[%s_]*:[%s_]*",nil,}, ["uc:"]={"[%s_]*uc[%s_]*:[%s_]*",nil,}, ["lc:"]={"[%s_]*lc[%s_]*:[%s_]*",nil,}, ["DEFAULTSORT:"]={"[%s_]*DEFAULTSORT[%s_]*:[%s_]*",nil,}, }; p.opis_elementowe_modyfikatory="^[%s_]*#?[%s_]*%a+[%s_]*:[%s_]*"; return p; t2oms5hipdxvfjbr70am3vr5p8y2s0g Moduł:Szablonowe/Potrzebne 828 60145 558418 558009 2026-10-03T13:26:25Z Persino 2851 558418 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) local czy_dalej_kwadratowe=mw.ustring.match(szablon,"%[%["); if(czy_dalej_kwadratowe)then return czy_dalej_kwadratowe,2; else return mw.ustring.match(szablon,"^%["),3; end; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,3; else return mw.ustring.match(szablon,"^%{"),4; end; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,2; else return mw.ustring.match(szablon,"^%{"),3; end; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; ryyv4g40jzbtyq1w0s2w3euayy9v6dh 558420 558418 2026-10-03T13:49:30Z Persino 2851 558420 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY) local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; local tablica_co=__metatablica.tablica(); return tablica_co; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local obiekt=co or "SZABLON"; local tablica_co=p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY); tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA_PARAMETRY); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) local czy_dalej_kwadratowe=mw.ustring.match(szablon,"%[%["); if(czy_dalej_kwadratowe)then return czy_dalej_kwadratowe,2; else return mw.ustring.match(szablon,"^%["),3; end; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,3; else return mw.ustring.match(szablon,"^%{"),4; end; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,2; else return mw.ustring.match(szablon,"^%{"),3; end; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; sg5rignd7phwj25epoyzuizlx2joyij 558421 558420 2026-10-03T13:57:30Z Persino 2851 558421 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY) local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; local tablica_co=__metatablica.tablica(); return tablica_co; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={}; end; local tab_nazwa=p.UstawianieMetatabelki(tab_element[nazwa],nazwa,__FUNKCJA_PARAMETRY); tab_nazwa[#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local obiekt=co or "SZABLON"; local tablica_co=p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY); tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA_PARAMETRY); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) local czy_dalej_kwadratowe=mw.ustring.match(szablon,"%[%["); if(czy_dalej_kwadratowe)then return czy_dalej_kwadratowe,2; else return mw.ustring.match(szablon,"^%["),3; end; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,3; else return mw.ustring.match(szablon,"^%{"),4; end; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,2; else return mw.ustring.match(szablon,"^%{"),3; end; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; oaec510ozcrgi7ym5c0s4rz2x6gigp4 558422 558421 2026-10-03T14:27:42Z Persino 2851 558422 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY) local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; local tablica_co=__metatablica.tablica(); return tablica_co; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={}; end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); mw.logObject(tab_element,"TYTAN123"); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local obiekt=co or "SZABLON"; local tablica_co=p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY); tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA_PARAMETRY); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) local czy_dalej_kwadratowe=mw.ustring.match(szablon,"%[%["); if(czy_dalej_kwadratowe)then return czy_dalej_kwadratowe,2; else return mw.ustring.match(szablon,"^%["),3; end; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,3; else return mw.ustring.match(szablon,"^%{"),4; end; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,2; else return mw.ustring.match(szablon,"^%{"),3; end; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; jo2e39optrrd83gl1jzqij8gsq7o7w3 558423 558422 2026-10-03T14:31:22Z Persino 2851 558423 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY) local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; local tablica_co=__metatablica.tablica(); return tablica_co; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={}; end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local obiekt=co or "SZABLON"; local tablica_co=p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY); tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA_PARAMETRY); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) local czy_dalej_kwadratowe=mw.ustring.match(szablon,"%[%["); if(czy_dalej_kwadratowe)then return czy_dalej_kwadratowe,2; else return mw.ustring.match(szablon,"^%["),3; end; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,3; else return mw.ustring.match(szablon,"^%{"),4; end; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,2; else return mw.ustring.match(szablon,"^%{"),3; end; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; p5guv9qnx7o7qacicmu9g8356rkblzw 558430 558423 2026-10-03T16:23:13Z Persino 2851 558430 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY) local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; local tablica_co=__metatablica.tablica(); return tablica_co; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); mw.log(tab_element["ATRYBUTY"]); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; local tab_nazwa={}; if(not tab_element[nazwa])then tab_element[nazwa]={}; end; tab_nazwa=tab_element[nazwa]; tab_nazwa[#tab_nazwa+1]=szablon; local ile=#tab_nazwa; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local obiekt=co or "SZABLON"; local tablica_co=p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY); tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) mw.log(tablica_analizy_obiektow_strony_dany_modul["ATRYBUTY"],"TYTAN123"); tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA_PARAMETRY); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) local czy_dalej_kwadratowe=mw.ustring.match(szablon,"%[%["); if(czy_dalej_kwadratowe)then return czy_dalej_kwadratowe,2; else return mw.ustring.match(szablon,"^%["),3; end; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,3; else return mw.ustring.match(szablon,"^%{"),4; end; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,2; else return mw.ustring.match(szablon,"^%{"),3; end; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; amhfmtwfkqh05cqokskx5ygp9948g1f 558431 558430 2026-10-03T16:36:48Z Persino 2851 558431 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY) local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; local tablica_co=__metatablica.tablica(); return tablica_co; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element,numer_szablonu,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; local tab_nazwa;local ile; if(numer_szablonu)then tab_nazwa=p.UstawianieMetatabelki(tab_element[nazwa],obiekt,__FUNKCJA_PARAMETRY); tab_nazwa[numer_szablonu[nazwa]]={szablon,false,}; ile=numer_szablonu[nazwa]; numer_szablonu[nazwa]=numer_szablonu[nazwa]+1; else if(not tab_element[nazwa])then tab_element[nazwa]={}; end; tab_nazwa=tab_element[nazwa]; tab_nazwa[#tab_nazwa+1]=szablon; ile=#tab_nazwa; end; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local obiekt=co or "SZABLON"; local tablica_co=p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY); tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu,__FUNKCJA_PARAMETRY); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) local czy_dalej_kwadratowe=mw.ustring.match(szablon,"%[%["); if(czy_dalej_kwadratowe)then return czy_dalej_kwadratowe,2; else return mw.ustring.match(szablon,"^%["),3; end; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,3; else return mw.ustring.match(szablon,"^%{"),4; end; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,2; else return mw.ustring.match(szablon,"^%{"),3; end; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; b1cvxsesli55g3rntfeobko3ifc6xvw 558494 558431 2026-10-04T09:37:29Z Persino 2851 558494 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY) local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; local tablica_co=__metatablica.tablica(); return tablica_co; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element,numer_szablonu,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; local tab_nazwa;local ile; if(numer_szablonu)then tab_nazwa=p.UstawianieMetatabelki(tab_element[nazwa],obiekt,__FUNKCJA_PARAMETRY); tab_nazwa[numer_szablonu[nazwa]]={szablon,false,}; ile=numer_szablonu[nazwa]; numer_szablonu[nazwa]=numer_szablonu[nazwa]+1; else if(not tab_element[nazwa])then tab_element[nazwa]={}; end; tab_nazwa=tab_element[nazwa]; tab_nazwa[#tab_nazwa+1]=szablon; ile=#tab_nazwa; end; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local obiekt=co or "SZABLON"; local tablica_co=p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY); tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu,__FUNKCJA_PARAMETRY); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) local czy_dalej_kwadratowe=mw.ustring.match(szablon,"%[%["); if(czy_dalej_kwadratowe)then return czy_dalej_kwadratowe,2; else return mw.ustring.match(szablon,"^%["),3; end; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,3; else return mw.ustring.match(szablon,"^%{"),4; end; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,2; else return mw.ustring.match(szablon,"^%{"),3; end; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; 8rdk2mfwakkx6hyyrtj9ho7h398v9is 558495 558494 2026-10-04T09:45:04Z Persino 2851 558495 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY) local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; local tablica_co=__metatablica.tablica(); return tablica_co; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element,numer_szablonu,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; local tab_nazwa;local ile; if(numer_szablonu)then tab_nazwa=p.UstawianieMetatabelki(tab_element[nazwa],obiekt,__FUNKCJA_PARAMETRY); tab_nazwa[numer_szablonu[nazwa]]={szablon,false,}; ile=numer_szablonu[nazwa]; numer_szablonu[nazwa]=numer_szablonu[nazwa]+1; else if(not tab_element[nazwa])then tab_element[nazwa]={}; end; tab_nazwa=tab_element[nazwa]; tab_nazwa[#tab_nazwa+1]=szablon; ile=#tab_nazwa; end; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local obiekt=co or "SZABLON"; local tablica_co=p.UstawianieMetatabelki(tab_co,obiekt,__FUNKCJA_PARAMETRY); tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu,__FUNKCJA_PARAMETRY); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) local czy_dalej_kwadratowe=mw.ustring.match(szablon,"%[%["); if(czy_dalej_kwadratowe)then return czy_dalej_kwadratowe,2; else return mw.ustring.match(szablon,"^%["),3; end; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,3; else return mw.ustring.match(szablon,"^%{"),4; end; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,2; else return mw.ustring.match(szablon,"^%{"),3; end; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; qunr8zqdf0n7ufurqcoc3bgddi501ey Moduł:StronicowyParser/AnalizaSpisuRzeczy 828 60192 558505 558122 2026-10-04T10:53:50Z Persino 2851 558505 Scribunto text/plain local p={}; function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end; local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od); if((a)and(b)and(a>b))then return;end; if((not liczba_do)or((b)and(b<=liczba_do)))then return a,b,c,d,e,f,g,h,i,j,k; end; return nil; else if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end; local liczba_start=liczba_do or 1; local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba_od)))then return a,b,c,d,e,f,g,h,i,j,k; elseif((b1)and(b1==liczba_od))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; end; a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9; local dlugosc_tekstu_wyszukiwanego=#tekst; if(not czy_od_tylu)then if((not liczba_od)or(liczba_od==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; end; end; end; else if(liczba_od==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then tak=true; break; elseif(czy_okladka)then tak=true; break; end; end; end; return (not tak); end; function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,z_innymi_stronami) local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((czy_element_spisu)and((czy_wszystkie_linki)or(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((z_innymi_stronami)and(numer_rodzaju_artykulu>1)))))then return true; end; end; start=koniec_szablon; else return false; end; end; end; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true); if(czy_zerowy_spis_rzeczy)then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2) local liczba_start;local liczba_koniec; local liczba_wys=liczba_od; local spis_naglowka; local spis_naglowka_stare; local spis_naglowka_poziom; while(true)do local __liczba_start,__liczba_koniec,wartosc_przechwycona; if(czy_rozdzial_rownaniowy_dodatni)then __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu) else __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu); end; if(__liczba_start)then if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end; local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona); local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka) if(czy_spis_tresci)then spis_naglowka_stare=naglowek; spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; if(czy_spis_tresci(spis_naglowka))then liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; else spis_naglowka=naglowek; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; return true; end); if(not wynik)then break; end; else break; end; end; if(liczba_start)then return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom; end; end; local obiekt="SZABLON"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(naglowek,nil); end; end; else local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu]; if(naglowek)then local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if((naglowek)and(poziom_naglowka))then return __FUNKCJA(naglowek,poziom_naglowka); end; end; end; end; return true; end); return wynik; end); local obiekt="ZNACZNIK"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="center")then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(zawartosc,nil); end; end; elseif(znaczniki_wprowadzenia_tekstu[nazwa])then if(zawartosc)then local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); if(numer_rozdzialu)then return __FUNKCJA(zawartosc,numer_rozdzialu); end; end; end; return true; end); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*"; local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( wzor_rozdzialu_dodatniego, true, function(naglowek) return naglowek,naglowek; end, function(naglowek,_,__FUNKCJA) local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then return __FUNKCJA(naglowek,poziom_naglowka); end; return true; end); if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom) local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka; if((not czy_spis_tresci)and(spis_naglowka))then spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; end; return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom); elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom); elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; local zawartosc; if(not czy_numer_parametru_naglowka)then czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(not czy_numer_parametru_naglowka)then return nil;end; local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc_szablonu)then return nil;end; zawartosc_szablonu=mw.text.trim(zawartosc_szablonu); local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu); if((not naglowek)or(not poziom_naglowka))then return nil;end; zawartosc=naglowek; else zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc)then return nil;end; end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; local szablonowe_modul=require("Module:Szablonowe"); while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")); if(czy_pomiedzy_naglowkami and(((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) )--[[or( not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu()) )]]) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1; elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local czy_rozdzial_dwukropkowy; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_rozdzial)then liczba_start=liczba_start_rozdzial; else czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$"); liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; czy_spis=((czy_rozdzial_dwukropkowy)and(not tak))and true or nil; else liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; czy_spis=czy_rozdzial_dwukropkowy and true or nil; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_nieoddzielone,czy_wszystkie_linki) local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return true; else local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=czy_nieoddzielone or mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return true; end; end; else return false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return false; end; end; function p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,linia,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,false); if(czy_znalezione)then return liczba_linki_nierozdzialowe_szablonu,true;end; return liczba_spisowa,false; end; else return liczba_spisowa,false; end; end; end; function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz) local liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; return liczba_start,true; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; return liczba_start,true; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if((not liczba_start_naglowek_przed)or(liczba_start_sugerowane>liczba_start_naglowek_przed))then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if((not liczba_start_naglowek_przed)or(liczba_start_nowa>liczba_start_naglowek_przed))then liczba_start=liczba_start_nowa; end; else liczba_start=liczba_start_sugerowane; end; end; else liczba_start=liczba_start_sugerowane; end; return liczba_start,false; end; function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return liczba_koniec; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return liczba_koniec; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; return liczba_koniec; end; end; return liczba_koniec; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and( ( (lista_szablon~="")and( (przerwa_szablon=="") or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<"))) or(not mw.ustring.match(lista_szablon,"^:")) ) ) or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))) )); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_spis_tresci) or liczba_przed_rozdzialem); local czy_break; liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed,liczba_start_naglowek_przed,czy_znajdz); if(czy_break)then break;end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); local czy_break; liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,nil,czy_znajdz); if(czy_break)then break;end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,linia,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_znalezione=nil; if(liczba_start<=liczba_obiekt_start)then czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); end; if(czy_znalezione)then liczba_koniec=p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local czy_znalazles_linki=p.SzukajObiektuArtykularnegoWeElemencieTekstowym(rozdzial,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true,true,true); if(czy_znalazles_linki)then liczba_koniec=liczba_rozdzial_koniec;end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); --mw.log(tekst,"TYTAN123") return tekst; end; return p; 4raytebucc3ef0yxh9k06mxd3acrtbj Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III 4 63512 558512 556255 2026-10-04T11:16:20Z Persino 2851 558512 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} == Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Linia do sprawdzenia. | 2 = {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} | _2 = Czy na początku linii mogą być odstępy. }} Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Jest to rozszerzenie funkcji: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}, który jest dla poszczególnych linii {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, na cały tekst {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przodu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Przeszukiwany tekst. | 2 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _2 = Początek wyszukiwania. | 3 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _3 = Koniec wyszukiwania. | 4 = {{Code|jak}} {{Patrz|jak}} |_4 = Odpowiadająca wartości: {{Code|true}}, gdy wyszukiwanie do tyłu, a przeciwnie do przodu. }} ; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}} * Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. * Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}. * Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, tzn. czy jest jednym z szablonów: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a w przypadku znacznika, czy jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry fukcji: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} | _4 = Obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika. | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.. | 9 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _9 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} i tabel baz, tzn.: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. Z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, z pierwszej iteracji są zwykle parametry: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, lub wartości nilowe. Wykluczanie, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, jeśli tak, to funkcja zgłasza powodzenie i zwraca wyniki. Zmienna: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}. | 3 = {{Code|liczba_od}} | _3 = Jak w: {{LinkPatrz|liczba_od}}. | 4 = {{Code|liczba_do}} | _4 = Jak w: {{LinkPatrz|liczba_do}}, | 5 = {{Code|jak}} | _5 = Jak w: {{LinkPatrz|jak}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, w pewnych zakresach: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} - {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według: {{Code|jak}} {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Jeżeli wszystko poszło dobrze, to zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: {{OpisParametrów | 1 = {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} | _1 = Początek wyszukanej linii. | 2 = {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} | _2 = Koniec wyszukiwanej linii. | 3 = {{Code|linia}} | _3 = Jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, czyli wyszukiwana linia spełniająca pewne kryteria. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> e70uoi5pn6mf0yn27pv85hcxsltbds7 558513 558512 2026-10-04T11:18:54Z Persino 2851 /* {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} */ 558513 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} == Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Linia do sprawdzenia. | 2 = {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} | _2 = Czy na początku linii mogą być odstępy. }} Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Jest to rozszerzenie funkcji: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}, który jest dla poszczególnych linii {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, na cały tekst {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przodu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Przeszukiwany tekst. | 2 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _2 = Początek wyszukiwania. | 3 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _3 = Koniec wyszukiwania. | 4 = {{Code|jak}} {{Patrz|jak}} |_4 = Odpowiadająca wartości: {{Code|true}}, gdy wyszukiwanie do tyłu, a przeciwnie do przodu. }} ; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}} * Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. * Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}. * Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, tzn. czy jest jednym z szablonów: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a w przypadku znacznika, czy jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry fukcji: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} | _4 = Obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika. | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.. }} Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} i tabel baz, tzn.: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. Z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, z pierwszej iteracji są zwykle parametry: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, lub wartości nilowe. Wykluczanie, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, jeśli tak, to funkcja zgłasza powodzenie i zwraca wyniki. Zmienna: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}. | 3 = {{Code|liczba_od}} | _3 = Jak w: {{LinkPatrz|liczba_od}}. | 4 = {{Code|liczba_do}} | _4 = Jak w: {{LinkPatrz|liczba_do}}, | 5 = {{Code|jak}} | _5 = Jak w: {{LinkPatrz|jak}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, w pewnych zakresach: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} - {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według: {{Code|jak}} {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Jeżeli wszystko poszło dobrze, to zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: {{OpisParametrów | 1 = {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} | _1 = Początek wyszukanej linii. | 2 = {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} | _2 = Koniec wyszukiwanej linii. | 3 = {{Code|linia}} | _3 = Jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, czyli wyszukiwana linia spełniająca pewne kryteria. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8wb5vhwp0rpavinvfyq0m2zhrzqbc10 558514 558513 2026-10-04T11:24:57Z Persino 2851 /* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */ 558514 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} == Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Linia do sprawdzenia. | 2 = {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} | _2 = Czy na początku linii mogą być odstępy. }} Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Jest to rozszerzenie funkcji: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}, który jest dla poszczególnych linii {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, na cały tekst {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przodu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Przeszukiwany tekst. | 2 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _2 = Początek wyszukiwania. | 3 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _3 = Koniec wyszukiwania. | 4 = {{Code|jak}} {{Patrz|jak}} |_4 = Odpowiadająca wartości: {{Code|true}}, gdy wyszukiwanie do tyłu, a przeciwnie do przodu. }} ; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}} * Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. * Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}. * Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, tzn. czy jest jednym z szablonów: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a w przypadku znacznika, czy jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry fukcji: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} | _4 = Obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika. | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.. }} Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} i tabel baz, tzn.: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. Z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, z pierwszej iteracji są zwykle parametry: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, lub wartości nilowe. Wykluczanie, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, jeśli tak, to funkcja zgłasza powodzenie i zwraca wyniki. Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}. | 3 = {{Code|liczba_od}} | _3 = Jak w: {{LinkPatrz|liczba_od}}. | 4 = {{Code|liczba_do}} | _4 = Jak w: {{LinkPatrz|liczba_do}}. | 5 = {{Code|jak}} | _5 = Jak w: {{LinkPatrz|jak}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, w pewnych zakresach: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} - {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według: {{Code|jak}} {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Jeżeli wszystko poszło dobrze, to zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: {{OpisParametrów | 1 = {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} | _1 = Początek wyszukanej linii. | 2 = {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} | _2 = Koniec wyszukiwanej linii. | 3 = {{Code|linia}} | _3 = Jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, czyli wyszukiwana linia spełniająca pewne kryteria. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dbe769tncr5qylqz1egx8sft81kg0yr 558515 558514 2026-10-04T11:30:44Z Persino 2851 /* {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} */ 558515 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} == Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Linia do sprawdzenia. | 2 = {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} | _2 = Czy na początku linii mogą być odstępy. }} Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Jest to rozszerzenie funkcji: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}, który jest dla poszczególnych linii {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, na cały tekst {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przodu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Przeszukiwany tekst. | 2 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _2 = Początek wyszukiwania. | 3 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _3 = Koniec wyszukiwania. | 4 = {{Code|jak}} {{Patrz|jak}} |_4 = Odpowiadająca wartości: {{Code|true}}, gdy wyszukiwanie do tyłu, a przeciwnie do przodu. }} ; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}} * Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. * Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}. * Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, tzn. czy jest jednym z szablonów: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a w przypadku znacznika, czy jest według: {{Tag|center}}, czyli też centrowania. {{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst= Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. }} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry fukcji: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} | _4 = Obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika. | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.. }} Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} i tabel baz, tzn.: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. Z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, z pierwszej iteracji są zwykle parametry: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, lub wartości nilowe. Wykluczanie, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, jeśli tak, to funkcja zgłasza powodzenie i zwraca wyniki. Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}. | 3 = {{Code|liczba_od}} | _3 = Jak w: {{LinkPatrz|liczba_od}}. | 4 = {{Code|liczba_do}} | _4 = Jak w: {{LinkPatrz|liczba_do}}. | 5 = {{Code|jak}} | _5 = Jak w: {{LinkPatrz|jak}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, w pewnych zakresach: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} - {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według: {{Code|jak}} {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Jeżeli wszystko poszło dobrze, to zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: {{OpisParametrów | 1 = {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} | _1 = Początek wyszukanej linii. | 2 = {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} | _2 = Koniec wyszukiwanej linii. | 3 = {{Code|linia}} | _3 = Jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, czyli wyszukiwana linia spełniająca pewne kryteria. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2qoh0cjj3qmf0ez41zgpe1kcleaqtmx 558516 558515 2026-10-04T11:32:45Z Persino 2851 /* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */ 558516 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} == Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Linia do sprawdzenia. | 2 = {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} | _2 = Czy na początku linii mogą być odstępy. }} Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Jest to rozszerzenie funkcji: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}, który jest dla poszczególnych linii {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, na cały tekst {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przodu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Przeszukiwany tekst. | 2 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _2 = Początek wyszukiwania. | 3 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _3 = Koniec wyszukiwania. | 4 = {{Code|jak}} {{Patrz|jak}} |_4 = Odpowiadająca wartości: {{Code|true}}, gdy wyszukiwanie do tyłu, a przeciwnie do przodu. }} ; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}} * Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. * Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}. * Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, tzn. czy jest jednym z szablonów: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a w przypadku znacznika, czy jest według: {{Tag|center}}, czyli też centrowania. {{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst= Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. }} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry fukcji: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} | _4 = Obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika. | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.. }} Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} i tabel baz, tzn.: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. Z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, z pierwszej iteracji są zwykle parametry: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, lub wartości nilowe. Wykluczanie, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, jeśli tak, to funkcja zgłasza powodzenie i zwraca wyniki. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}. | 3 = {{Code|liczba_od}} | _3 = Jak w: {{LinkPatrz|liczba_od}}. | 4 = {{Code|liczba_do}} | _4 = Jak w: {{LinkPatrz|liczba_do}}. | 5 = {{Code|jak}} | _5 = Jak w: {{LinkPatrz|jak}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, w pewnych zakresach: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} - {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według: {{Code|jak}} {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Jeżeli wszystko poszło dobrze, to zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: {{OpisParametrów | 1 = {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} | _1 = Początek wyszukanej linii. | 2 = {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} | _2 = Koniec wyszukiwanej linii. | 3 = {{Code|linia}} | _3 = Jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, czyli wyszukiwana linia spełniająca pewne kryteria. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> f6xvs54wweaqg9r7gzuosvnw3ie5se6 Wikibooks:Moduły/StronicowyParser/StronaSubst 4 63523 558491 557614 2026-10-04T09:01:03Z Persino 2851 /* {{Śródtytuł|p.AnalizaStronaSubst}}{{Code|p.AnalizaStronaSubst}} */ 558491 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/StronaSubst}}|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.AnalizaStronaSubst}}{{Code|p.AnalizaStronaSubst}} == Funkcja sprawdzająca, czy dana strona jest strona zbiorczą o nazwie: w wersji do czytania: {{Tt|Wersja do czytania}} {{Patrz|Wersja do czytania}}, o nazwie: {{Code|nazwa artykulu}} {{LinkPatrz|nazwa artykulu}}, równej subnazwie danej książki: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, np. nazwa książki: {{lg|Matematyka dla liceum}}, to ta strona jest wtedy: {{lg|Matematyka dla liceum/Matematyka dla liceum}}, lub wersji do druku: {{Tt|Wersja do druku}} {{Patrz|Wersja do druku}}, jak: {{lg|Matematyka dla liceum/Wersja do druku}}. Funkcja sprawdza, czy dana strona równa nazwie rozdziału, do której należą jakieś artykuły, jest stroną zbiorczą. Aby dana nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu}} była stroną zbiorczą, to nie może być o nazwie: {{Code|Spis treści}}, {{Code|Spis rzeczy}}, {{Code|Bibliografia}} i {{Code|Licencja}}, czyli taką prawidłową stroną, np. jest: {{lg|Matematyka dla liceum/Zaczynamy}}. Gdy dany artykuł, jest nierówny: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}} i {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}, należy do zbioru normalnych artykułów, to wtedy to nie jest na pewno stroną zbiorczą. * Do wskazania, czy to jest strona zbiorcza, używamy tej funkcji, a do liczenia zawartości szablonów: {{Code|{{s|StronaSubst}}}} {{Patrz|StronaSubst-Szablon}} i {{Code|{{s|KsiążkaSubst}}}} {{Patrz|KsiążkaSubst-Szablon}}, wykorzystujemy do tego:{{LinkŚródtytuł|p.LiczOperacjeStronZbiorczych}}, i w niej funkcję nadrzędną: {{LinkŚródtytuł|WoluminSubst}}, która analizuje te dwa typy szablonów, i w zależności od tego uruchamia odpowiednie procedury wykonawcze, a dla tego drugiego szablonu, natomiast jest uruchomiana instrukcja: {{LinkŚródtytuł|p.AnalizaStronaSubst}}, w celu przeanalizowania, czy wskazana strona jest stroną zbiorczą, nawet tą symulowaną, i jakie artykuły należą do tej właśnie strony, i je wypisuje w wywołaniu funkcyjnym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaStronaSubst(tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,pelnanazwastrony,TakFun-AnalizaStronaSubst,NieFun-AnalizaStronaSubst,FunRozdzial-AnalizaStronaSubst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Najważniejsze zmienne: | nagłówek1 = tak | 2 = {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} |_2 = Tablica, która jest wynikiem, jego wartości zwracanej, działania dołączacza modułów: {{Code|mw.loadData("Module:StronicowyParser/informacje")}}, a w nim zmiennej: {{Code|tablica_zebranych_danych_woluminowych}}. | 3 = {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{Patrz|tab_lista_artykulow_w_ksiazce_spis}} | _3 = Tablica rozdziałów i artykułów oraz o nich informacji, różnych spisów treści należącej do danej książki, ta tablica ma ściśle określoną strukturę omówioną w artykule: {{Code|{{lr2|Moduły/StronicowyParser/SpisTreści}}}}. | 4 = Zmienne potrzebne do zmiany nawigacji na inny niż dany artykuł, czy książkę: | nagłówek4 = tak | 5 = {{Code|pelnanazwastrony}} {{Patrz|pelnanazwastrony}} | _5 = Jest to nazwa jednostki z przestrzenią nazw, ona jest wykorzystywana w parametrach pudełkowych: {{Code|{{m|Pudełko}}}}, modułu {{Code|{{ld|StronicowyParser|Stronicowego Parsera}}}}. | 6 = Funkcje: | nagłówek6 = tak | 7 = {{Code|TakFun}} {{Patrz|TakFun-AnalizaStronaSubst}} | _7 = Ona (musi być zdefiniowana) jest używana, gdy dana strona jest stroną zbiorczą, ale zwykle nierozdziałową. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> czy_tak=TakFun(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); </syntaxhighlight> | 8 = {{Code|NieFun}} {{Patrz|NieFun-AnalizaStronaSubst}} | _8 = Ona (musi być zdefiniowana) jest używana, gdy dana strona nie jest stroną zbiorczą, ale jest artykułem spisu, też w wypadku, gdy strona nie ma artykułów spisu, bo nie jest książką, tylko np. stronami w innej przestrzeni, czy niby-przestrzeni, niż książkowa. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> czy_tak= NieFun(parametr); </syntaxhighlight> | 9 = {{Code|FunRozdzial}} {{Patrz|FunRozdzial-AnalizaStronaSubst}} | _9 = Ona (funkcja opcjonalna, w przeciwnym wypadku jest wykorzystywane: {{LinkPatrz|TakFun-AnalizaStronaSubst}}) jest używana, gdy dana strona jest zbiorczą, ale rozdziałową, równą nazwie rozdziału. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> czy_tak=FunRozdzial(tab_lista_artykulow_w_ksiazce_spis,nazwa_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); </syntaxhighlight> | 10 = Zmienne nazw {{Patrz|ZMIENNE_NAZWOWE}}: | nagłówek10 = tak | 11 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}} | _11 = Nazwa przestrzeni nazw, do której należy dany artykuł, czy książka, do której on należy. | 12 = {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} | _12 = Mazwa przestrzeni książki, do której należy dana książka. | 13 = {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _13 = Subnazwa książki, do której należą jej artykuły. | 14 = {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} | _14 = Nazwa artykułu danej książki, bez pełnej nazwy książki. }} A gdy parametr: {{Code|pelnanazwastrony}} {{LinkPatrz|pelnanazwastrony}}, istnieje {{Patrz|pelnanazwastrony-istnieje}}, lub parametry: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, lub {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu}}, nie istnieją, wtedy są uzyskiwane parametry pudełkowe, co na tej podstawie, gdy pełna nazwa strony: {{Code|pelnanazwastrony}} {{LinkPatrz|pelnanazwastrony}}, istnieje {{LinkPatrz|pelnanazwastrony-istnieje}}, lub {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}, nie istnieje {{Patrz|tab_lista_artykulow_w_ksiazce_spis-nie-istnieje}}, to są liczone parametry strony z tego, a jeżeli wtedy strona nadal nie ma artykułów, to funkcja jest zatrzymywana, bo np. to ta nibyże książka nie może mieć strony zbiorczej, przeciwnym wypadku otrzymywane są parametry: {{LinkPatrz|ZMIENNE_NAZWOWE}}. A gdy warunki: {{LinkPatrz|pelnanazwastrony-istnieje}} i {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis-nie-istnieje}}, nie są spełnione, to dane są uzyskiwane bezpośrednio z tabeli: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, tzn.: {{LinkPatrz|ZMIENNE_NAZWOWE}}. A jeżeli ten pierwszy warunek nie jest spełniony, to są liczone parametry z: {{LinkPatrz|ZMIENNE_NAZWOWE}}, uzyskiwany jest z niego spis rozdziałów i do nich artykułów, w zmiennej: {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}, a jeżeli strona nie może mieć spisu, to funkcja jest zatrzymawana. Jeżeli spis strony jednak istnieje po policzeniu, lub nie (wtedy to jest parametrem tej funkcji), wtedy funkcja sprawdza, czy nazwa przestrzeni nazw {{LinkPatrz|nazwa_przestrzeni}} jest: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, lub {{Np|Wikibooks|link=tak}} w niby-przestrzeni nazw: {{lr2|Brudnopis}} z: {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, albo {{Np|User|link=tak}} (ale nie strona główna użytkownka, ale inne strony w tej przestrzeni, co jest policzone z: {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}). A jeżeli któraś z tych parametrów jest spełnione, wtedy jest sprawdzane, czy artykuł: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu}}, czy jest artykułem książki, co w przypadku stron zbiorczych rozdziałowych jest anulowany status strony zbiorczej, a w przypadku innym ta strona jest jednak stroną zbiorczą. A w innym wypadku, gdy to nie jest ta rozdziałowa, to jest sprawdzane, czy to jest strona zbiorcza. == {{Śródtytuł|p.LiczOperacjeStronZbiorczych}}{{Code|p.LiczOperacjeStronZbiorczych}} == Tutaj jest zawarty opis tej funkcji i podfunkcji lokalnych dostępne tylko w niej, a nie gdzie indziej. === Opis funkcji === Gdy strona jest stroną zbiorczą, strona musi być w przestrzeni książkowej, lub gdy parametry pudełkowe: {{Code|{{m|Pudełko}}}}, wskazują na nią, to w przeciwnym wypadku parametry stron zbiorczych nie są liczone i nie są ustawiane, normalnie są liczone, za pomocą wywołań szablonowych: {{Code|{{s|StronaSubst}}}} {{LinkPatrz|StronaSubst-Szablon}} - gdy jest liczony pojedynczy artykuł, {{Code|{{s|KsiążkaSubst}}}} {{LinkPatrz|KsiążkaSubst-Szablon}} - gdy liczymy całą stronę zbiorczą ze wszystkich stron z jakich składa się książka, oprócz artykułów, różnych stron zbiorczych. Ten pierwszy wywołujemy zawsze z parametrami liczonej strony (artykułu książki), a to drugie nie wywołujemy zwykle z parametrami, po prostu wywołanie jest prawie zawsze bezparametrowe. Te szablony umieszczamy na stronie zbiorczej lub symulowanej stronie zbiorczej, za pomocą szablonu {{s|Podręcznik}}, zobacz też zbiór szablonów ustawień {{Code|config}}, tego szablonu, tzn: {{s|Podręcznik/Ustawienia/}} {{Patrz|Podręcznik/Ustawienia/}}, co jest uwarunkowane wewnętrznym kodem w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}, w funkcji: {{Code|{{sr|#p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi|p=StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}. Przykład ustawień {{LinkPatrz|Podręcznik/Ustawienia/}} symulowanej strony zbiorczej możemy znaleźć na stronie: {{Code|{{ls2|Podręcznik/Ustawienia/Szablon:StronaSubst/config}}}} (szablonu {{LinkPatrz|StronaSubst-Szablon}}) lub {{Code|{{ls2|Podręcznik/Ustawienia/Szablon:KsiążkaSubst/config}}}} (szablonu {{LinkPatrz|KsiążkaSubst-Szablon}}). Funkcja wykorzystuje jako podstawę do działania procedurę zwracajace jakieś parametry: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LiczOperacjeStronZbiorczych(glowna_tablica,tekst_rozwiniety_calego_artykulu,spis,nazwa_modulu_strony,nazwa_modulu_strony_szablonowa,tablica_obiektow_strony_dany_modul_strony,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|glowna_tablica}} {{Patrz|glowna_tablica}} | _1 = Zmienna taka jak: {{Code|self}}, jest to zmienna obiektowa, co ona pozwala uruchomić tę funkcję bez tego parametru, jeżeli napiszemy wywołanie tej funkcji nie z: {{Code|.}}, tylko z: {{Code|:}}, wtedy jest brany obiekt z aktualnej tablicy, dzięki któremu liczymy pewne parametry, ten przed dwukropkiem. | 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Tekst zakodowany całej strony. | 3 = {{Code|spis}} {{Patrz|spis}} | _3 = Jest to spis rozdziałów i jego artykułów, jest to zmienna, taka jak: {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 4 = {{Code|nazwa_modulu_strony}} {{Patrz|nazwa_modulu_strony}} | _4 = Uchwyt bazy danych {{Code|{{m|Szablonowe}}}}, używany zamiast: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}. | 5 = {{Code|nazwa_modulu_strony_szablonowa}} {{Patrz|nazwa_modulu_strony_szablonowa}} | _5 = Nazwa strony w wersji szablonowej, czyli szablony pisane jakby były w przestrzeni głównej, a strony w tej przestrzeni nazw są pisane z dwukropkiem na początku. | 6 = {{Code|tablica_obiektow_strony_dany_modul_strony}} {{Patrz|tablica_obiektow_strony_dany_modul_strony}} | _6 = Gdy nie podano zmiennej: {{Code|nazwa_modulu_strony}}, wtedy jest używana ta zmienna, jest to zmienna bazy danych, tej samej bazy, co dotyczy: {{LinkPatrz|nazwa_modulu_strony}}. | 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _7 = Zmienna, w której są zawarte rozkładania parametrów tabeli bazy danych: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}, na czynniki pierwsze, aby znów tego nie robił, gdy pierwszy raz badamy jakiś element jej, to rozłożenie jest umieszczane w tej właśnie tabeli, a za drugim lub trzecim razem, itd., tego nie robić, aby w ten sposób można przyszybszyć '''{{ld|StronicowyParser|Stronicowy parser}}'''. }} Funkcja ma w swoje definicji bezpośrednio zmienne: {{Code|toc_nowe}} do tworzenia spisu treści, którą zapisujemy pod zmienną: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}} w podtablicy {{Code|TOC_StronaZbiorcza}} {{Patrz|TOC_StronaZbiorcza}}. Również ona używa funkcji: {{LinkŚródtytuł|Powtarzane}}, tzn. {{LinkPatrz|tab_powtarzane}}, do liczenia, ile razy dany rozdział się powtarza, w celu policzenia unikalnych identyfikatorów do nich, aby można było się do nich odwołać za pomocą linków wewnętrznych linkujących do bieżącej, lub nie, strony. === Funkcje lokalne === ==== {{Śródtytuł|Powtarzane}}{{Code|Powtarzane}} ==== Funkcja, którego parametrem jest rozdział. Liczy numer takiego samego rozdziału. Do swojego działania funkcja wykorzystuje tabelę {{Code|tab_powtarzane}} {{Patrz|tab_powtarzane}} zdefiniowanej w funkcji: {{LinkŚródtytuł|p.LiczOperacjeStronZbiorczych}}, aby uzyskać unikalność danego nagłówka, tworząc kolejne pozycje spisu treści na stronie zbiorczej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Powtarzane(rozdzial)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Podany rozdzial spisu treści lub podanego rozdzialu w artykułach, w zależności od sytuacji, w której uruchomiono tą zmienną. }} Przykład użycia: <syntaxhighlight lang="lua"> local liczba_powtarzanego=Powtarzane(naglowek); </syntaxhighlight> ==== {{Śródtytuł|CzyStronaSubst}}{{Code|CzyStronaSubst}} ==== Funkcja sprawdzająca, czy składowa tabeli: {{Code|glowna_tablica}} {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a później jego podelement: {{Code|CzyStronaSubst}} {{Patrz|CzyStronaSubst}}, czy nie istnieje, a jeżeli tak, to ustaw jego wartość na: {{Code|tak}}. Zmienna mówi, że strona została przeanalizowana parserem strony zbiorczej, dlatego jest ustawiana właśnie ta zmienna, i że to jest strona zbiorcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyStronaSubst()...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Brak parametrów. | komórka1 = 1 }} Przykład analizy funkcji, podając je właściwie ciało: <syntaxhighlight lang="lua"> if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"])then glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; </syntaxhighlight> ==== {{Śródtytuł|WoluminSubst}}{{Code|WoluminSubst}} ==== Funkcja wyszukuje w zakodowanym tekście szablony: {{s|StronaSubst}} {{LinkPatrz|StronaSubst-Szablon}} i {{s|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-Szablon}}, przy pomocy: {{Code|tablica_obiektow_strony_dany_modul_strony}} {{linkPatrz|tablica_obiektow_strony_dany_modul_strony}}, wywołując dla nich odpowiednie kolejno funkcje: {{Code|StronaSubst}} {{LinkPatrz|StronaSubst-WoluminSubst}} i {{Code|KsiążkaSubst}} {{LinkPatrz|KsiazkaSubst-WoluminSubst}}. * To jest główna funkcja w: {{LinkŚródtytuł|p.LiczOperacjeStronZbiorczych}}, od której liczymy szablony stron zbiorczych. I całą historię tego liczenia od tego zaczynamy, w przypadku całościowego liczenia takich stron na stronie zbiorczej, funkcja wykorzystuje do tego celu: {{LinkŚródtytuł|p.AnalizaStronaSubst}}, a do części szczególnej, dla jednego artykułu, używa do tego: {{LinkŚródtytuł|StronaSubst}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,nazwa_modulu_strony_szablonowa,tablica_obiektow_strony_dany_modul_strony,StronaSubst,KsiazkaSubst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Jest to przeszukiwany tekst, w celu wyszukania szablonów: {{s|StronaSubst}} i {{s|KsiążkaSubst}}. | 2 = {{Code|nazwa_modulu_strony}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_strony}}. Jest to uchwyt bazy kodowania zamiast używania zmiennej: {{Code|tablica_obiektow_strony_dany_modul_strony}} {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}. | 3 = {{Code|nazwa_modulu_strony_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_strony_szablonowa}}. To nazwa w wersji szablonowej, by napisać nazwę szablonu tak, by w ten sposób odnaleźć szablony: {{s|StronaSubst}} i {{s|KsiążkaSubst}}, by je w odpowiedni sposób obsłużyć. | 4 = {{Code|tablica_obiektow_strony_dany_modul_strony}} {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}} | _4 = Jak w: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}. Jeśli jest nienilowe, to używamy zamiast: {{Code|nazwa_modulu_strony}} {{LinkPatrz|nazwa_modulu_strony}}. | 5 = {{Code|StronaSubst}} {{Patrz|StronaSubst-WoluminSubst}} | _5 = Funkcja wywoływana, gdy napotkano szablon: {{s|StronaSubst}} {{LinkPatrz|StronaSubst-Szablon}}. | 6 = {{Code|KsiazkaSubst}} {{Patrz|KsiazkaSubst-WoluminSubst}} | _6 = Funkcja wywoływana, gdy napotkano szablon: {{s|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-Szablon}}. }} Przykłady wykorzystania: <syntaxhighlight lang="lua"> WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,nazwa_modulu_strony_szablonowa,tablica_obiektow_strony_dany_modul_strony, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ... StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ... p.AnalizaStronaSubst(glowna_tablica.tabela_listy_danych_analizy_ksiazki,spis_artykulow,pelnanazwastrony,TakFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),NieFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),FunRozdzial(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)); end ); </syntaxhighlight> Funkcja wykorzystuje pierwszą funkcję, wywołując inną funkcję: {{LinkŚródtytuł|StronaSubst}}, a druga funkcję: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. ==== {{Śródtytuł|StronaSubstParametr}}{{Code|StronaSubstParametr}} ==== Funkcja liczy łańcuch znakowy odpowiadający pojedynczemu wywołaniu, dotyczący danego rozdziału strony zbiorczej, czyli dla pojedynczego wywołania szablonu: {{LinkPatrz|StronaSubst-Szablon}}, lub dla pojedynczego artykułu z wielu generowanych przez szablon: {{LinkPatrz|KsiążkaSubst-Szablon}}. Szablon tworzy rozdział w postaci linku do artykułu, wtedy w nagłówku nie jest podawany adres pełny artykułu, tylko nazwa tego linku jest równa podanej nazwie nagłówka, chociaż adres jest pełną nazwą książki, wtedy w tekście w znaczniku nie jest podawany wcale żaden artykuł, ani w ogóle tekst, a jeżeli ona nie jest linkiem, to nagłówek i jego rozdział jest w postaci tekstu, wtedy w tekście rozdziału jest podawany pełny adres artykułu, a jeżeli, mamy włączony postęp, wtedy to jest ukryte właściwością '''{{lpg|CSS}}''': {{Code|display:none}}. Rozdział jest pod elementem {{Tag|div|parametry=style="display:block;" class="rozdział_książki"}}, o odpowiednim poziomie, gdy poziom jest {{Code|nil}}, to wtedy przyjmuje on domyślną wartość {{Code|1}}, tworzonym przez funkcję: {{Code|{{sr|#p.NapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Następnym elementem jest postęp, pod warunkiem, jeżeli ustawiono zmienną: {{Code|postep}}, a dalej w osobnym {{ZobaczTeż|strona_subst}}: {{Tag|div|parametry=class="strona_subst"}}, jest zawartość rozdziału w postaci naszego adresu, lub w postaci wartości pustej, gdy rozdział jest linkiem, wtedy zmienna: {{Code|link}} {{LinkPatrz|link-StronaSubstParametr}}, jest niepusta, według ustawień funkcji: {{LinkŚródtytuł|StronaSubst}}, a więc tak się dzieke również w przypadku szablonu: {{s|StronaSubst}} {{LinkPatrz|StronaSubst-Szablon}}, gdy ta funkcja została wywołana przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function StronaSubstParametr(strona,naglowek_strony,link,p,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|strona}} {{Patrz|strona-StronaSubstParametr}} | _1 = Jak w: {{LinkPatrz|1-StronaSubst}} - jest to nazwa artykułu, który wraz z pozostałymi wartościami nazw książki, tworzy pełny adres, który mieści się na stronie w odpowiedniej sekcji w: {{LinkZobaczTeż|strona_subst}}, a jeżeli zmienna: {{Code|postęp}} {{LinkPatrz|postep-StronaSubstParametr}}, jest niepusta, wtedy ten rozdział jest ukryty, przeciwnie już nie. Ten adres może mieścić się w linku w nagłówku, w przypadku podania {{Code|link}} {{LinkPatrz|link-StronaSubstParametr}}. a ten znacznik podany tutaj jest wtedy pusty. | 2 = {{Code|naglowek_strony}} {{Patrz|naglowek_strony-StronaSubstParametr}} | _2 = Nagłówek strony tworzony z pełnego adresu strony, który jest podstroną wraz z nagłówkiem. | 3 = {{Code|link}} {{Patrz|link-StronaSubstParametr}} | _3 = Jak w: {{LinkPatrz|link-StronaSubst}}, tylko ta zmienna jest w postaci logicznej, jak ta ostatnia jest niepusta, wtedy ta zmienna odpowiada wartości logicznej prawda, w przeciwnym wypadku mamy fałsz. Wtedy nagłówek jest linkiem, a zawartość znacznika: {{LinkZobaczTeż|strona_subst}}, jest pusta. | 4 = {{Code|p}} {{Patrz|p-StronaSubstParametr}} | _4 = Poziom tworzonego nagłówka rozdziału dodatniego równaniowego, jeżeli {{Code|p {{=}} nil}}, wtedy domyślny poziom jest 1, ten poziom jest liczba calkowitą dodatnią. To odpowiada pewnej liczbie równa się po obu jego stronach nagłówka: {{Code|naglowek_strony}} {{LinkPatrz|naglowek_strony-StronaSubstParametr}}. | 5 = {{Code|postep}} {{Patrz|postep-StronaSubstParametr}} | _5 = Jak w: {{LinkPatrz|postep-StronaSubst}}, z wartością logiczną, jak u w: {{LinkPatrz|link-StronaSubstParametr}}. | 6 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _6 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. Nazwy potrzebne do strorzenia pełnej nazwy adtesu strony, która mieści się w atrybucie adresu w linku w sekcji, lub w znaczniku: {{LinkPatrz|link-StronaSubst}}, w zależności od podanego parametru: {{Code|link}} {{LinkPatrz|link-StronaSubstParametr}}. }} ==== {{Śródtytuł|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}}{{Code|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}} ==== Funkcja liczy pojedynczą pozycję dla artykułu, na stronie zbiorczej, przy wywołaniu szablonu {{LinkPatrz|KsiążkaSubst-Szablon}}. Nie liczy tylko strony typu: wersji: wersji do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}} i wersji do druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}, i ich nie rozwaza w zbiorze artykułów,. Gdy nie jest włączony parametr sekcji, ale też jest wyłączony parametr naglówków, to wtedy strona nie uwzględnia, że strony mogą się powtarzać, w przeciwnym wypadku, dalsze repetowane strony są nie uwzględniane, bo np. strony mogą być z nagłówkami w spisie treści, więc w tym przypadku ma sens używać ten parametr. Gdy na stronie jest włączony parametr sekcji, to dla nazw strony niepowtarzających się, liczy stronę w postaci listy tej samej nazwy strony z jego nagłówkami, tzn. po: {{Code|#}}. Funkcja wykorzystuje do liczenia pojedynczej pozycji artykularnej, a w przypadku włączonej sekcji, również te z nagłówkiem, aby policzyć pozycję adresową dla tekstu rozdziału, tzn. używa do tego: {{LinkŚródtytuł|StronaSubstParametr}}. Fukcja do powtarzanych nagłówków na stronie wykorzystuje funkcję: {{LinkŚródtytuł|Powtarzane}}. Funkcję wywołuje się w pętli aż do granicy dojścia do ostatniego artykułu w rozdziale, czy książce, to zależy w jakiej stronie szablon: {{s|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-Szablon}}, się znalazł, czy to w artykule przyprządkowanym danemu rozdziałowi, która jest w tym przypadku stroną zbiorczą, ale nie zawsze, czy innym, czyli normalną stroną zbiorczą, czy to w wersji do czytania, czy druku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrowa_strony}} {{Patrz|tabela_parametrowa_strony}} | _1 = Tabela charakteryzujaca dany artykuł, w tym rozdziale. | 2 = {{Code|naglowki}} {{Patrz|naglowki}} | _2 = Parametr uwzględniający, gdy strony na różnych spisach treści na stronie mogą posiadać sobie nagłówki, wtedy jest uwzględniany po nich. | 3 = {{Code|sekcje}} {{Patrz|sekcje}} | _3 = Dla stron robi stronę zbiorczą z artykułów, w której dla pojedynczego takiego liczy je nagłówkami, którymi są poszczególne rozdziały na stronie. | 4 = {{Code|postep}} | _4 = Jak w: {{LinkPatrz|postep-StronaSubstParametr}}, wykorzystywany przez {{LinkŚródtytuł|StronaSubstParametr}}, w celu zamienienia adresu na postęp. | 5 = {{Code|tablica_stron}} {{Patrz|tablica_stron}} | _5 = Tablica zebranych stron przez tą funkcję przekazywana i zwracaną przez nią iteracyjnie, w prztoadku, gdy jest wyłączony parametr nagłówków,aby strony się nie powtarzały. | 6 = {{Code|wikikod}} {{Patrz|wikikod}} | _6 = Wikikod strony tworzony iteracyjnie dla strony zbiorczej dla poszczególnych artykułów książki, nawet tych z nagłówkami. | 7 = {{Code|toc_nowe}} {{Patrz|toc_nowe}} | _7 = Są tutaj liczone pozycje w spisie treści rozważanego artykułu, nawet tych z nagłówkami, w odpowiedni sposób, by wszystkie linki w niej szły do tej samej strony. Jest liczony spis, nawet wtedy, gdy początkowo go tam nie było. | 8 = {{Code|HNumer}} {{Patrz|HNumer}} | _8 = Funkcja zwracana przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}, która służy do liczenia poziomu w strukturze rozdziałów dodatnich równaniowych. | 9 = {{Code|m_roznica}} {{Patrz|m_roznica}} | _9 = Jest to fatyczny poziom rozdziału liczony przez funkcję: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}}. Jest {{ZobaczTeż|m_roznica}} to poziom głównego nagłówka rozdziału, którym jest artykuł. Bez rozdziałów w artykule. | 10 = {{Code|m_uzyskane}} | _10 = Jest to poziom tego: {{Code|m_roznica}} {{LinkPatrz|m_roznica}}, liczony przez: {{Code|HNumer}} {{LinkPatrz|HNumer}}, który oddaje ssens strukturze rozdziałów i w nich artykułów. Podobnie jak dla: {{LinkZobaczTeż|m_roznica}}, ale ten policzony z: {{Code|m_roznica}} {{LinkPatrz|m_roznica}}, co na podstawie tego otrzymujemy właśnie to. Właśnie policzony z te funkcji, bardziej oddaje ssens struktury poziomów rozdziałów niż jego goły surowy odpowiednil }} Przykłady użycia: <syntaxhighlight lang="lua"> if(tab_lista[2])then ... --- ciało przez właściwą pętlą; for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do ... ---- ciało pętli przez tą funkcję; tablica_stron,wikikod,toc_nowe=ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); ... ---- ciało pętli po tej funkcji; end; end; </syntaxhighlight> ==== {{Śródtytuł|PoziomNapisowyWprowadzeniaTekstu}}{{Code|PoziomNapisowyWprowadzeniaTekstu}} ==== Funkcja liczy poziom rozdziału, który może być różnego typu, np. dadatni centrowany lub równaniowy (normalny), a to pierwsze jest znacznikowo lub szablonowo, średnikowy, zerowy albo ujemny. Jeżeli w rozdziale znajduje się artykuł, to jedynie może być to rozdział dodatni niezależnie jaki. Rozdział centrowany jest ważniejszy niż ten dodatni równaniowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy,poziom_rozdzial_ujemny)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista}} {{Patrz|tab_lista}} | _1 = Tabela przedstawiające pozycję rozdziału i i jego artykułów, dla danego rozdziału, do którego należy artykuł. | 2 = {{Code|poziom_rozdzial_centrowany}} | _2 = Poziom rozdziału dodatniego centrowanego, w którym leży dany rozdział. | 3 = {{Code|poziom_rozdzial_dodatni}} | _3 = Poziom rozdziału dodatniego normalnego, w którym leży dany rozdział. | 4 = {{Code|poziom_rozdzial_srednikowy}} | _4 = Poziom rozdziału ujemnego średnikowego (zaczynający się od {{Code|;}}), w którym leży dany rozdział. | 5 = {{Code|poziom_rozdzial_zerowy}} | _5 = Poziom rozdziału zerowego, w którym leży dany rozdział. | 6 = {{Code|poziom_rozdzial_ujemny}} | _6 = Poziom rozdziału ujemnego, w którym leży dany rozdział. }} Przykłady użycia: <syntaxhighlight lang="lua"> local poziom_rozdzial_centrowany=0; local poziom_rozdzial_dodatni=0; local poziom_rozdzial_srednikowy=0; local poziom_rozdzial_zerowy=0; local poziom_rozdzial_ujemny=0; for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do ... ---- ciało pętli przed tą funkcją; local m=PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy,poziom_rozdzial_ujemny); ... ---- ciało pętli po tej funkcji; end; </syntaxhighlight> ==== {{Śródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}}{{Code|PoziomNapisowyWprowadzeniaTekstuArtykularny}} ==== Funkcja liczy poziom artykułu, w którym on leży, może on leżeć w rozdziale dodatnim centrowanym lub równaniowym (normalnym), a to pierwsze może być centrowane znacznikowo lub szablonowo, czy nawet średnikowym, bądź zerowym, a nawet ujemnym, względem jego poziomów rozdziałów różnych typów, w którym leży on. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_centrowanego_dla_strony,liczba_poziomu_dodatniego_dla_strony,liczba_poziomu_srednikowego_dla_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_ujemnego_dla_strony) </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista}} | _1 = Jak w: {{LinkPatrz|tab_lista}}. | 2 = {{Code|m}} | _2 = Poziom rozdziału dodatniego, do której należy artykuł. | 3 = {{Code|tabela_parametrowa_strony}} | _3 = Jak w: {{LinkPatrz|tabela_parametrowa_strony}}. | 4 = {{Code|liczba_poziomu_centrowanego_dla_strony}} | _4 = Poziom centrowany artykułu, w którym on leży. | 5 = {{Code|liczba_poziomu_dodatniego_dla_strony}} | _5 = Poziom dodatni normalny artykułu, w którym on leży. | 6 = {{Code|liczba_poziomu_srednikowego_dla_strony}} | _6 = Poziom srednikowy (ujemny, ale napisany za pomocą początkowego średnika), do której należy dany artykuł. | 7 = {{Code|liczba_poziomu_zerowego_dla_strony}} | _7 = Poziom rozdziału zerowego, do ktorej należy artykuł. | 8 = {{Code|liczba_poziomu_ujemnego_dla_strony}} | _8 = Poziom rozdziału ujemnego, do ktorej należy artykuł. }} Przykłady użycia: <syntaxhighlight lang="lua"> if(tab_lista[2])then local liczba_poziomu_centrowanego_dla_strony=0; local liczba_poziomu_dodatniego_dla_strony=0; local liczba_poziomu_srednikowego_dla_strony=0; local liczba_poziomu_zerowego_dla_strony=0; local liczba_poziomu_ujemnego_dla_strony=0; ... for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do local m_roznica=PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_centrowanego_dla_strony,liczba_poziomu_dodatniego_dla_strony,liczba_poziomu_srednikowego_dla_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_ujemnego_dla_strony); ... ---- Dalsza część ciała danego okrążenia pętli; end; end; </syntaxhighlight> ==== {{Śródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}{{Code|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}} ==== Funkcja liczy wszystkie pozycje artykularne, tzn. wszystkich artyków rozważanego podręcznika, czy to w postaci linków inteligetnych, czy zwykłych linków wewnętrznych, dla danego rozdziału, wykorzystuje do tego celu funkcje: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}} - do liczenia poziomu artykułów, i {{LinkŚródtytuł|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}} - do listowania pojedynczego artykułu, w zależności od podanych w nim zmiennych. Raz liczy rozdział z jego artykułami, i pod nim wraz z ich rozdziałami i poziomami, a za innym razem jako pojedynczy rozdział z tylko jego artykułami, nie rozważając ich zawartości. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista}} | _1 = Jak w: {{LinkPatrz|tab_lista}}. | 2 = {{Code|m}} {{Patrz|m}} | _2 = Jest to poziom napisu wprowadzenia tekstu, w którym leży dany artykuł. | 3 = {{Code|naglowki}} | _3 = Jak w: {{LinkPatrz|naglowki}}. | 4 = {{Code|sekcje}} | _4 = Jak w: {{LinkPatrz|sekcje}}. | 5 = {{Code|HNumer}} | _5 = Jak w: {{LinkPatrz|HNumer}}. | 6 = {{Code|tablica_stron}} | _6 = Jak w: {{LinkPatrz|tablica_stron}}. | 7 = {{Code|wikikod}} | _7 = Jak w: {{LinkPatrz|wikikod}}. | 8 = {{Code|toc_nowe}} | _8 = Jak w: {{LinkPatrz|toc_nowe}}. }} Przykłady użycia: ; Pierwszy dla listowania artukułów danego rozdziału <syntaxhighlight lang="lua"> for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do local rozdzial=tab_lista[1][1]; if(substrona==rozdzial)then if(ktore==licznik_numer_tego_samego_rozdzialu)then ... ---- ciało czści kodu przed; tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,0,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); ... ---- dalsza częśc kodu po; end; end; end; </syntaxhighlight> ; Drugi do listowania artykułów książki <syntaxhighlight lang="lua"> for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do ... ---- ciało pętli przed wywołaniem tej funkcji; tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); ... ---- ciało pętli po wywołaniu tej funkcji; end; </syntaxhighlight> ==== {{Śródtytuł|StronaSubst}}{{Code|StronaSubst}} ==== Funkcja operująca na parametrach szablonu: {{Code|{{s|StronaSubst}}}} {{LinkPatrz|StronaSubst-Szablon}}, na danym artykule, w książce bieżącym lub innym, ale należącym do przestrzeni książkowej, przy pomocy zmiennych nazw, pod warunkiem, gdy mamy argument: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, jest on fałszywy, wtedy zbieramy parametry różnych książek dla strony zbiorczej ustawionej za pomocą parametrów pudełkowych, w innym przypadku parametry strony zbiorczej należącego do aktualnej książki. Też możemy liczyć parametry stron zbiorczych z poziomu innych stron przy pomocy parametrów pudełkowych. W tym przypadku dla aktualnego artykułu, gdy niepodano zmiennych pudełkowych, lub one wskazują na ten artykuł, funkcja sprawdza zmienną: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|StronaSubst}} {{Patrz|StronaSubst-StronaSubst}}, a jeżeli taki artykuł istnieje, to program tej funkcji jest zakańczany. Jeżeli mamy do czynienia z nieaktualnym artykułem, i podano parametry pudełkowe, to funkcja sprawdza też w: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|StronaSubstInne}} {{Patrz|StronaSubstInne-StronaSubst}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno ze zmiennych: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu: {{LinkPatrz|StronaSubst-Szablon}}. | 2 = {{Code|czy_artykul_aktualny}} {{Patrz|czy_artykul_aktualny}} | _2 = Funkcja mówi, że wykorzystujemy artykuł aktualnej książki. | 3 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _3 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} Opis parametrów tablicy: {{LinkPatrz|tabela_parametrow_szablonu}}: {{OpisParametrów | 1 = {{Code|1}} {{Patrz|1-StronaSubst}} | _1 = Artykuł danej książki, bez pełnej nazwy książki. | 2 = {{Code|link}} {{Patrz|link-StronaSubst}} | _2 = Gdy niepusta, wtedy wyświetlany napis w nagłówku jest linkiem, w przeciwny wypadku zwykłym tekstem. | 3 = {{Code|postep}} {{Patrz|postep-StronaSubst}} | _3 = Uruchamia postęp zamiast wyświetlania tekstu linku w postaci pełnego adresu strony, ewentualnie z nagłówkiem, kiedy nagłówek nie jest linkiem do artykułu strony, a gdy jest link według {{LinkPatrz|link-StronaSubst}}, to wtedy tylko wyświetli się postęp. }} Gdy artykuł jest: w wersji: do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}}, lub druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}, to wtedy funkcja zwraca wartość pustą. Funkcja liczy nagłówek ze zmiennej: {{Code|strona}} {{LinkPatrz|1-StronaSubst}}, a następnie ile razy został powtórzony, liczymy to z: {{LinkŚródtytuł|Powtarzane}}. Ten wynik wykorzystujemy, to liczenia spisu treści: {{Code|toc_nowe}} {{LinkPatrz|toc_nowe}}. Wynik dla danego artykułu liczymi z funkcji: {{LinkŚródtytuł|StronaSubstParametr}}, jest to: {{Code|str}} {{Patrz|str}}. On jest zapisywany pod różnymi zmiennymi w tablicach wielowymiarowych, w zależności, czy podan parametry pudełkowe. Dla parametru: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, który jest prawdziwy, wtedy funkcja zbiera dane w tabeli: {{Code|glowna_tablica}} {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną o kluczu: {{Code|StronaSubst}} {{LinkPatrz|StronaSubst-StronaSubst}}, jest tworzona wielowymiarowa zmienna, pod którą jest zapisywany ten wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]=str; </syntaxhighlight> A gdy zmienna: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywa, wtedy dla: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną o kluczu: {{Code|StronaSubstInne}} {{LinkPatrz|StronaSubstInne-StronaSubst}}, jest tworzona wielowymiarowa zmienna, też parametrów nazw książki, pod którą zapisywany jest ten wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][strona][(czy_link and "tak" or "")]=str; </syntaxhighlight> {{Hr}} W obu tworzonych tabelach zależy to od parametru, od wartości zmiennej: {{Code|strona}}, czyli: {{LinkPatrz|1-StronaSubst}}, którą jest nazwą artykułu, a gdy mamy niepustą zmienną: {{Code|link}} {{LinkPatrz|link-StronaSubst}}, wtedy następna zmienna jest ustawiana na: {{Code|tak}}, w przeciwnym wypadku mamy, dla niej, ciąg pusty, a pod: {{Code|str}}, jest ukryta zawartość szablonu {{LinkPatrz|StronaSubst-Szablon}}. ==== KsiążkaSubst ==== Funkcje poniżej wykorzystywane są przez szablon: {{Code|{{s|KsiążkaSubst}}}} {{LinkPatrz|KsiążkaSubst-Szablon}}. Funkcja: {{LinkŚródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, przez niego jest używana na stronie zbiorczej rozdziału, nawet podana za pomocą parametrów pudełkowych, ale też strony zbiorczej, i {{LinkŚródtytuł|AnalizowanieWoluminu}}, jest używana do analizowania całych wszystkich artykułów wraz z rozdziałami spisów książki, na stronie ich zbiorczej, lub podana ta strona jest przy pomocy też tych samych parametriów, ale o innej wartości. ===== {{Śródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}{{Code|AnalizowanieStronyWoluminuWprowadzeniaTekstu}} ===== Funkcja liczy strony zbiorcze dla danego rozdziału, oprócz wersji: do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}}, i druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}. W tym przypadku dla aktualnej książki, gdy niepodano zmiennych pudełkowych, lub one wskazują na ten artykuł, funkcja sprawdza zmienną: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, a jeżeli taki artykuł istnieje, to program tej funkcji jest zakańczany, a jeżeli nie, to sprawdzane jest, czy taki rozdział, któremu symbolizuje artykuł książki, w której leży ten szablon, czy rzeczywiście jest zbiorczy. Jeżeli mamy do czynienia z nieaktualną książką tylko inną, i podano parametry pudełkowe, to funkcja sprawdza też w: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|KsiążkaSubstInneRozdział}} {{Patrz|KsiążkaSubstInneRozdział-AnalizowanieWoluminu}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno ze zmiennych: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę. Jeśli funkcja nie zakończyła przedwcześnie pracy, wtedy ona liczy parametry: {{Code|naglowki}} {{LinkPatrz|naglowki}}, {{Code|sekcje}} {{LinkPatrz|sekcje}} i {{Code|postep}} {{LinkPatrz|postep-StronaSubstParametr}}, {{Code|ktore}} {{Patrz|ktore}}, jeżeli tej zmiennej nie podano, to ona domyślnie przyjmuje wartość {{Code|1}}, z {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. Funkcja liczy numer tego samego rozdziału. Ona wykorzystuje do tego zmienną: {{Code|ktore}} {{LinkPatrz|ktore}}, aby policzyć ten ściśle określony rozdział, by zwrócić wikikod {{LinkPatrz|wikikod}}. Dla aktualnego wyszukanego rozdziału zgodnego z nazwą artykułu jako strona zbiorcza, jeżeli taki istnieje, wtedy funkcja wyświetla jakiolwiek wynik, np. też z artykułami, jeżeli w nim istnieją takie. Funkcja wtedy inicjuje zmienną: {{Code|HNumer}} {{LinkPatrz|HNumer}} jako wynik z {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}, następnie, za pomocą niej, listuje wynik przy pomocy: {{LinkŚródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}, uzyskując w ten sposób wikikod {{LinkPatrz|wikikod}}. Według tej funkcji: cały taki wynik jest to serią znaczników: {{Tag|div|parametry=class="rozdział_książki"}}, a w nich poszczególnych są nagłówki artykułów, i pojedyncze adresy tych stron (czasami jest on ukryty, bo uruchomiony jest parametr postępu) lub ukryte w linku w nagłówku, a w nich one są okrążone: {{Tag|div|parametry=class="strona_subst"}}, którego zawartość jest zamieniana przez {{lpg|JavaScript}} na stronę o tym adresie. Dla parametru: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, który jest prawdziwy - aktualny artykuł, jeśli nie podano parametrów pudełkowych, lub one wskazują na ten artykuł, wtedy funkcja zbiera dane w tabeli: {{Code|glowna_tablica}} {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną o kluczu: {{Code|KsiążkaSubst}} {{Patrz|KsiążkaSubst-AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, jest zapisywany wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod; </syntaxhighlight> A gdy zmienna: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywa - nieaktualny artykuł, parametry pudełkowe już są, wtedy dla: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną: {{Code|KsiążkaSubstInneRozdział}} {{Patrz|KsiążkaSubstInneRozdział-AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, jest tworzona odpowiednia podtablica ze zmiennych nazw książki, a tam w końcu, pod kluczem artykułu, jest zapisywany wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][substrona]=wikikod </syntaxhighlight> Funkcja zwraca w ten sposób uzyskany wikikod {{LinkPatrz|wikikod}} dla całego rozdziału, lub ciąg pusty, jeżeli takiego rozdziału nie znaleziono. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista_artykulow_w_ksiazce}} | _1 = Jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 2 = {{Code|substrona}} | _2 = Jak w: {{LinkPatrz|substrona}}. | 3 = {{Code|tabela_parametrow_szablonu}} | _3 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. | 4 = {{Code|czy_artykul_aktualny}} | _4 = Jak w: {{LinkPatrz|czy_artykul_aktualny}}. | 5 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _5 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} Funkcja jest wykorzystywana w definicji funkcji zwracanej: {{LinkŚródtytuł|FunRozdzial}}. ===== {{Śródtytuł|AnalizowanieWoluminu}}{{Code|AnalizowanieWoluminu}} ===== Funkcja liczy strony zbiorcze dla całej ksiązki, oprócz wersji: do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}}, i druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}. W tym przypadku dla aktualnej książki, gdy nie podano zmiennych pudełkowych, lub one wskazują na ten artykuł, funkcja sprawdza zmienną: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|KsiążkaSubst}} {{Patrz|KsiążkaSubst-AnalizowanieWoluminu}}, a jeżeli taki, już policzony, artykuł istnieje, to program tej funkcji jest zakańczany. Jeżeli nie mamy do czynienia z aktualną książką tylko z inną, i podano parametry pudełkowe, to funkcja sprawdza też w: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|KsiążkaSubstInne}} {{Patrz|KsiążkaSubstInne-AnalizowanieWoluminu}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno zbudowanych ze zmiennych: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę. Jeżeli funkcja przedwcześnie nie zakończyła pracy, wtedy liczy parametry: {{Code|naglowki}} {{LinkPatrz|naglowki}}, {{Code|sekcje}} {{LinkPatrz|sekcje}} i {{LinkPatrz|postep-StronaSubstParametr}}, z {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}, oraz inicjowana jest funkcja: {{Code|HNumer}} {{LinkPatrz|HNumer}}, przy pomocy innej: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. Możliwe jest ze rozdział może nie składać się z żadnych artykułów, czyli funkcja liczy wszystkie rozdziały będące przed danymi artykułami. Ona liczy ich poziom z: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstu}}, tzn. {{Code|m}} {{Patrz|m-AnalizowanieWoluminu}}, aby funkcja poszła dalej w pętli, to ona nie może być poziomem {{LinkPatrz|m-AnalizowanieWoluminu}} równy zero, rozdział równy pustemu łańcuchowi, {{Code|Spis treści}}, {{Code|Bibliografia}}, {{Code|Zobacz też}}, {{Code|Inne}} i {{Code|Licencja}}, co na podstawie tego jest liczony jego numer poziomu z: {{Code|HNumer}} {{LinkPatrz|HNumer}}, tzn. {{Code|m_uzyskane}} {{Patrz|m_uzyskane}}, a następnie rozdział z {{Code|{{sr|#p.NapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, a do niego był wsadzony jako drugi parametr, tzn. tą ostatnią policzoną zmienną. Dalej jest wskazywany, które jest powtórzenie danego rozdziału z {{LinkŚródtytuł|Powtarzane}}, co na tej podstawie, licząc od tego pierwszego takiego rozdziału, co ten numer jest wykorzystywany w tablicy liczączej spis treści, strony zbiorczej, czyli: {{Code|toc_nowe}} {{LinkPatrz|toc_nowe}}. Co potem po wszystkich rozdziałach, nie posiadających w sobie artykułów, lub nie, wtedy liczymy listę artykułów w danym rozdziale, jego wikikod, i zaaktualizowaną wersję:, {{Code|toc_nowe}} {{LinkPatrz|toc_nowe}}, według funkcji: {{LinkŚródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}. Według tej funkcji: cały taki wynik jest otoczony: {{Tag|div|parametry=class="klasa_książki"}}, a w niej są większe rozdziały - one to są rozdziały w spisie, ale nie w artykule, a w niej a te rozdziały wraz artykułami są okrążone: {{Tag|div|parametry=class="klasa_naglowka klasa_nagłówka"}}, a w nich są dla danego rozdziału: a w nich są wszystkie artykuły w nich się znajdujące, którego każda reprezentuje inne: {{Tag|div|parametry=class="rozdział_książki"}}, a w nich poszczególnych są nagłówki artykułów, i pojedyncze adresy tych stron (jeślimamy uruchimiony postęp, to ten adres jest ukryty według: {{Code|display:none;}}) lub w postaci linku w nagłówka, a w nich one są okrążone: {{Tag|div|parametry=class="strona_subst"}}, którego zawartość jest zamieniana przez {{lpg|JavaScript}} na stronę o tym adresie. Dla aktualnej książki wynik jest zapisywany pod zmienną: {{Code|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, jeśli nie podano parametrów pudełkowych, w przeciwnym wypadku pod: {{Code|KsiążkaSubstInne}} {{LinkPatrz|KsiążkaSubstInne-AnalizowanieWoluminu}}. Dla parametru: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, który jest prawdziwy, wtedy funkcja zbiera dane w tabeli: {{Code|glowna_tablica}} {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną o kluczu: {{Code|KsiążkaSubst}} {{Patrz|KsiążkaSubst-StronaSubst}}, jest zapisywany wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod; </syntaxhighlight> A gdy zmienna: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywa, wtedy dla: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną: {{Code|StronaSubstInne}} {{Patrz|KsiążkaSubstInne-StronaSubst}}, jest tworzona ta wielowymiarowa zmienna, pod którą jesst zapisywany wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=wikikod; </syntaxhighlight> Widzimy, że funkcja zwraca w ten sposób uzyskany wikikod {{LinkPatrz|wikikod}} dla całej książki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista_artykulow_w_ksiazce}} | _1 = Jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. | 3 = {{Code|czy_artykul_aktualny}} | _3 = Jak w: {{LinkPatrz|czy_artykul_aktualny}}. | 4 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _4 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} Funkcja jest wykorzystywana w definicji funkcji zwracanej: {{LinkŚródtytuł|TakFun}}. ==== Funkcje analizujące strony zbiorcze lub inne ==== ===== {{Śródtytuł|NieFun}}{{Code|NieFun}} ===== Jest to funkcja zwracająca inną funkcję, która to z kolei zwraca zawsze wartość pustą. Funkcja zwracana jest to funkcja: {{LinkPatrz|NieFun-AnalizaStronaSubst}}, w: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Ta funkcja zwracana przez funkcję w nagłówku jest wykorzystywana wtedy, gdy nie mamy do czynienia z żadną stroną zbiorczą, tylko ze zwykłym artykułem. Definicja poglądowa funkcji: <syntaxhighlight lang="lua"> local NieFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny) return function(parametr) return "";end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu-NieFun}} | _1 = Tabela parametrów szablonu: {{LinkPatrz|KsiążkaSubst-Szablon}}. | 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu-NieFun}} | _2 = Nazwa tego szablonu. | 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow-NieFun}} | _3 = Tabela jego modyfikatorów. | 4 = {{Code|czy_artykul_aktualny}} {{Patrz|czy_artykul_aktualny-NieFun}} | _4 = Czy dotyczy aktualnej książki, dla danego artykułu, na stronie zbiorczej tego woluminu. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Jest to dowolny parametr, w: {{Code|{{ld2|StronicowyParser/StronaSubst}}}}, przyjmuje wartość: {{Code|nil}}. }} ===== {{Śródtytuł|TakFun}}{{Code|TakFun}} ===== Funkcja zwracająca inną funkcję, której wywołanie jest funkcją z: {{LinkPatrz|TakFun-AnalizaStronaSubst}}, w: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Funkcja zwracana zwraca zawsze wartość odpowiadającą wartości logicznej prawdziwej. Tą funkcją zwracaną przez funkcję w nagłówku mamy do czynienia, gdy mamy do czynienia ze stronami zbiorczymi odpowiadzialnymi za stronę o: wersji: do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}}, lub druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}. Definicja pogladowa funkcji: <syntaxhighlight lang="lua"> local TakFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny) return function(tab_lista_artykulow_w_ksiazce,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return "tak"; end; end; </syntaxhighlight> Funkcja wywołuje funkcję: {{LinkŚródtytuł|AnalizowanieWoluminu}}, do analizy woluminu, pojedynczego na stronie zbiorczej, ale nie rozdziałowej, tzn. te jednostki, które nie są zbiorczym obiektem dla stron danego rozdziału. Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu-NieFun}}. | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow-NieFun}}. | 4 = {{Code|czy_artykul_aktualny}} | _4 = Jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tab_lista_artykulow_w_ksiazce}} | _1 = Jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}} | 3 = {{Code|czy_artykul_aktualny}} | _3 = Jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}} | 4 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _4 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} ===== {{Śródtytuł|FunRozdzial}}{{Code|FunRozdzial}} ===== Funkcja zwraca inna funkcję, która jest tym: {{LinkPatrz|FunRozdzial-AnalizaStronaSubst}}, z: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Funkcja zwracana zawsze zwraca wartość odpowiadająca wartości logicznej prawdziwej. Tą funkcję zwracaną przez funkcję w nagłówku używaną, gdy mamy do czynienia, ze stronami zbiorczymi odpowiadzialnymi za rozdziały, która zbiera artykuły danego rozdziału. Definicja poglądowa funkcji: <syntaxhighlight lang="lua"> local FunRozdzial=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny) return function(tab_lista_artykulow_w_ksiazce,substrona,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return "tak"; end; end; </syntaxhighlight> Funkcja wywołuje funkcję: {{LinkŚródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, do analizy woluminu, pojedynczego na stronie zbiorczej, ale rozdziałowej, tzn. te jednostki, które są zbiorczym obiektem dla stron danego rozdziału. Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu-NieFun}}. | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow-NieFun}}. | 4 = {{Code|czy_artykul_aktualny}} | _4 = Jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tab_lista_artykulow_w_ksiazce}} | _1 = Jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 2 = {{Code|substrona}} {{Patrz|substrona}} | _2 = Nazwa artykułu strony zbiorczej rozdziałowej. | 3 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _3 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pd4j7cr27e47u7wcccvd0z56wi1hn39 558492 558491 2026-10-04T09:04:25Z Persino 2851 /* {{Śródtytuł|p.AnalizaStronaSubst}}{{Code|p.AnalizaStronaSubst}} */ 558492 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/StronaSubst}}|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.AnalizaStronaSubst}}{{Code|p.AnalizaStronaSubst}} == Funkcja sprawdzająca, czy dana strona jest strona zbiorczą o nazwie: w wersji do czytania: {{Tt|Wersja do czytania}} {{Patrz|Wersja do czytania}}, o nazwie: {{Code|nazwa artykulu}} {{LinkPatrz|nazwa artykulu}}, równej subnazwie danej książki: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, np. nazwa książki: {{lg|Matematyka dla liceum}}, to ta strona jest wtedy: {{lg|Matematyka dla liceum/Matematyka dla liceum}}, lub wersji do druku: {{Tt|Wersja do druku}} {{Patrz|Wersja do druku}}, jak: {{lg|Matematyka dla liceum/Wersja do druku}}. Funkcja sprawdza, czy dana strona równa nazwie rozdziału, do której należą jakieś artykuły, jest stroną zbiorczą. Aby dana nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu}} była stroną zbiorczą, to nie może być o nazwie: {{Code|Spis treści}}, {{Code|Spis rzeczy}}, {{Code|Bibliografia}} i {{Code|Licencja}}, czyli taką prawidłową stroną, np. jest: {{lg|Matematyka dla liceum/Zaczynamy}}. Gdy dany artykuł, jest nierówny: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}} i {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}, należy do zbioru normalnych artykułów, to wtedy to nie jest na pewno stroną zbiorczą. * Do wskazania, czy to jest strona zbiorcza, używamy tej funkcji, a do liczenia zawartości szablonów: {{Code|{{s|StronaSubst}}}} {{Patrz|StronaSubst-Szablon}} i {{Code|{{s|KsiążkaSubst}}}} {{Patrz|KsiążkaSubst-Szablon}}, wykorzystujemy do tego:{{LinkŚródtytuł|p.LiczOperacjeStronZbiorczych}}, i w niej funkcję nadrzędną: {{LinkŚródtytuł|WoluminSubst}}, która analizuje te dwa typy szablonów, i w zależności od tego uruchamia odpowiednie procedury wykonawcze, a dla tego drugiego szablonu, natomiast jest uruchomiana instrukcja: {{LinkŚródtytuł|p.AnalizaStronaSubst}}, w celu przeanalizowania, czy wskazana strona jest stroną zbiorczą, nawet tą symulowaną, i jakie artykuły należą do tej właśnie strony, i je wypisuje w wywołaniu funkcyjnym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaStronaSubst(tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,pelnanazwastrony,TakFun-AnalizaStronaSubst,NieFun-AnalizaStronaSubst,FunRozdzial-AnalizaStronaSubst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Najważniejsze zmienne: | nagłówek1 = tak | 2 = {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} |_2 = Tablica, która jest wynikiem, jego wartości zwracanej, działania dotycząca modułów: <syntaxhighlight lang="lua"> local stronicowyparser_informacje_modul=mw.loadData("Module:StronicowyParser/informacje"); local tablica_zebranych_danych_woluminowych=stronicowyparser_informacje_modul.tablica_zebranych_danych_woluminowych; </syntaxhighlight> | 3 = {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{Patrz|tab_lista_artykulow_w_ksiazce_spis}} | _3 = Tablica rozdziałów i artykułów oraz o nich informacji, różnych spisów treści należącej do danej książki, ta tablica ma ściśle określoną strukturę omówioną w artykule: {{Code|{{lr2|Moduły/StronicowyParser/SpisTreści}}}}. | 4 = Zmienne potrzebne do zmiany nawigacji na inny niż dany artykuł, czy książkę: | nagłówek4 = tak | 5 = {{Code|pelnanazwastrony}} {{Patrz|pelnanazwastrony}} | _5 = Jest to nazwa jednostki z przestrzenią nazw, ona jest wykorzystywana w parametrach pudełkowych: {{Code|{{m|Pudełko}}}}, modułu {{Code|{{ld|StronicowyParser|Stronicowego Parsera}}}}. | 6 = Funkcje: | nagłówek6 = tak | 7 = {{Code|TakFun}} {{Patrz|TakFun-AnalizaStronaSubst}} | _7 = Ona (musi być zdefiniowana) jest używana, gdy dana strona jest stroną zbiorczą, ale zwykle nierozdziałową. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> czy_tak=TakFun(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); </syntaxhighlight> | 8 = {{Code|NieFun}} {{Patrz|NieFun-AnalizaStronaSubst}} | _8 = Ona (musi być zdefiniowana) jest używana, gdy dana strona nie jest stroną zbiorczą, ale jest artykułem spisu, też w wypadku, gdy strona nie ma artykułów spisu, bo nie jest książką, tylko np. stronami w innej przestrzeni, czy niby-przestrzeni, niż książkowa. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> czy_tak= NieFun(parametr); </syntaxhighlight> | 9 = {{Code|FunRozdzial}} {{Patrz|FunRozdzial-AnalizaStronaSubst}} | _9 = Ona (funkcja opcjonalna, w przeciwnym wypadku jest wykorzystywane: {{LinkPatrz|TakFun-AnalizaStronaSubst}}) jest używana, gdy dana strona jest zbiorczą, ale rozdziałową, równą nazwie rozdziału. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> czy_tak=FunRozdzial(tab_lista_artykulow_w_ksiazce_spis,nazwa_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); </syntaxhighlight> | 10 = Zmienne nazw {{Patrz|ZMIENNE_NAZWOWE}}: | nagłówek10 = tak | 11 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}} | _11 = Nazwa przestrzeni nazw, do której należy dany artykuł, czy książka, do której on należy. | 12 = {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} | _12 = Mazwa przestrzeni książki, do której należy dana książka. | 13 = {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _13 = Subnazwa książki, do której należą jej artykuły. | 14 = {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} | _14 = Nazwa artykułu danej książki, bez pełnej nazwy książki. }} A gdy parametr: {{Code|pelnanazwastrony}} {{LinkPatrz|pelnanazwastrony}}, istnieje {{Patrz|pelnanazwastrony-istnieje}}, lub parametry: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, lub {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu}}, nie istnieją, wtedy są uzyskiwane parametry pudełkowe, co na tej podstawie, gdy pełna nazwa strony: {{Code|pelnanazwastrony}} {{LinkPatrz|pelnanazwastrony}}, istnieje {{LinkPatrz|pelnanazwastrony-istnieje}}, lub {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}, nie istnieje {{Patrz|tab_lista_artykulow_w_ksiazce_spis-nie-istnieje}}, to są liczone parametry strony z tego, a jeżeli wtedy strona nadal nie ma artykułów, to funkcja jest zatrzymywana, bo np. to ta nibyże książka nie może mieć strony zbiorczej, przeciwnym wypadku otrzymywane są parametry: {{LinkPatrz|ZMIENNE_NAZWOWE}}. A gdy warunki: {{LinkPatrz|pelnanazwastrony-istnieje}} i {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis-nie-istnieje}}, nie są spełnione, to dane są uzyskiwane bezpośrednio z tabeli: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, tzn.: {{LinkPatrz|ZMIENNE_NAZWOWE}}. A jeżeli ten pierwszy warunek nie jest spełniony, to są liczone parametry z: {{LinkPatrz|ZMIENNE_NAZWOWE}}, uzyskiwany jest z niego spis rozdziałów i do nich artykułów, w zmiennej: {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}, a jeżeli strona nie może mieć spisu, to funkcja jest zatrzymawana. Jeżeli spis strony jednak istnieje po policzeniu, lub nie (wtedy to jest parametrem tej funkcji), wtedy funkcja sprawdza, czy nazwa przestrzeni nazw {{LinkPatrz|nazwa_przestrzeni}} jest: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, lub {{Np|Wikibooks|link=tak}} w niby-przestrzeni nazw: {{lr2|Brudnopis}} z: {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, albo {{Np|User|link=tak}} (ale nie strona główna użytkownka, ale inne strony w tej przestrzeni, co jest policzone z: {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}). A jeżeli któraś z tych parametrów jest spełnione, wtedy jest sprawdzane, czy artykuł: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu}}, czy jest artykułem książki, co w przypadku stron zbiorczych rozdziałowych jest anulowany status strony zbiorczej, a w przypadku innym ta strona jest jednak stroną zbiorczą. A w innym wypadku, gdy to nie jest ta rozdziałowa, to jest sprawdzane, czy to jest strona zbiorcza. == {{Śródtytuł|p.LiczOperacjeStronZbiorczych}}{{Code|p.LiczOperacjeStronZbiorczych}} == Tutaj jest zawarty opis tej funkcji i podfunkcji lokalnych dostępne tylko w niej, a nie gdzie indziej. === Opis funkcji === Gdy strona jest stroną zbiorczą, strona musi być w przestrzeni książkowej, lub gdy parametry pudełkowe: {{Code|{{m|Pudełko}}}}, wskazują na nią, to w przeciwnym wypadku parametry stron zbiorczych nie są liczone i nie są ustawiane, normalnie są liczone, za pomocą wywołań szablonowych: {{Code|{{s|StronaSubst}}}} {{LinkPatrz|StronaSubst-Szablon}} - gdy jest liczony pojedynczy artykuł, {{Code|{{s|KsiążkaSubst}}}} {{LinkPatrz|KsiążkaSubst-Szablon}} - gdy liczymy całą stronę zbiorczą ze wszystkich stron z jakich składa się książka, oprócz artykułów, różnych stron zbiorczych. Ten pierwszy wywołujemy zawsze z parametrami liczonej strony (artykułu książki), a to drugie nie wywołujemy zwykle z parametrami, po prostu wywołanie jest prawie zawsze bezparametrowe. Te szablony umieszczamy na stronie zbiorczej lub symulowanej stronie zbiorczej, za pomocą szablonu {{s|Podręcznik}}, zobacz też zbiór szablonów ustawień {{Code|config}}, tego szablonu, tzn: {{s|Podręcznik/Ustawienia/}} {{Patrz|Podręcznik/Ustawienia/}}, co jest uwarunkowane wewnętrznym kodem w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}, w funkcji: {{Code|{{sr|#p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi|p=StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}. Przykład ustawień {{LinkPatrz|Podręcznik/Ustawienia/}} symulowanej strony zbiorczej możemy znaleźć na stronie: {{Code|{{ls2|Podręcznik/Ustawienia/Szablon:StronaSubst/config}}}} (szablonu {{LinkPatrz|StronaSubst-Szablon}}) lub {{Code|{{ls2|Podręcznik/Ustawienia/Szablon:KsiążkaSubst/config}}}} (szablonu {{LinkPatrz|KsiążkaSubst-Szablon}}). Funkcja wykorzystuje jako podstawę do działania procedurę zwracajace jakieś parametry: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LiczOperacjeStronZbiorczych(glowna_tablica,tekst_rozwiniety_calego_artykulu,spis,nazwa_modulu_strony,nazwa_modulu_strony_szablonowa,tablica_obiektow_strony_dany_modul_strony,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|glowna_tablica}} {{Patrz|glowna_tablica}} | _1 = Zmienna taka jak: {{Code|self}}, jest to zmienna obiektowa, co ona pozwala uruchomić tę funkcję bez tego parametru, jeżeli napiszemy wywołanie tej funkcji nie z: {{Code|.}}, tylko z: {{Code|:}}, wtedy jest brany obiekt z aktualnej tablicy, dzięki któremu liczymy pewne parametry, ten przed dwukropkiem. | 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Tekst zakodowany całej strony. | 3 = {{Code|spis}} {{Patrz|spis}} | _3 = Jest to spis rozdziałów i jego artykułów, jest to zmienna, taka jak: {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 4 = {{Code|nazwa_modulu_strony}} {{Patrz|nazwa_modulu_strony}} | _4 = Uchwyt bazy danych {{Code|{{m|Szablonowe}}}}, używany zamiast: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}. | 5 = {{Code|nazwa_modulu_strony_szablonowa}} {{Patrz|nazwa_modulu_strony_szablonowa}} | _5 = Nazwa strony w wersji szablonowej, czyli szablony pisane jakby były w przestrzeni głównej, a strony w tej przestrzeni nazw są pisane z dwukropkiem na początku. | 6 = {{Code|tablica_obiektow_strony_dany_modul_strony}} {{Patrz|tablica_obiektow_strony_dany_modul_strony}} | _6 = Gdy nie podano zmiennej: {{Code|nazwa_modulu_strony}}, wtedy jest używana ta zmienna, jest to zmienna bazy danych, tej samej bazy, co dotyczy: {{LinkPatrz|nazwa_modulu_strony}}. | 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _7 = Zmienna, w której są zawarte rozkładania parametrów tabeli bazy danych: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}, na czynniki pierwsze, aby znów tego nie robił, gdy pierwszy raz badamy jakiś element jej, to rozłożenie jest umieszczane w tej właśnie tabeli, a za drugim lub trzecim razem, itd., tego nie robić, aby w ten sposób można przyszybszyć '''{{ld|StronicowyParser|Stronicowy parser}}'''. }} Funkcja ma w swoje definicji bezpośrednio zmienne: {{Code|toc_nowe}} do tworzenia spisu treści, którą zapisujemy pod zmienną: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}} w podtablicy {{Code|TOC_StronaZbiorcza}} {{Patrz|TOC_StronaZbiorcza}}. Również ona używa funkcji: {{LinkŚródtytuł|Powtarzane}}, tzn. {{LinkPatrz|tab_powtarzane}}, do liczenia, ile razy dany rozdział się powtarza, w celu policzenia unikalnych identyfikatorów do nich, aby można było się do nich odwołać za pomocą linków wewnętrznych linkujących do bieżącej, lub nie, strony. === Funkcje lokalne === ==== {{Śródtytuł|Powtarzane}}{{Code|Powtarzane}} ==== Funkcja, którego parametrem jest rozdział. Liczy numer takiego samego rozdziału. Do swojego działania funkcja wykorzystuje tabelę {{Code|tab_powtarzane}} {{Patrz|tab_powtarzane}} zdefiniowanej w funkcji: {{LinkŚródtytuł|p.LiczOperacjeStronZbiorczych}}, aby uzyskać unikalność danego nagłówka, tworząc kolejne pozycje spisu treści na stronie zbiorczej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Powtarzane(rozdzial)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Podany rozdzial spisu treści lub podanego rozdzialu w artykułach, w zależności od sytuacji, w której uruchomiono tą zmienną. }} Przykład użycia: <syntaxhighlight lang="lua"> local liczba_powtarzanego=Powtarzane(naglowek); </syntaxhighlight> ==== {{Śródtytuł|CzyStronaSubst}}{{Code|CzyStronaSubst}} ==== Funkcja sprawdzająca, czy składowa tabeli: {{Code|glowna_tablica}} {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a później jego podelement: {{Code|CzyStronaSubst}} {{Patrz|CzyStronaSubst}}, czy nie istnieje, a jeżeli tak, to ustaw jego wartość na: {{Code|tak}}. Zmienna mówi, że strona została przeanalizowana parserem strony zbiorczej, dlatego jest ustawiana właśnie ta zmienna, i że to jest strona zbiorcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyStronaSubst()...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Brak parametrów. | komórka1 = 1 }} Przykład analizy funkcji, podając je właściwie ciało: <syntaxhighlight lang="lua"> if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"])then glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; </syntaxhighlight> ==== {{Śródtytuł|WoluminSubst}}{{Code|WoluminSubst}} ==== Funkcja wyszukuje w zakodowanym tekście szablony: {{s|StronaSubst}} {{LinkPatrz|StronaSubst-Szablon}} i {{s|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-Szablon}}, przy pomocy: {{Code|tablica_obiektow_strony_dany_modul_strony}} {{linkPatrz|tablica_obiektow_strony_dany_modul_strony}}, wywołując dla nich odpowiednie kolejno funkcje: {{Code|StronaSubst}} {{LinkPatrz|StronaSubst-WoluminSubst}} i {{Code|KsiążkaSubst}} {{LinkPatrz|KsiazkaSubst-WoluminSubst}}. * To jest główna funkcja w: {{LinkŚródtytuł|p.LiczOperacjeStronZbiorczych}}, od której liczymy szablony stron zbiorczych. I całą historię tego liczenia od tego zaczynamy, w przypadku całościowego liczenia takich stron na stronie zbiorczej, funkcja wykorzystuje do tego celu: {{LinkŚródtytuł|p.AnalizaStronaSubst}}, a do części szczególnej, dla jednego artykułu, używa do tego: {{LinkŚródtytuł|StronaSubst}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,nazwa_modulu_strony_szablonowa,tablica_obiektow_strony_dany_modul_strony,StronaSubst,KsiazkaSubst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Jest to przeszukiwany tekst, w celu wyszukania szablonów: {{s|StronaSubst}} i {{s|KsiążkaSubst}}. | 2 = {{Code|nazwa_modulu_strony}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_strony}}. Jest to uchwyt bazy kodowania zamiast używania zmiennej: {{Code|tablica_obiektow_strony_dany_modul_strony}} {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}. | 3 = {{Code|nazwa_modulu_strony_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_strony_szablonowa}}. To nazwa w wersji szablonowej, by napisać nazwę szablonu tak, by w ten sposób odnaleźć szablony: {{s|StronaSubst}} i {{s|KsiążkaSubst}}, by je w odpowiedni sposób obsłużyć. | 4 = {{Code|tablica_obiektow_strony_dany_modul_strony}} {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}} | _4 = Jak w: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}. Jeśli jest nienilowe, to używamy zamiast: {{Code|nazwa_modulu_strony}} {{LinkPatrz|nazwa_modulu_strony}}. | 5 = {{Code|StronaSubst}} {{Patrz|StronaSubst-WoluminSubst}} | _5 = Funkcja wywoływana, gdy napotkano szablon: {{s|StronaSubst}} {{LinkPatrz|StronaSubst-Szablon}}. | 6 = {{Code|KsiazkaSubst}} {{Patrz|KsiazkaSubst-WoluminSubst}} | _6 = Funkcja wywoływana, gdy napotkano szablon: {{s|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-Szablon}}. }} Przykłady wykorzystania: <syntaxhighlight lang="lua"> WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,nazwa_modulu_strony_szablonowa,tablica_obiektow_strony_dany_modul_strony, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ... StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ... p.AnalizaStronaSubst(glowna_tablica.tabela_listy_danych_analizy_ksiazki,spis_artykulow,pelnanazwastrony,TakFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),NieFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),FunRozdzial(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)); end ); </syntaxhighlight> Funkcja wykorzystuje pierwszą funkcję, wywołując inną funkcję: {{LinkŚródtytuł|StronaSubst}}, a druga funkcję: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. ==== {{Śródtytuł|StronaSubstParametr}}{{Code|StronaSubstParametr}} ==== Funkcja liczy łańcuch znakowy odpowiadający pojedynczemu wywołaniu, dotyczący danego rozdziału strony zbiorczej, czyli dla pojedynczego wywołania szablonu: {{LinkPatrz|StronaSubst-Szablon}}, lub dla pojedynczego artykułu z wielu generowanych przez szablon: {{LinkPatrz|KsiążkaSubst-Szablon}}. Szablon tworzy rozdział w postaci linku do artykułu, wtedy w nagłówku nie jest podawany adres pełny artykułu, tylko nazwa tego linku jest równa podanej nazwie nagłówka, chociaż adres jest pełną nazwą książki, wtedy w tekście w znaczniku nie jest podawany wcale żaden artykuł, ani w ogóle tekst, a jeżeli ona nie jest linkiem, to nagłówek i jego rozdział jest w postaci tekstu, wtedy w tekście rozdziału jest podawany pełny adres artykułu, a jeżeli, mamy włączony postęp, wtedy to jest ukryte właściwością '''{{lpg|CSS}}''': {{Code|display:none}}. Rozdział jest pod elementem {{Tag|div|parametry=style="display:block;" class="rozdział_książki"}}, o odpowiednim poziomie, gdy poziom jest {{Code|nil}}, to wtedy przyjmuje on domyślną wartość {{Code|1}}, tworzonym przez funkcję: {{Code|{{sr|#p.NapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Następnym elementem jest postęp, pod warunkiem, jeżeli ustawiono zmienną: {{Code|postep}}, a dalej w osobnym {{ZobaczTeż|strona_subst}}: {{Tag|div|parametry=class="strona_subst"}}, jest zawartość rozdziału w postaci naszego adresu, lub w postaci wartości pustej, gdy rozdział jest linkiem, wtedy zmienna: {{Code|link}} {{LinkPatrz|link-StronaSubstParametr}}, jest niepusta, według ustawień funkcji: {{LinkŚródtytuł|StronaSubst}}, a więc tak się dzieke również w przypadku szablonu: {{s|StronaSubst}} {{LinkPatrz|StronaSubst-Szablon}}, gdy ta funkcja została wywołana przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function StronaSubstParametr(strona,naglowek_strony,link,p,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|strona}} {{Patrz|strona-StronaSubstParametr}} | _1 = Jak w: {{LinkPatrz|1-StronaSubst}} - jest to nazwa artykułu, który wraz z pozostałymi wartościami nazw książki, tworzy pełny adres, który mieści się na stronie w odpowiedniej sekcji w: {{LinkZobaczTeż|strona_subst}}, a jeżeli zmienna: {{Code|postęp}} {{LinkPatrz|postep-StronaSubstParametr}}, jest niepusta, wtedy ten rozdział jest ukryty, przeciwnie już nie. Ten adres może mieścić się w linku w nagłówku, w przypadku podania {{Code|link}} {{LinkPatrz|link-StronaSubstParametr}}. a ten znacznik podany tutaj jest wtedy pusty. | 2 = {{Code|naglowek_strony}} {{Patrz|naglowek_strony-StronaSubstParametr}} | _2 = Nagłówek strony tworzony z pełnego adresu strony, który jest podstroną wraz z nagłówkiem. | 3 = {{Code|link}} {{Patrz|link-StronaSubstParametr}} | _3 = Jak w: {{LinkPatrz|link-StronaSubst}}, tylko ta zmienna jest w postaci logicznej, jak ta ostatnia jest niepusta, wtedy ta zmienna odpowiada wartości logicznej prawda, w przeciwnym wypadku mamy fałsz. Wtedy nagłówek jest linkiem, a zawartość znacznika: {{LinkZobaczTeż|strona_subst}}, jest pusta. | 4 = {{Code|p}} {{Patrz|p-StronaSubstParametr}} | _4 = Poziom tworzonego nagłówka rozdziału dodatniego równaniowego, jeżeli {{Code|p {{=}} nil}}, wtedy domyślny poziom jest 1, ten poziom jest liczba calkowitą dodatnią. To odpowiada pewnej liczbie równa się po obu jego stronach nagłówka: {{Code|naglowek_strony}} {{LinkPatrz|naglowek_strony-StronaSubstParametr}}. | 5 = {{Code|postep}} {{Patrz|postep-StronaSubstParametr}} | _5 = Jak w: {{LinkPatrz|postep-StronaSubst}}, z wartością logiczną, jak u w: {{LinkPatrz|link-StronaSubstParametr}}. | 6 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _6 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. Nazwy potrzebne do strorzenia pełnej nazwy adtesu strony, która mieści się w atrybucie adresu w linku w sekcji, lub w znaczniku: {{LinkPatrz|link-StronaSubst}}, w zależności od podanego parametru: {{Code|link}} {{LinkPatrz|link-StronaSubstParametr}}. }} ==== {{Śródtytuł|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}}{{Code|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}} ==== Funkcja liczy pojedynczą pozycję dla artykułu, na stronie zbiorczej, przy wywołaniu szablonu {{LinkPatrz|KsiążkaSubst-Szablon}}. Nie liczy tylko strony typu: wersji: wersji do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}} i wersji do druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}, i ich nie rozwaza w zbiorze artykułów,. Gdy nie jest włączony parametr sekcji, ale też jest wyłączony parametr naglówków, to wtedy strona nie uwzględnia, że strony mogą się powtarzać, w przeciwnym wypadku, dalsze repetowane strony są nie uwzględniane, bo np. strony mogą być z nagłówkami w spisie treści, więc w tym przypadku ma sens używać ten parametr. Gdy na stronie jest włączony parametr sekcji, to dla nazw strony niepowtarzających się, liczy stronę w postaci listy tej samej nazwy strony z jego nagłówkami, tzn. po: {{Code|#}}. Funkcja wykorzystuje do liczenia pojedynczej pozycji artykularnej, a w przypadku włączonej sekcji, również te z nagłówkiem, aby policzyć pozycję adresową dla tekstu rozdziału, tzn. używa do tego: {{LinkŚródtytuł|StronaSubstParametr}}. Fukcja do powtarzanych nagłówków na stronie wykorzystuje funkcję: {{LinkŚródtytuł|Powtarzane}}. Funkcję wywołuje się w pętli aż do granicy dojścia do ostatniego artykułu w rozdziale, czy książce, to zależy w jakiej stronie szablon: {{s|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-Szablon}}, się znalazł, czy to w artykule przyprządkowanym danemu rozdziałowi, która jest w tym przypadku stroną zbiorczą, ale nie zawsze, czy innym, czyli normalną stroną zbiorczą, czy to w wersji do czytania, czy druku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrowa_strony}} {{Patrz|tabela_parametrowa_strony}} | _1 = Tabela charakteryzujaca dany artykuł, w tym rozdziale. | 2 = {{Code|naglowki}} {{Patrz|naglowki}} | _2 = Parametr uwzględniający, gdy strony na różnych spisach treści na stronie mogą posiadać sobie nagłówki, wtedy jest uwzględniany po nich. | 3 = {{Code|sekcje}} {{Patrz|sekcje}} | _3 = Dla stron robi stronę zbiorczą z artykułów, w której dla pojedynczego takiego liczy je nagłówkami, którymi są poszczególne rozdziały na stronie. | 4 = {{Code|postep}} | _4 = Jak w: {{LinkPatrz|postep-StronaSubstParametr}}, wykorzystywany przez {{LinkŚródtytuł|StronaSubstParametr}}, w celu zamienienia adresu na postęp. | 5 = {{Code|tablica_stron}} {{Patrz|tablica_stron}} | _5 = Tablica zebranych stron przez tą funkcję przekazywana i zwracaną przez nią iteracyjnie, w prztoadku, gdy jest wyłączony parametr nagłówków,aby strony się nie powtarzały. | 6 = {{Code|wikikod}} {{Patrz|wikikod}} | _6 = Wikikod strony tworzony iteracyjnie dla strony zbiorczej dla poszczególnych artykułów książki, nawet tych z nagłówkami. | 7 = {{Code|toc_nowe}} {{Patrz|toc_nowe}} | _7 = Są tutaj liczone pozycje w spisie treści rozważanego artykułu, nawet tych z nagłówkami, w odpowiedni sposób, by wszystkie linki w niej szły do tej samej strony. Jest liczony spis, nawet wtedy, gdy początkowo go tam nie było. | 8 = {{Code|HNumer}} {{Patrz|HNumer}} | _8 = Funkcja zwracana przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}, która służy do liczenia poziomu w strukturze rozdziałów dodatnich równaniowych. | 9 = {{Code|m_roznica}} {{Patrz|m_roznica}} | _9 = Jest to fatyczny poziom rozdziału liczony przez funkcję: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}}. Jest {{ZobaczTeż|m_roznica}} to poziom głównego nagłówka rozdziału, którym jest artykuł. Bez rozdziałów w artykule. | 10 = {{Code|m_uzyskane}} | _10 = Jest to poziom tego: {{Code|m_roznica}} {{LinkPatrz|m_roznica}}, liczony przez: {{Code|HNumer}} {{LinkPatrz|HNumer}}, który oddaje ssens strukturze rozdziałów i w nich artykułów. Podobnie jak dla: {{LinkZobaczTeż|m_roznica}}, ale ten policzony z: {{Code|m_roznica}} {{LinkPatrz|m_roznica}}, co na podstawie tego otrzymujemy właśnie to. Właśnie policzony z te funkcji, bardziej oddaje ssens struktury poziomów rozdziałów niż jego goły surowy odpowiednil }} Przykłady użycia: <syntaxhighlight lang="lua"> if(tab_lista[2])then ... --- ciało przez właściwą pętlą; for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do ... ---- ciało pętli przez tą funkcję; tablica_stron,wikikod,toc_nowe=ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); ... ---- ciało pętli po tej funkcji; end; end; </syntaxhighlight> ==== {{Śródtytuł|PoziomNapisowyWprowadzeniaTekstu}}{{Code|PoziomNapisowyWprowadzeniaTekstu}} ==== Funkcja liczy poziom rozdziału, który może być różnego typu, np. dadatni centrowany lub równaniowy (normalny), a to pierwsze jest znacznikowo lub szablonowo, średnikowy, zerowy albo ujemny. Jeżeli w rozdziale znajduje się artykuł, to jedynie może być to rozdział dodatni niezależnie jaki. Rozdział centrowany jest ważniejszy niż ten dodatni równaniowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy,poziom_rozdzial_ujemny)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista}} {{Patrz|tab_lista}} | _1 = Tabela przedstawiające pozycję rozdziału i i jego artykułów, dla danego rozdziału, do którego należy artykuł. | 2 = {{Code|poziom_rozdzial_centrowany}} | _2 = Poziom rozdziału dodatniego centrowanego, w którym leży dany rozdział. | 3 = {{Code|poziom_rozdzial_dodatni}} | _3 = Poziom rozdziału dodatniego normalnego, w którym leży dany rozdział. | 4 = {{Code|poziom_rozdzial_srednikowy}} | _4 = Poziom rozdziału ujemnego średnikowego (zaczynający się od {{Code|;}}), w którym leży dany rozdział. | 5 = {{Code|poziom_rozdzial_zerowy}} | _5 = Poziom rozdziału zerowego, w którym leży dany rozdział. | 6 = {{Code|poziom_rozdzial_ujemny}} | _6 = Poziom rozdziału ujemnego, w którym leży dany rozdział. }} Przykłady użycia: <syntaxhighlight lang="lua"> local poziom_rozdzial_centrowany=0; local poziom_rozdzial_dodatni=0; local poziom_rozdzial_srednikowy=0; local poziom_rozdzial_zerowy=0; local poziom_rozdzial_ujemny=0; for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do ... ---- ciało pętli przed tą funkcją; local m=PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy,poziom_rozdzial_ujemny); ... ---- ciało pętli po tej funkcji; end; </syntaxhighlight> ==== {{Śródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}}{{Code|PoziomNapisowyWprowadzeniaTekstuArtykularny}} ==== Funkcja liczy poziom artykułu, w którym on leży, może on leżeć w rozdziale dodatnim centrowanym lub równaniowym (normalnym), a to pierwsze może być centrowane znacznikowo lub szablonowo, czy nawet średnikowym, bądź zerowym, a nawet ujemnym, względem jego poziomów rozdziałów różnych typów, w którym leży on. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_centrowanego_dla_strony,liczba_poziomu_dodatniego_dla_strony,liczba_poziomu_srednikowego_dla_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_ujemnego_dla_strony) </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista}} | _1 = Jak w: {{LinkPatrz|tab_lista}}. | 2 = {{Code|m}} | _2 = Poziom rozdziału dodatniego, do której należy artykuł. | 3 = {{Code|tabela_parametrowa_strony}} | _3 = Jak w: {{LinkPatrz|tabela_parametrowa_strony}}. | 4 = {{Code|liczba_poziomu_centrowanego_dla_strony}} | _4 = Poziom centrowany artykułu, w którym on leży. | 5 = {{Code|liczba_poziomu_dodatniego_dla_strony}} | _5 = Poziom dodatni normalny artykułu, w którym on leży. | 6 = {{Code|liczba_poziomu_srednikowego_dla_strony}} | _6 = Poziom srednikowy (ujemny, ale napisany za pomocą początkowego średnika), do której należy dany artykuł. | 7 = {{Code|liczba_poziomu_zerowego_dla_strony}} | _7 = Poziom rozdziału zerowego, do ktorej należy artykuł. | 8 = {{Code|liczba_poziomu_ujemnego_dla_strony}} | _8 = Poziom rozdziału ujemnego, do ktorej należy artykuł. }} Przykłady użycia: <syntaxhighlight lang="lua"> if(tab_lista[2])then local liczba_poziomu_centrowanego_dla_strony=0; local liczba_poziomu_dodatniego_dla_strony=0; local liczba_poziomu_srednikowego_dla_strony=0; local liczba_poziomu_zerowego_dla_strony=0; local liczba_poziomu_ujemnego_dla_strony=0; ... for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do local m_roznica=PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_centrowanego_dla_strony,liczba_poziomu_dodatniego_dla_strony,liczba_poziomu_srednikowego_dla_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_ujemnego_dla_strony); ... ---- Dalsza część ciała danego okrążenia pętli; end; end; </syntaxhighlight> ==== {{Śródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}{{Code|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}} ==== Funkcja liczy wszystkie pozycje artykularne, tzn. wszystkich artyków rozważanego podręcznika, czy to w postaci linków inteligetnych, czy zwykłych linków wewnętrznych, dla danego rozdziału, wykorzystuje do tego celu funkcje: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}} - do liczenia poziomu artykułów, i {{LinkŚródtytuł|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}} - do listowania pojedynczego artykułu, w zależności od podanych w nim zmiennych. Raz liczy rozdział z jego artykułami, i pod nim wraz z ich rozdziałami i poziomami, a za innym razem jako pojedynczy rozdział z tylko jego artykułami, nie rozważając ich zawartości. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista}} | _1 = Jak w: {{LinkPatrz|tab_lista}}. | 2 = {{Code|m}} {{Patrz|m}} | _2 = Jest to poziom napisu wprowadzenia tekstu, w którym leży dany artykuł. | 3 = {{Code|naglowki}} | _3 = Jak w: {{LinkPatrz|naglowki}}. | 4 = {{Code|sekcje}} | _4 = Jak w: {{LinkPatrz|sekcje}}. | 5 = {{Code|HNumer}} | _5 = Jak w: {{LinkPatrz|HNumer}}. | 6 = {{Code|tablica_stron}} | _6 = Jak w: {{LinkPatrz|tablica_stron}}. | 7 = {{Code|wikikod}} | _7 = Jak w: {{LinkPatrz|wikikod}}. | 8 = {{Code|toc_nowe}} | _8 = Jak w: {{LinkPatrz|toc_nowe}}. }} Przykłady użycia: ; Pierwszy dla listowania artukułów danego rozdziału <syntaxhighlight lang="lua"> for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do local rozdzial=tab_lista[1][1]; if(substrona==rozdzial)then if(ktore==licznik_numer_tego_samego_rozdzialu)then ... ---- ciało czści kodu przed; tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,0,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); ... ---- dalsza częśc kodu po; end; end; end; </syntaxhighlight> ; Drugi do listowania artykułów książki <syntaxhighlight lang="lua"> for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do ... ---- ciało pętli przed wywołaniem tej funkcji; tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); ... ---- ciało pętli po wywołaniu tej funkcji; end; </syntaxhighlight> ==== {{Śródtytuł|StronaSubst}}{{Code|StronaSubst}} ==== Funkcja operująca na parametrach szablonu: {{Code|{{s|StronaSubst}}}} {{LinkPatrz|StronaSubst-Szablon}}, na danym artykule, w książce bieżącym lub innym, ale należącym do przestrzeni książkowej, przy pomocy zmiennych nazw, pod warunkiem, gdy mamy argument: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, jest on fałszywy, wtedy zbieramy parametry różnych książek dla strony zbiorczej ustawionej za pomocą parametrów pudełkowych, w innym przypadku parametry strony zbiorczej należącego do aktualnej książki. Też możemy liczyć parametry stron zbiorczych z poziomu innych stron przy pomocy parametrów pudełkowych. W tym przypadku dla aktualnego artykułu, gdy niepodano zmiennych pudełkowych, lub one wskazują na ten artykuł, funkcja sprawdza zmienną: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|StronaSubst}} {{Patrz|StronaSubst-StronaSubst}}, a jeżeli taki artykuł istnieje, to program tej funkcji jest zakańczany. Jeżeli mamy do czynienia z nieaktualnym artykułem, i podano parametry pudełkowe, to funkcja sprawdza też w: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|StronaSubstInne}} {{Patrz|StronaSubstInne-StronaSubst}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno ze zmiennych: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu: {{LinkPatrz|StronaSubst-Szablon}}. | 2 = {{Code|czy_artykul_aktualny}} {{Patrz|czy_artykul_aktualny}} | _2 = Funkcja mówi, że wykorzystujemy artykuł aktualnej książki. | 3 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _3 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} Opis parametrów tablicy: {{LinkPatrz|tabela_parametrow_szablonu}}: {{OpisParametrów | 1 = {{Code|1}} {{Patrz|1-StronaSubst}} | _1 = Artykuł danej książki, bez pełnej nazwy książki. | 2 = {{Code|link}} {{Patrz|link-StronaSubst}} | _2 = Gdy niepusta, wtedy wyświetlany napis w nagłówku jest linkiem, w przeciwny wypadku zwykłym tekstem. | 3 = {{Code|postep}} {{Patrz|postep-StronaSubst}} | _3 = Uruchamia postęp zamiast wyświetlania tekstu linku w postaci pełnego adresu strony, ewentualnie z nagłówkiem, kiedy nagłówek nie jest linkiem do artykułu strony, a gdy jest link według {{LinkPatrz|link-StronaSubst}}, to wtedy tylko wyświetli się postęp. }} Gdy artykuł jest: w wersji: do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}}, lub druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}, to wtedy funkcja zwraca wartość pustą. Funkcja liczy nagłówek ze zmiennej: {{Code|strona}} {{LinkPatrz|1-StronaSubst}}, a następnie ile razy został powtórzony, liczymy to z: {{LinkŚródtytuł|Powtarzane}}. Ten wynik wykorzystujemy, to liczenia spisu treści: {{Code|toc_nowe}} {{LinkPatrz|toc_nowe}}. Wynik dla danego artykułu liczymi z funkcji: {{LinkŚródtytuł|StronaSubstParametr}}, jest to: {{Code|str}} {{Patrz|str}}. On jest zapisywany pod różnymi zmiennymi w tablicach wielowymiarowych, w zależności, czy podan parametry pudełkowe. Dla parametru: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, który jest prawdziwy, wtedy funkcja zbiera dane w tabeli: {{Code|glowna_tablica}} {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną o kluczu: {{Code|StronaSubst}} {{LinkPatrz|StronaSubst-StronaSubst}}, jest tworzona wielowymiarowa zmienna, pod którą jest zapisywany ten wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]=str; </syntaxhighlight> A gdy zmienna: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywa, wtedy dla: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną o kluczu: {{Code|StronaSubstInne}} {{LinkPatrz|StronaSubstInne-StronaSubst}}, jest tworzona wielowymiarowa zmienna, też parametrów nazw książki, pod którą zapisywany jest ten wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][strona][(czy_link and "tak" or "")]=str; </syntaxhighlight> {{Hr}} W obu tworzonych tabelach zależy to od parametru, od wartości zmiennej: {{Code|strona}}, czyli: {{LinkPatrz|1-StronaSubst}}, którą jest nazwą artykułu, a gdy mamy niepustą zmienną: {{Code|link}} {{LinkPatrz|link-StronaSubst}}, wtedy następna zmienna jest ustawiana na: {{Code|tak}}, w przeciwnym wypadku mamy, dla niej, ciąg pusty, a pod: {{Code|str}}, jest ukryta zawartość szablonu {{LinkPatrz|StronaSubst-Szablon}}. ==== KsiążkaSubst ==== Funkcje poniżej wykorzystywane są przez szablon: {{Code|{{s|KsiążkaSubst}}}} {{LinkPatrz|KsiążkaSubst-Szablon}}. Funkcja: {{LinkŚródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, przez niego jest używana na stronie zbiorczej rozdziału, nawet podana za pomocą parametrów pudełkowych, ale też strony zbiorczej, i {{LinkŚródtytuł|AnalizowanieWoluminu}}, jest używana do analizowania całych wszystkich artykułów wraz z rozdziałami spisów książki, na stronie ich zbiorczej, lub podana ta strona jest przy pomocy też tych samych parametriów, ale o innej wartości. ===== {{Śródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}{{Code|AnalizowanieStronyWoluminuWprowadzeniaTekstu}} ===== Funkcja liczy strony zbiorcze dla danego rozdziału, oprócz wersji: do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}}, i druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}. W tym przypadku dla aktualnej książki, gdy niepodano zmiennych pudełkowych, lub one wskazują na ten artykuł, funkcja sprawdza zmienną: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, a jeżeli taki artykuł istnieje, to program tej funkcji jest zakańczany, a jeżeli nie, to sprawdzane jest, czy taki rozdział, któremu symbolizuje artykuł książki, w której leży ten szablon, czy rzeczywiście jest zbiorczy. Jeżeli mamy do czynienia z nieaktualną książką tylko inną, i podano parametry pudełkowe, to funkcja sprawdza też w: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|KsiążkaSubstInneRozdział}} {{Patrz|KsiążkaSubstInneRozdział-AnalizowanieWoluminu}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno ze zmiennych: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę. Jeśli funkcja nie zakończyła przedwcześnie pracy, wtedy ona liczy parametry: {{Code|naglowki}} {{LinkPatrz|naglowki}}, {{Code|sekcje}} {{LinkPatrz|sekcje}} i {{Code|postep}} {{LinkPatrz|postep-StronaSubstParametr}}, {{Code|ktore}} {{Patrz|ktore}}, jeżeli tej zmiennej nie podano, to ona domyślnie przyjmuje wartość {{Code|1}}, z {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. Funkcja liczy numer tego samego rozdziału. Ona wykorzystuje do tego zmienną: {{Code|ktore}} {{LinkPatrz|ktore}}, aby policzyć ten ściśle określony rozdział, by zwrócić wikikod {{LinkPatrz|wikikod}}. Dla aktualnego wyszukanego rozdziału zgodnego z nazwą artykułu jako strona zbiorcza, jeżeli taki istnieje, wtedy funkcja wyświetla jakiolwiek wynik, np. też z artykułami, jeżeli w nim istnieją takie. Funkcja wtedy inicjuje zmienną: {{Code|HNumer}} {{LinkPatrz|HNumer}} jako wynik z {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}, następnie, za pomocą niej, listuje wynik przy pomocy: {{LinkŚródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}, uzyskując w ten sposób wikikod {{LinkPatrz|wikikod}}. Według tej funkcji: cały taki wynik jest to serią znaczników: {{Tag|div|parametry=class="rozdział_książki"}}, a w nich poszczególnych są nagłówki artykułów, i pojedyncze adresy tych stron (czasami jest on ukryty, bo uruchomiony jest parametr postępu) lub ukryte w linku w nagłówku, a w nich one są okrążone: {{Tag|div|parametry=class="strona_subst"}}, którego zawartość jest zamieniana przez {{lpg|JavaScript}} na stronę o tym adresie. Dla parametru: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, który jest prawdziwy - aktualny artykuł, jeśli nie podano parametrów pudełkowych, lub one wskazują na ten artykuł, wtedy funkcja zbiera dane w tabeli: {{Code|glowna_tablica}} {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną o kluczu: {{Code|KsiążkaSubst}} {{Patrz|KsiążkaSubst-AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, jest zapisywany wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod; </syntaxhighlight> A gdy zmienna: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywa - nieaktualny artykuł, parametry pudełkowe już są, wtedy dla: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną: {{Code|KsiążkaSubstInneRozdział}} {{Patrz|KsiążkaSubstInneRozdział-AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, jest tworzona odpowiednia podtablica ze zmiennych nazw książki, a tam w końcu, pod kluczem artykułu, jest zapisywany wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][substrona]=wikikod </syntaxhighlight> Funkcja zwraca w ten sposób uzyskany wikikod {{LinkPatrz|wikikod}} dla całego rozdziału, lub ciąg pusty, jeżeli takiego rozdziału nie znaleziono. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista_artykulow_w_ksiazce}} | _1 = Jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 2 = {{Code|substrona}} | _2 = Jak w: {{LinkPatrz|substrona}}. | 3 = {{Code|tabela_parametrow_szablonu}} | _3 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. | 4 = {{Code|czy_artykul_aktualny}} | _4 = Jak w: {{LinkPatrz|czy_artykul_aktualny}}. | 5 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _5 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} Funkcja jest wykorzystywana w definicji funkcji zwracanej: {{LinkŚródtytuł|FunRozdzial}}. ===== {{Śródtytuł|AnalizowanieWoluminu}}{{Code|AnalizowanieWoluminu}} ===== Funkcja liczy strony zbiorcze dla całej ksiązki, oprócz wersji: do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}}, i druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}. W tym przypadku dla aktualnej książki, gdy nie podano zmiennych pudełkowych, lub one wskazują na ten artykuł, funkcja sprawdza zmienną: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|KsiążkaSubst}} {{Patrz|KsiążkaSubst-AnalizowanieWoluminu}}, a jeżeli taki, już policzony, artykuł istnieje, to program tej funkcji jest zakańczany. Jeżeli nie mamy do czynienia z aktualną książką tylko z inną, i podano parametry pudełkowe, to funkcja sprawdza też w: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|KsiążkaSubstInne}} {{Patrz|KsiążkaSubstInne-AnalizowanieWoluminu}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno zbudowanych ze zmiennych: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę. Jeżeli funkcja przedwcześnie nie zakończyła pracy, wtedy liczy parametry: {{Code|naglowki}} {{LinkPatrz|naglowki}}, {{Code|sekcje}} {{LinkPatrz|sekcje}} i {{LinkPatrz|postep-StronaSubstParametr}}, z {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}, oraz inicjowana jest funkcja: {{Code|HNumer}} {{LinkPatrz|HNumer}}, przy pomocy innej: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. Możliwe jest ze rozdział może nie składać się z żadnych artykułów, czyli funkcja liczy wszystkie rozdziały będące przed danymi artykułami. Ona liczy ich poziom z: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstu}}, tzn. {{Code|m}} {{Patrz|m-AnalizowanieWoluminu}}, aby funkcja poszła dalej w pętli, to ona nie może być poziomem {{LinkPatrz|m-AnalizowanieWoluminu}} równy zero, rozdział równy pustemu łańcuchowi, {{Code|Spis treści}}, {{Code|Bibliografia}}, {{Code|Zobacz też}}, {{Code|Inne}} i {{Code|Licencja}}, co na podstawie tego jest liczony jego numer poziomu z: {{Code|HNumer}} {{LinkPatrz|HNumer}}, tzn. {{Code|m_uzyskane}} {{Patrz|m_uzyskane}}, a następnie rozdział z {{Code|{{sr|#p.NapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, a do niego był wsadzony jako drugi parametr, tzn. tą ostatnią policzoną zmienną. Dalej jest wskazywany, które jest powtórzenie danego rozdziału z {{LinkŚródtytuł|Powtarzane}}, co na tej podstawie, licząc od tego pierwszego takiego rozdziału, co ten numer jest wykorzystywany w tablicy liczączej spis treści, strony zbiorczej, czyli: {{Code|toc_nowe}} {{LinkPatrz|toc_nowe}}. Co potem po wszystkich rozdziałach, nie posiadających w sobie artykułów, lub nie, wtedy liczymy listę artykułów w danym rozdziale, jego wikikod, i zaaktualizowaną wersję:, {{Code|toc_nowe}} {{LinkPatrz|toc_nowe}}, według funkcji: {{LinkŚródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}. Według tej funkcji: cały taki wynik jest otoczony: {{Tag|div|parametry=class="klasa_książki"}}, a w niej są większe rozdziały - one to są rozdziały w spisie, ale nie w artykule, a w niej a te rozdziały wraz artykułami są okrążone: {{Tag|div|parametry=class="klasa_naglowka klasa_nagłówka"}}, a w nich są dla danego rozdziału: a w nich są wszystkie artykuły w nich się znajdujące, którego każda reprezentuje inne: {{Tag|div|parametry=class="rozdział_książki"}}, a w nich poszczególnych są nagłówki artykułów, i pojedyncze adresy tych stron (jeślimamy uruchimiony postęp, to ten adres jest ukryty według: {{Code|display:none;}}) lub w postaci linku w nagłówka, a w nich one są okrążone: {{Tag|div|parametry=class="strona_subst"}}, którego zawartość jest zamieniana przez {{lpg|JavaScript}} na stronę o tym adresie. Dla aktualnej książki wynik jest zapisywany pod zmienną: {{Code|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, jeśli nie podano parametrów pudełkowych, w przeciwnym wypadku pod: {{Code|KsiążkaSubstInne}} {{LinkPatrz|KsiążkaSubstInne-AnalizowanieWoluminu}}. Dla parametru: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, który jest prawdziwy, wtedy funkcja zbiera dane w tabeli: {{Code|glowna_tablica}} {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną o kluczu: {{Code|KsiążkaSubst}} {{Patrz|KsiążkaSubst-StronaSubst}}, jest zapisywany wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod; </syntaxhighlight> A gdy zmienna: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywa, wtedy dla: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną: {{Code|StronaSubstInne}} {{Patrz|KsiążkaSubstInne-StronaSubst}}, jest tworzona ta wielowymiarowa zmienna, pod którą jesst zapisywany wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=wikikod; </syntaxhighlight> Widzimy, że funkcja zwraca w ten sposób uzyskany wikikod {{LinkPatrz|wikikod}} dla całej książki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista_artykulow_w_ksiazce}} | _1 = Jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. | 3 = {{Code|czy_artykul_aktualny}} | _3 = Jak w: {{LinkPatrz|czy_artykul_aktualny}}. | 4 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _4 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} Funkcja jest wykorzystywana w definicji funkcji zwracanej: {{LinkŚródtytuł|TakFun}}. ==== Funkcje analizujące strony zbiorcze lub inne ==== ===== {{Śródtytuł|NieFun}}{{Code|NieFun}} ===== Jest to funkcja zwracająca inną funkcję, która to z kolei zwraca zawsze wartość pustą. Funkcja zwracana jest to funkcja: {{LinkPatrz|NieFun-AnalizaStronaSubst}}, w: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Ta funkcja zwracana przez funkcję w nagłówku jest wykorzystywana wtedy, gdy nie mamy do czynienia z żadną stroną zbiorczą, tylko ze zwykłym artykułem. Definicja poglądowa funkcji: <syntaxhighlight lang="lua"> local NieFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny) return function(parametr) return "";end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu-NieFun}} | _1 = Tabela parametrów szablonu: {{LinkPatrz|KsiążkaSubst-Szablon}}. | 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu-NieFun}} | _2 = Nazwa tego szablonu. | 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow-NieFun}} | _3 = Tabela jego modyfikatorów. | 4 = {{Code|czy_artykul_aktualny}} {{Patrz|czy_artykul_aktualny-NieFun}} | _4 = Czy dotyczy aktualnej książki, dla danego artykułu, na stronie zbiorczej tego woluminu. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Jest to dowolny parametr, w: {{Code|{{ld2|StronicowyParser/StronaSubst}}}}, przyjmuje wartość: {{Code|nil}}. }} ===== {{Śródtytuł|TakFun}}{{Code|TakFun}} ===== Funkcja zwracająca inną funkcję, której wywołanie jest funkcją z: {{LinkPatrz|TakFun-AnalizaStronaSubst}}, w: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Funkcja zwracana zwraca zawsze wartość odpowiadającą wartości logicznej prawdziwej. Tą funkcją zwracaną przez funkcję w nagłówku mamy do czynienia, gdy mamy do czynienia ze stronami zbiorczymi odpowiadzialnymi za stronę o: wersji: do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}}, lub druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}. Definicja pogladowa funkcji: <syntaxhighlight lang="lua"> local TakFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny) return function(tab_lista_artykulow_w_ksiazce,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return "tak"; end; end; </syntaxhighlight> Funkcja wywołuje funkcję: {{LinkŚródtytuł|AnalizowanieWoluminu}}, do analizy woluminu, pojedynczego na stronie zbiorczej, ale nie rozdziałowej, tzn. te jednostki, które nie są zbiorczym obiektem dla stron danego rozdziału. Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu-NieFun}}. | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow-NieFun}}. | 4 = {{Code|czy_artykul_aktualny}} | _4 = Jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tab_lista_artykulow_w_ksiazce}} | _1 = Jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}} | 3 = {{Code|czy_artykul_aktualny}} | _3 = Jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}} | 4 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _4 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} ===== {{Śródtytuł|FunRozdzial}}{{Code|FunRozdzial}} ===== Funkcja zwraca inna funkcję, która jest tym: {{LinkPatrz|FunRozdzial-AnalizaStronaSubst}}, z: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Funkcja zwracana zawsze zwraca wartość odpowiadająca wartości logicznej prawdziwej. Tą funkcję zwracaną przez funkcję w nagłówku używaną, gdy mamy do czynienia, ze stronami zbiorczymi odpowiadzialnymi za rozdziały, która zbiera artykuły danego rozdziału. Definicja poglądowa funkcji: <syntaxhighlight lang="lua"> local FunRozdzial=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny) return function(tab_lista_artykulow_w_ksiazce,substrona,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return "tak"; end; end; </syntaxhighlight> Funkcja wywołuje funkcję: {{LinkŚródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, do analizy woluminu, pojedynczego na stronie zbiorczej, ale rozdziałowej, tzn. te jednostki, które są zbiorczym obiektem dla stron danego rozdziału. Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu-NieFun}}. | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow-NieFun}}. | 4 = {{Code|czy_artykul_aktualny}} | _4 = Jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tab_lista_artykulow_w_ksiazce}} | _1 = Jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 2 = {{Code|substrona}} {{Patrz|substrona}} | _2 = Nazwa artykułu strony zbiorczej rozdziałowej. | 3 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _3 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> mbo9qlh81bqzbzdkzhn2rfzyz6zfwas 558493 558492 2026-10-04T09:09:54Z Persino 2851 /* {{Śródtytuł|WoluminSubst}}{{Code|WoluminSubst}} */ 558493 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/StronaSubst}}|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.AnalizaStronaSubst}}{{Code|p.AnalizaStronaSubst}} == Funkcja sprawdzająca, czy dana strona jest strona zbiorczą o nazwie: w wersji do czytania: {{Tt|Wersja do czytania}} {{Patrz|Wersja do czytania}}, o nazwie: {{Code|nazwa artykulu}} {{LinkPatrz|nazwa artykulu}}, równej subnazwie danej książki: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, np. nazwa książki: {{lg|Matematyka dla liceum}}, to ta strona jest wtedy: {{lg|Matematyka dla liceum/Matematyka dla liceum}}, lub wersji do druku: {{Tt|Wersja do druku}} {{Patrz|Wersja do druku}}, jak: {{lg|Matematyka dla liceum/Wersja do druku}}. Funkcja sprawdza, czy dana strona równa nazwie rozdziału, do której należą jakieś artykuły, jest stroną zbiorczą. Aby dana nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu}} była stroną zbiorczą, to nie może być o nazwie: {{Code|Spis treści}}, {{Code|Spis rzeczy}}, {{Code|Bibliografia}} i {{Code|Licencja}}, czyli taką prawidłową stroną, np. jest: {{lg|Matematyka dla liceum/Zaczynamy}}. Gdy dany artykuł, jest nierówny: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}} i {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}, należy do zbioru normalnych artykułów, to wtedy to nie jest na pewno stroną zbiorczą. * Do wskazania, czy to jest strona zbiorcza, używamy tej funkcji, a do liczenia zawartości szablonów: {{Code|{{s|StronaSubst}}}} {{Patrz|StronaSubst-Szablon}} i {{Code|{{s|KsiążkaSubst}}}} {{Patrz|KsiążkaSubst-Szablon}}, wykorzystujemy do tego:{{LinkŚródtytuł|p.LiczOperacjeStronZbiorczych}}, i w niej funkcję nadrzędną: {{LinkŚródtytuł|WoluminSubst}}, która analizuje te dwa typy szablonów, i w zależności od tego uruchamia odpowiednie procedury wykonawcze, a dla tego drugiego szablonu, natomiast jest uruchomiana instrukcja: {{LinkŚródtytuł|p.AnalizaStronaSubst}}, w celu przeanalizowania, czy wskazana strona jest stroną zbiorczą, nawet tą symulowaną, i jakie artykuły należą do tej właśnie strony, i je wypisuje w wywołaniu funkcyjnym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaStronaSubst(tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,pelnanazwastrony,TakFun-AnalizaStronaSubst,NieFun-AnalizaStronaSubst,FunRozdzial-AnalizaStronaSubst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Najważniejsze zmienne: | nagłówek1 = tak | 2 = {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} |_2 = Tablica, która jest wynikiem, jego wartości zwracanej, działania dotycząca modułów: <syntaxhighlight lang="lua"> local stronicowyparser_informacje_modul=mw.loadData("Module:StronicowyParser/informacje"); local tablica_zebranych_danych_woluminowych=stronicowyparser_informacje_modul.tablica_zebranych_danych_woluminowych; </syntaxhighlight> | 3 = {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{Patrz|tab_lista_artykulow_w_ksiazce_spis}} | _3 = Tablica rozdziałów i artykułów oraz o nich informacji, różnych spisów treści należącej do danej książki, ta tablica ma ściśle określoną strukturę omówioną w artykule: {{Code|{{lr2|Moduły/StronicowyParser/SpisTreści}}}}. | 4 = Zmienne potrzebne do zmiany nawigacji na inny niż dany artykuł, czy książkę: | nagłówek4 = tak | 5 = {{Code|pelnanazwastrony}} {{Patrz|pelnanazwastrony}} | _5 = Jest to nazwa jednostki z przestrzenią nazw, ona jest wykorzystywana w parametrach pudełkowych: {{Code|{{m|Pudełko}}}}, modułu {{Code|{{ld|StronicowyParser|Stronicowego Parsera}}}}. | 6 = Funkcje: | nagłówek6 = tak | 7 = {{Code|TakFun}} {{Patrz|TakFun-AnalizaStronaSubst}} | _7 = Ona (musi być zdefiniowana) jest używana, gdy dana strona jest stroną zbiorczą, ale zwykle nierozdziałową. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> czy_tak=TakFun(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); </syntaxhighlight> | 8 = {{Code|NieFun}} {{Patrz|NieFun-AnalizaStronaSubst}} | _8 = Ona (musi być zdefiniowana) jest używana, gdy dana strona nie jest stroną zbiorczą, ale jest artykułem spisu, też w wypadku, gdy strona nie ma artykułów spisu, bo nie jest książką, tylko np. stronami w innej przestrzeni, czy niby-przestrzeni, niż książkowa. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> czy_tak= NieFun(parametr); </syntaxhighlight> | 9 = {{Code|FunRozdzial}} {{Patrz|FunRozdzial-AnalizaStronaSubst}} | _9 = Ona (funkcja opcjonalna, w przeciwnym wypadku jest wykorzystywane: {{LinkPatrz|TakFun-AnalizaStronaSubst}}) jest używana, gdy dana strona jest zbiorczą, ale rozdziałową, równą nazwie rozdziału. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> czy_tak=FunRozdzial(tab_lista_artykulow_w_ksiazce_spis,nazwa_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); </syntaxhighlight> | 10 = Zmienne nazw {{Patrz|ZMIENNE_NAZWOWE}}: | nagłówek10 = tak | 11 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}} | _11 = Nazwa przestrzeni nazw, do której należy dany artykuł, czy książka, do której on należy. | 12 = {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} | _12 = Mazwa przestrzeni książki, do której należy dana książka. | 13 = {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _13 = Subnazwa książki, do której należą jej artykuły. | 14 = {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} | _14 = Nazwa artykułu danej książki, bez pełnej nazwy książki. }} A gdy parametr: {{Code|pelnanazwastrony}} {{LinkPatrz|pelnanazwastrony}}, istnieje {{Patrz|pelnanazwastrony-istnieje}}, lub parametry: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, lub {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu}}, nie istnieją, wtedy są uzyskiwane parametry pudełkowe, co na tej podstawie, gdy pełna nazwa strony: {{Code|pelnanazwastrony}} {{LinkPatrz|pelnanazwastrony}}, istnieje {{LinkPatrz|pelnanazwastrony-istnieje}}, lub {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}, nie istnieje {{Patrz|tab_lista_artykulow_w_ksiazce_spis-nie-istnieje}}, to są liczone parametry strony z tego, a jeżeli wtedy strona nadal nie ma artykułów, to funkcja jest zatrzymywana, bo np. to ta nibyże książka nie może mieć strony zbiorczej, przeciwnym wypadku otrzymywane są parametry: {{LinkPatrz|ZMIENNE_NAZWOWE}}. A gdy warunki: {{LinkPatrz|pelnanazwastrony-istnieje}} i {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis-nie-istnieje}}, nie są spełnione, to dane są uzyskiwane bezpośrednio z tabeli: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, tzn.: {{LinkPatrz|ZMIENNE_NAZWOWE}}. A jeżeli ten pierwszy warunek nie jest spełniony, to są liczone parametry z: {{LinkPatrz|ZMIENNE_NAZWOWE}}, uzyskiwany jest z niego spis rozdziałów i do nich artykułów, w zmiennej: {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}, a jeżeli strona nie może mieć spisu, to funkcja jest zatrzymawana. Jeżeli spis strony jednak istnieje po policzeniu, lub nie (wtedy to jest parametrem tej funkcji), wtedy funkcja sprawdza, czy nazwa przestrzeni nazw {{LinkPatrz|nazwa_przestrzeni}} jest: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, lub {{Np|Wikibooks|link=tak}} w niby-przestrzeni nazw: {{lr2|Brudnopis}} z: {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, albo {{Np|User|link=tak}} (ale nie strona główna użytkownka, ale inne strony w tej przestrzeni, co jest policzone z: {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}). A jeżeli któraś z tych parametrów jest spełnione, wtedy jest sprawdzane, czy artykuł: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu}}, czy jest artykułem książki, co w przypadku stron zbiorczych rozdziałowych jest anulowany status strony zbiorczej, a w przypadku innym ta strona jest jednak stroną zbiorczą. A w innym wypadku, gdy to nie jest ta rozdziałowa, to jest sprawdzane, czy to jest strona zbiorcza. == {{Śródtytuł|p.LiczOperacjeStronZbiorczych}}{{Code|p.LiczOperacjeStronZbiorczych}} == Tutaj jest zawarty opis tej funkcji i podfunkcji lokalnych dostępne tylko w niej, a nie gdzie indziej. === Opis funkcji === Gdy strona jest stroną zbiorczą, strona musi być w przestrzeni książkowej, lub gdy parametry pudełkowe: {{Code|{{m|Pudełko}}}}, wskazują na nią, to w przeciwnym wypadku parametry stron zbiorczych nie są liczone i nie są ustawiane, normalnie są liczone, za pomocą wywołań szablonowych: {{Code|{{s|StronaSubst}}}} {{LinkPatrz|StronaSubst-Szablon}} - gdy jest liczony pojedynczy artykuł, {{Code|{{s|KsiążkaSubst}}}} {{LinkPatrz|KsiążkaSubst-Szablon}} - gdy liczymy całą stronę zbiorczą ze wszystkich stron z jakich składa się książka, oprócz artykułów, różnych stron zbiorczych. Ten pierwszy wywołujemy zawsze z parametrami liczonej strony (artykułu książki), a to drugie nie wywołujemy zwykle z parametrami, po prostu wywołanie jest prawie zawsze bezparametrowe. Te szablony umieszczamy na stronie zbiorczej lub symulowanej stronie zbiorczej, za pomocą szablonu {{s|Podręcznik}}, zobacz też zbiór szablonów ustawień {{Code|config}}, tego szablonu, tzn: {{s|Podręcznik/Ustawienia/}} {{Patrz|Podręcznik/Ustawienia/}}, co jest uwarunkowane wewnętrznym kodem w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}, w funkcji: {{Code|{{sr|#p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi|p=StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}. Przykład ustawień {{LinkPatrz|Podręcznik/Ustawienia/}} symulowanej strony zbiorczej możemy znaleźć na stronie: {{Code|{{ls2|Podręcznik/Ustawienia/Szablon:StronaSubst/config}}}} (szablonu {{LinkPatrz|StronaSubst-Szablon}}) lub {{Code|{{ls2|Podręcznik/Ustawienia/Szablon:KsiążkaSubst/config}}}} (szablonu {{LinkPatrz|KsiążkaSubst-Szablon}}). Funkcja wykorzystuje jako podstawę do działania procedurę zwracajace jakieś parametry: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LiczOperacjeStronZbiorczych(glowna_tablica,tekst_rozwiniety_calego_artykulu,spis,nazwa_modulu_strony,nazwa_modulu_strony_szablonowa,tablica_obiektow_strony_dany_modul_strony,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|glowna_tablica}} {{Patrz|glowna_tablica}} | _1 = Zmienna taka jak: {{Code|self}}, jest to zmienna obiektowa, co ona pozwala uruchomić tę funkcję bez tego parametru, jeżeli napiszemy wywołanie tej funkcji nie z: {{Code|.}}, tylko z: {{Code|:}}, wtedy jest brany obiekt z aktualnej tablicy, dzięki któremu liczymy pewne parametry, ten przed dwukropkiem. | 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Tekst zakodowany całej strony. | 3 = {{Code|spis}} {{Patrz|spis}} | _3 = Jest to spis rozdziałów i jego artykułów, jest to zmienna, taka jak: {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 4 = {{Code|nazwa_modulu_strony}} {{Patrz|nazwa_modulu_strony}} | _4 = Uchwyt bazy danych {{Code|{{m|Szablonowe}}}}, używany zamiast: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}. | 5 = {{Code|nazwa_modulu_strony_szablonowa}} {{Patrz|nazwa_modulu_strony_szablonowa}} | _5 = Nazwa strony w wersji szablonowej, czyli szablony pisane jakby były w przestrzeni głównej, a strony w tej przestrzeni nazw są pisane z dwukropkiem na początku. | 6 = {{Code|tablica_obiektow_strony_dany_modul_strony}} {{Patrz|tablica_obiektow_strony_dany_modul_strony}} | _6 = Gdy nie podano zmiennej: {{Code|nazwa_modulu_strony}}, wtedy jest używana ta zmienna, jest to zmienna bazy danych, tej samej bazy, co dotyczy: {{LinkPatrz|nazwa_modulu_strony}}. | 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _7 = Zmienna, w której są zawarte rozkładania parametrów tabeli bazy danych: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}, na czynniki pierwsze, aby znów tego nie robił, gdy pierwszy raz badamy jakiś element jej, to rozłożenie jest umieszczane w tej właśnie tabeli, a za drugim lub trzecim razem, itd., tego nie robić, aby w ten sposób można przyszybszyć '''{{ld|StronicowyParser|Stronicowy parser}}'''. }} Funkcja ma w swoje definicji bezpośrednio zmienne: {{Code|toc_nowe}} do tworzenia spisu treści, którą zapisujemy pod zmienną: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}} w podtablicy {{Code|TOC_StronaZbiorcza}} {{Patrz|TOC_StronaZbiorcza}}. Również ona używa funkcji: {{LinkŚródtytuł|Powtarzane}}, tzn. {{LinkPatrz|tab_powtarzane}}, do liczenia, ile razy dany rozdział się powtarza, w celu policzenia unikalnych identyfikatorów do nich, aby można było się do nich odwołać za pomocą linków wewnętrznych linkujących do bieżącej, lub nie, strony. === Funkcje lokalne === ==== {{Śródtytuł|Powtarzane}}{{Code|Powtarzane}} ==== Funkcja, którego parametrem jest rozdział. Liczy numer takiego samego rozdziału. Do swojego działania funkcja wykorzystuje tabelę {{Code|tab_powtarzane}} {{Patrz|tab_powtarzane}} zdefiniowanej w funkcji: {{LinkŚródtytuł|p.LiczOperacjeStronZbiorczych}}, aby uzyskać unikalność danego nagłówka, tworząc kolejne pozycje spisu treści na stronie zbiorczej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Powtarzane(rozdzial)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Podany rozdzial spisu treści lub podanego rozdzialu w artykułach, w zależności od sytuacji, w której uruchomiono tą zmienną. }} Przykład użycia: <syntaxhighlight lang="lua"> local liczba_powtarzanego=Powtarzane(naglowek); </syntaxhighlight> ==== {{Śródtytuł|CzyStronaSubst}}{{Code|CzyStronaSubst}} ==== Funkcja sprawdzająca, czy składowa tabeli: {{Code|glowna_tablica}} {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a później jego podelement: {{Code|CzyStronaSubst}} {{Patrz|CzyStronaSubst}}, czy nie istnieje, a jeżeli tak, to ustaw jego wartość na: {{Code|tak}}. Zmienna mówi, że strona została przeanalizowana parserem strony zbiorczej, dlatego jest ustawiana właśnie ta zmienna, i że to jest strona zbiorcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyStronaSubst()...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Brak parametrów. | komórka1 = 1 }} Przykład analizy funkcji, podając je właściwie ciało: <syntaxhighlight lang="lua"> if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"])then glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; </syntaxhighlight> ==== {{Śródtytuł|WoluminSubst}}{{Code|WoluminSubst}} ==== Funkcja wyszukuje w zakodowanym tekście szablony: {{s|StronaSubst}} {{LinkPatrz|StronaSubst-Szablon}} i {{s|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-Szablon}}, przy pomocy: {{Code|tablica_obiektow_strony_dany_modul_strony}} {{linkPatrz|tablica_obiektow_strony_dany_modul_strony}}, wywołując dla nich odpowiednie kolejno funkcje: {{Code|StronaSubst}} {{LinkPatrz|StronaSubst-WoluminSubst}} i {{Code|KsiążkaSubst}} {{LinkPatrz|KsiazkaSubst-WoluminSubst}}. * To jest główna funkcja w: {{LinkŚródtytuł|p.LiczOperacjeStronZbiorczych}}, od której liczymy szablony stron zbiorczych. I całą historię tego liczenia od tego zaczynamy, w przypadku całościowego liczenia takich stron na stronie zbiorczej, funkcja wykorzystuje do tego celu: {{LinkŚródtytuł|p.AnalizaStronaSubst}}, a do części szczególnej, dla jednego artykułu, używa do tego: {{LinkŚródtytuł|StronaSubst}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,nazwa_modulu_strony_szablonowa,tablica_obiektow_strony_dany_modul_strony,StronaSubst,KsiazkaSubst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Jest to przeszukiwany tekst, w celu wyszukania szablonów: {{s|StronaSubst}} i {{s|KsiążkaSubst}}. | 2 = {{Code|nazwa_modulu_strony}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_strony}}. Jest to uchwyt bazy kodowania zamiast używania zmiennej: {{Code|tablica_obiektow_strony_dany_modul_strony}} {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}. | 3 = {{Code|nazwa_modulu_strony_szablonowa}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_strony_szablonowa}}. To nazwa w wersji szablonowej, by napisać nazwę szablonu tak, by w ten sposób odnaleźć szablony: {{s|StronaSubst}} i {{s|KsiążkaSubst}}, by je w odpowiedni sposób obsłużyć. | 4 = {{Code|tablica_obiektow_strony_dany_modul_strony}} {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}} | _4 = Jak w: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}. Jeśli jest nienilowe, to używamy zamiast: {{Code|nazwa_modulu_strony}} {{LinkPatrz|nazwa_modulu_strony}}. | 5 = {{Code|StronaSubst}} {{Patrz|StronaSubst-WoluminSubst}} | _5 = Funkcja wywoływana, gdy napotkano szablon: {{s|StronaSubst}} {{LinkPatrz|StronaSubst-Szablon}}. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> StronaSubst=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ... end; </syntaxhighlight> | 6 = {{Code|KsiazkaSubst}} {{Patrz|KsiazkaSubst-WoluminSubst}} | _6 = Funkcja wywoływana, gdy napotkano szablon: {{s|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-Szablon}}. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> KsiazkaSubst=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ... end; </syntaxhighlight> }} Przykłady wykorzystania: <syntaxhighlight lang="lua"> WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,nazwa_modulu_strony_szablonowa,tablica_obiektow_strony_dany_modul_strony, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ... StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ... p.AnalizaStronaSubst(glowna_tablica.tabela_listy_danych_analizy_ksiazki,spis_artykulow,pelnanazwastrony,TakFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),NieFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),FunRozdzial(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)); end ); </syntaxhighlight> Funkcja wykorzystuje pierwszą funkcję, wywołując inną funkcję: {{LinkŚródtytuł|StronaSubst}}, a druga funkcję: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. ==== {{Śródtytuł|StronaSubstParametr}}{{Code|StronaSubstParametr}} ==== Funkcja liczy łańcuch znakowy odpowiadający pojedynczemu wywołaniu, dotyczący danego rozdziału strony zbiorczej, czyli dla pojedynczego wywołania szablonu: {{LinkPatrz|StronaSubst-Szablon}}, lub dla pojedynczego artykułu z wielu generowanych przez szablon: {{LinkPatrz|KsiążkaSubst-Szablon}}. Szablon tworzy rozdział w postaci linku do artykułu, wtedy w nagłówku nie jest podawany adres pełny artykułu, tylko nazwa tego linku jest równa podanej nazwie nagłówka, chociaż adres jest pełną nazwą książki, wtedy w tekście w znaczniku nie jest podawany wcale żaden artykuł, ani w ogóle tekst, a jeżeli ona nie jest linkiem, to nagłówek i jego rozdział jest w postaci tekstu, wtedy w tekście rozdziału jest podawany pełny adres artykułu, a jeżeli, mamy włączony postęp, wtedy to jest ukryte właściwością '''{{lpg|CSS}}''': {{Code|display:none}}. Rozdział jest pod elementem {{Tag|div|parametry=style="display:block;" class="rozdział_książki"}}, o odpowiednim poziomie, gdy poziom jest {{Code|nil}}, to wtedy przyjmuje on domyślną wartość {{Code|1}}, tworzonym przez funkcję: {{Code|{{sr|#p.NapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Następnym elementem jest postęp, pod warunkiem, jeżeli ustawiono zmienną: {{Code|postep}}, a dalej w osobnym {{ZobaczTeż|strona_subst}}: {{Tag|div|parametry=class="strona_subst"}}, jest zawartość rozdziału w postaci naszego adresu, lub w postaci wartości pustej, gdy rozdział jest linkiem, wtedy zmienna: {{Code|link}} {{LinkPatrz|link-StronaSubstParametr}}, jest niepusta, według ustawień funkcji: {{LinkŚródtytuł|StronaSubst}}, a więc tak się dzieke również w przypadku szablonu: {{s|StronaSubst}} {{LinkPatrz|StronaSubst-Szablon}}, gdy ta funkcja została wywołana przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function StronaSubstParametr(strona,naglowek_strony,link,p,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|strona}} {{Patrz|strona-StronaSubstParametr}} | _1 = Jak w: {{LinkPatrz|1-StronaSubst}} - jest to nazwa artykułu, który wraz z pozostałymi wartościami nazw książki, tworzy pełny adres, który mieści się na stronie w odpowiedniej sekcji w: {{LinkZobaczTeż|strona_subst}}, a jeżeli zmienna: {{Code|postęp}} {{LinkPatrz|postep-StronaSubstParametr}}, jest niepusta, wtedy ten rozdział jest ukryty, przeciwnie już nie. Ten adres może mieścić się w linku w nagłówku, w przypadku podania {{Code|link}} {{LinkPatrz|link-StronaSubstParametr}}. a ten znacznik podany tutaj jest wtedy pusty. | 2 = {{Code|naglowek_strony}} {{Patrz|naglowek_strony-StronaSubstParametr}} | _2 = Nagłówek strony tworzony z pełnego adresu strony, który jest podstroną wraz z nagłówkiem. | 3 = {{Code|link}} {{Patrz|link-StronaSubstParametr}} | _3 = Jak w: {{LinkPatrz|link-StronaSubst}}, tylko ta zmienna jest w postaci logicznej, jak ta ostatnia jest niepusta, wtedy ta zmienna odpowiada wartości logicznej prawda, w przeciwnym wypadku mamy fałsz. Wtedy nagłówek jest linkiem, a zawartość znacznika: {{LinkZobaczTeż|strona_subst}}, jest pusta. | 4 = {{Code|p}} {{Patrz|p-StronaSubstParametr}} | _4 = Poziom tworzonego nagłówka rozdziału dodatniego równaniowego, jeżeli {{Code|p {{=}} nil}}, wtedy domyślny poziom jest 1, ten poziom jest liczba calkowitą dodatnią. To odpowiada pewnej liczbie równa się po obu jego stronach nagłówka: {{Code|naglowek_strony}} {{LinkPatrz|naglowek_strony-StronaSubstParametr}}. | 5 = {{Code|postep}} {{Patrz|postep-StronaSubstParametr}} | _5 = Jak w: {{LinkPatrz|postep-StronaSubst}}, z wartością logiczną, jak u w: {{LinkPatrz|link-StronaSubstParametr}}. | 6 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _6 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. Nazwy potrzebne do strorzenia pełnej nazwy adtesu strony, która mieści się w atrybucie adresu w linku w sekcji, lub w znaczniku: {{LinkPatrz|link-StronaSubst}}, w zależności od podanego parametru: {{Code|link}} {{LinkPatrz|link-StronaSubstParametr}}. }} ==== {{Śródtytuł|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}}{{Code|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}} ==== Funkcja liczy pojedynczą pozycję dla artykułu, na stronie zbiorczej, przy wywołaniu szablonu {{LinkPatrz|KsiążkaSubst-Szablon}}. Nie liczy tylko strony typu: wersji: wersji do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}} i wersji do druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}, i ich nie rozwaza w zbiorze artykułów,. Gdy nie jest włączony parametr sekcji, ale też jest wyłączony parametr naglówków, to wtedy strona nie uwzględnia, że strony mogą się powtarzać, w przeciwnym wypadku, dalsze repetowane strony są nie uwzględniane, bo np. strony mogą być z nagłówkami w spisie treści, więc w tym przypadku ma sens używać ten parametr. Gdy na stronie jest włączony parametr sekcji, to dla nazw strony niepowtarzających się, liczy stronę w postaci listy tej samej nazwy strony z jego nagłówkami, tzn. po: {{Code|#}}. Funkcja wykorzystuje do liczenia pojedynczej pozycji artykularnej, a w przypadku włączonej sekcji, również te z nagłówkiem, aby policzyć pozycję adresową dla tekstu rozdziału, tzn. używa do tego: {{LinkŚródtytuł|StronaSubstParametr}}. Fukcja do powtarzanych nagłówków na stronie wykorzystuje funkcję: {{LinkŚródtytuł|Powtarzane}}. Funkcję wywołuje się w pętli aż do granicy dojścia do ostatniego artykułu w rozdziale, czy książce, to zależy w jakiej stronie szablon: {{s|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-Szablon}}, się znalazł, czy to w artykule przyprządkowanym danemu rozdziałowi, która jest w tym przypadku stroną zbiorczą, ale nie zawsze, czy innym, czyli normalną stroną zbiorczą, czy to w wersji do czytania, czy druku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrowa_strony}} {{Patrz|tabela_parametrowa_strony}} | _1 = Tabela charakteryzujaca dany artykuł, w tym rozdziale. | 2 = {{Code|naglowki}} {{Patrz|naglowki}} | _2 = Parametr uwzględniający, gdy strony na różnych spisach treści na stronie mogą posiadać sobie nagłówki, wtedy jest uwzględniany po nich. | 3 = {{Code|sekcje}} {{Patrz|sekcje}} | _3 = Dla stron robi stronę zbiorczą z artykułów, w której dla pojedynczego takiego liczy je nagłówkami, którymi są poszczególne rozdziały na stronie. | 4 = {{Code|postep}} | _4 = Jak w: {{LinkPatrz|postep-StronaSubstParametr}}, wykorzystywany przez {{LinkŚródtytuł|StronaSubstParametr}}, w celu zamienienia adresu na postęp. | 5 = {{Code|tablica_stron}} {{Patrz|tablica_stron}} | _5 = Tablica zebranych stron przez tą funkcję przekazywana i zwracaną przez nią iteracyjnie, w prztoadku, gdy jest wyłączony parametr nagłówków,aby strony się nie powtarzały. | 6 = {{Code|wikikod}} {{Patrz|wikikod}} | _6 = Wikikod strony tworzony iteracyjnie dla strony zbiorczej dla poszczególnych artykułów książki, nawet tych z nagłówkami. | 7 = {{Code|toc_nowe}} {{Patrz|toc_nowe}} | _7 = Są tutaj liczone pozycje w spisie treści rozważanego artykułu, nawet tych z nagłówkami, w odpowiedni sposób, by wszystkie linki w niej szły do tej samej strony. Jest liczony spis, nawet wtedy, gdy początkowo go tam nie było. | 8 = {{Code|HNumer}} {{Patrz|HNumer}} | _8 = Funkcja zwracana przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}, która służy do liczenia poziomu w strukturze rozdziałów dodatnich równaniowych. | 9 = {{Code|m_roznica}} {{Patrz|m_roznica}} | _9 = Jest to fatyczny poziom rozdziału liczony przez funkcję: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}}. Jest {{ZobaczTeż|m_roznica}} to poziom głównego nagłówka rozdziału, którym jest artykuł. Bez rozdziałów w artykule. | 10 = {{Code|m_uzyskane}} | _10 = Jest to poziom tego: {{Code|m_roznica}} {{LinkPatrz|m_roznica}}, liczony przez: {{Code|HNumer}} {{LinkPatrz|HNumer}}, który oddaje ssens strukturze rozdziałów i w nich artykułów. Podobnie jak dla: {{LinkZobaczTeż|m_roznica}}, ale ten policzony z: {{Code|m_roznica}} {{LinkPatrz|m_roznica}}, co na podstawie tego otrzymujemy właśnie to. Właśnie policzony z te funkcji, bardziej oddaje ssens struktury poziomów rozdziałów niż jego goły surowy odpowiednil }} Przykłady użycia: <syntaxhighlight lang="lua"> if(tab_lista[2])then ... --- ciało przez właściwą pętlą; for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do ... ---- ciało pętli przez tą funkcję; tablica_stron,wikikod,toc_nowe=ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); ... ---- ciało pętli po tej funkcji; end; end; </syntaxhighlight> ==== {{Śródtytuł|PoziomNapisowyWprowadzeniaTekstu}}{{Code|PoziomNapisowyWprowadzeniaTekstu}} ==== Funkcja liczy poziom rozdziału, który może być różnego typu, np. dadatni centrowany lub równaniowy (normalny), a to pierwsze jest znacznikowo lub szablonowo, średnikowy, zerowy albo ujemny. Jeżeli w rozdziale znajduje się artykuł, to jedynie może być to rozdział dodatni niezależnie jaki. Rozdział centrowany jest ważniejszy niż ten dodatni równaniowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy,poziom_rozdzial_ujemny)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista}} {{Patrz|tab_lista}} | _1 = Tabela przedstawiające pozycję rozdziału i i jego artykułów, dla danego rozdziału, do którego należy artykuł. | 2 = {{Code|poziom_rozdzial_centrowany}} | _2 = Poziom rozdziału dodatniego centrowanego, w którym leży dany rozdział. | 3 = {{Code|poziom_rozdzial_dodatni}} | _3 = Poziom rozdziału dodatniego normalnego, w którym leży dany rozdział. | 4 = {{Code|poziom_rozdzial_srednikowy}} | _4 = Poziom rozdziału ujemnego średnikowego (zaczynający się od {{Code|;}}), w którym leży dany rozdział. | 5 = {{Code|poziom_rozdzial_zerowy}} | _5 = Poziom rozdziału zerowego, w którym leży dany rozdział. | 6 = {{Code|poziom_rozdzial_ujemny}} | _6 = Poziom rozdziału ujemnego, w którym leży dany rozdział. }} Przykłady użycia: <syntaxhighlight lang="lua"> local poziom_rozdzial_centrowany=0; local poziom_rozdzial_dodatni=0; local poziom_rozdzial_srednikowy=0; local poziom_rozdzial_zerowy=0; local poziom_rozdzial_ujemny=0; for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do ... ---- ciało pętli przed tą funkcją; local m=PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy,poziom_rozdzial_ujemny); ... ---- ciało pętli po tej funkcji; end; </syntaxhighlight> ==== {{Śródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}}{{Code|PoziomNapisowyWprowadzeniaTekstuArtykularny}} ==== Funkcja liczy poziom artykułu, w którym on leży, może on leżeć w rozdziale dodatnim centrowanym lub równaniowym (normalnym), a to pierwsze może być centrowane znacznikowo lub szablonowo, czy nawet średnikowym, bądź zerowym, a nawet ujemnym, względem jego poziomów rozdziałów różnych typów, w którym leży on. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_centrowanego_dla_strony,liczba_poziomu_dodatniego_dla_strony,liczba_poziomu_srednikowego_dla_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_ujemnego_dla_strony) </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista}} | _1 = Jak w: {{LinkPatrz|tab_lista}}. | 2 = {{Code|m}} | _2 = Poziom rozdziału dodatniego, do której należy artykuł. | 3 = {{Code|tabela_parametrowa_strony}} | _3 = Jak w: {{LinkPatrz|tabela_parametrowa_strony}}. | 4 = {{Code|liczba_poziomu_centrowanego_dla_strony}} | _4 = Poziom centrowany artykułu, w którym on leży. | 5 = {{Code|liczba_poziomu_dodatniego_dla_strony}} | _5 = Poziom dodatni normalny artykułu, w którym on leży. | 6 = {{Code|liczba_poziomu_srednikowego_dla_strony}} | _6 = Poziom srednikowy (ujemny, ale napisany za pomocą początkowego średnika), do której należy dany artykuł. | 7 = {{Code|liczba_poziomu_zerowego_dla_strony}} | _7 = Poziom rozdziału zerowego, do ktorej należy artykuł. | 8 = {{Code|liczba_poziomu_ujemnego_dla_strony}} | _8 = Poziom rozdziału ujemnego, do ktorej należy artykuł. }} Przykłady użycia: <syntaxhighlight lang="lua"> if(tab_lista[2])then local liczba_poziomu_centrowanego_dla_strony=0; local liczba_poziomu_dodatniego_dla_strony=0; local liczba_poziomu_srednikowego_dla_strony=0; local liczba_poziomu_zerowego_dla_strony=0; local liczba_poziomu_ujemnego_dla_strony=0; ... for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do local m_roznica=PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_centrowanego_dla_strony,liczba_poziomu_dodatniego_dla_strony,liczba_poziomu_srednikowego_dla_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_ujemnego_dla_strony); ... ---- Dalsza część ciała danego okrążenia pętli; end; end; </syntaxhighlight> ==== {{Śródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}{{Code|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}} ==== Funkcja liczy wszystkie pozycje artykularne, tzn. wszystkich artyków rozważanego podręcznika, czy to w postaci linków inteligetnych, czy zwykłych linków wewnętrznych, dla danego rozdziału, wykorzystuje do tego celu funkcje: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}} - do liczenia poziomu artykułów, i {{LinkŚródtytuł|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}} - do listowania pojedynczego artykułu, w zależności od podanych w nim zmiennych. Raz liczy rozdział z jego artykułami, i pod nim wraz z ich rozdziałami i poziomami, a za innym razem jako pojedynczy rozdział z tylko jego artykułami, nie rozważając ich zawartości. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista}} | _1 = Jak w: {{LinkPatrz|tab_lista}}. | 2 = {{Code|m}} {{Patrz|m}} | _2 = Jest to poziom napisu wprowadzenia tekstu, w którym leży dany artykuł. | 3 = {{Code|naglowki}} | _3 = Jak w: {{LinkPatrz|naglowki}}. | 4 = {{Code|sekcje}} | _4 = Jak w: {{LinkPatrz|sekcje}}. | 5 = {{Code|HNumer}} | _5 = Jak w: {{LinkPatrz|HNumer}}. | 6 = {{Code|tablica_stron}} | _6 = Jak w: {{LinkPatrz|tablica_stron}}. | 7 = {{Code|wikikod}} | _7 = Jak w: {{LinkPatrz|wikikod}}. | 8 = {{Code|toc_nowe}} | _8 = Jak w: {{LinkPatrz|toc_nowe}}. }} Przykłady użycia: ; Pierwszy dla listowania artukułów danego rozdziału <syntaxhighlight lang="lua"> for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do local rozdzial=tab_lista[1][1]; if(substrona==rozdzial)then if(ktore==licznik_numer_tego_samego_rozdzialu)then ... ---- ciało czści kodu przed; tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,0,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); ... ---- dalsza częśc kodu po; end; end; end; </syntaxhighlight> ; Drugi do listowania artykułów książki <syntaxhighlight lang="lua"> for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do ... ---- ciało pętli przed wywołaniem tej funkcji; tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); ... ---- ciało pętli po wywołaniu tej funkcji; end; </syntaxhighlight> ==== {{Śródtytuł|StronaSubst}}{{Code|StronaSubst}} ==== Funkcja operująca na parametrach szablonu: {{Code|{{s|StronaSubst}}}} {{LinkPatrz|StronaSubst-Szablon}}, na danym artykule, w książce bieżącym lub innym, ale należącym do przestrzeni książkowej, przy pomocy zmiennych nazw, pod warunkiem, gdy mamy argument: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, jest on fałszywy, wtedy zbieramy parametry różnych książek dla strony zbiorczej ustawionej za pomocą parametrów pudełkowych, w innym przypadku parametry strony zbiorczej należącego do aktualnej książki. Też możemy liczyć parametry stron zbiorczych z poziomu innych stron przy pomocy parametrów pudełkowych. W tym przypadku dla aktualnego artykułu, gdy niepodano zmiennych pudełkowych, lub one wskazują na ten artykuł, funkcja sprawdza zmienną: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|StronaSubst}} {{Patrz|StronaSubst-StronaSubst}}, a jeżeli taki artykuł istnieje, to program tej funkcji jest zakańczany. Jeżeli mamy do czynienia z nieaktualnym artykułem, i podano parametry pudełkowe, to funkcja sprawdza też w: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|StronaSubstInne}} {{Patrz|StronaSubstInne-StronaSubst}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno ze zmiennych: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu: {{LinkPatrz|StronaSubst-Szablon}}. | 2 = {{Code|czy_artykul_aktualny}} {{Patrz|czy_artykul_aktualny}} | _2 = Funkcja mówi, że wykorzystujemy artykuł aktualnej książki. | 3 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _3 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} Opis parametrów tablicy: {{LinkPatrz|tabela_parametrow_szablonu}}: {{OpisParametrów | 1 = {{Code|1}} {{Patrz|1-StronaSubst}} | _1 = Artykuł danej książki, bez pełnej nazwy książki. | 2 = {{Code|link}} {{Patrz|link-StronaSubst}} | _2 = Gdy niepusta, wtedy wyświetlany napis w nagłówku jest linkiem, w przeciwny wypadku zwykłym tekstem. | 3 = {{Code|postep}} {{Patrz|postep-StronaSubst}} | _3 = Uruchamia postęp zamiast wyświetlania tekstu linku w postaci pełnego adresu strony, ewentualnie z nagłówkiem, kiedy nagłówek nie jest linkiem do artykułu strony, a gdy jest link według {{LinkPatrz|link-StronaSubst}}, to wtedy tylko wyświetli się postęp. }} Gdy artykuł jest: w wersji: do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}}, lub druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}, to wtedy funkcja zwraca wartość pustą. Funkcja liczy nagłówek ze zmiennej: {{Code|strona}} {{LinkPatrz|1-StronaSubst}}, a następnie ile razy został powtórzony, liczymy to z: {{LinkŚródtytuł|Powtarzane}}. Ten wynik wykorzystujemy, to liczenia spisu treści: {{Code|toc_nowe}} {{LinkPatrz|toc_nowe}}. Wynik dla danego artykułu liczymi z funkcji: {{LinkŚródtytuł|StronaSubstParametr}}, jest to: {{Code|str}} {{Patrz|str}}. On jest zapisywany pod różnymi zmiennymi w tablicach wielowymiarowych, w zależności, czy podan parametry pudełkowe. Dla parametru: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, który jest prawdziwy, wtedy funkcja zbiera dane w tabeli: {{Code|glowna_tablica}} {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną o kluczu: {{Code|StronaSubst}} {{LinkPatrz|StronaSubst-StronaSubst}}, jest tworzona wielowymiarowa zmienna, pod którą jest zapisywany ten wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]=str; </syntaxhighlight> A gdy zmienna: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywa, wtedy dla: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną o kluczu: {{Code|StronaSubstInne}} {{LinkPatrz|StronaSubstInne-StronaSubst}}, jest tworzona wielowymiarowa zmienna, też parametrów nazw książki, pod którą zapisywany jest ten wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][strona][(czy_link and "tak" or "")]=str; </syntaxhighlight> {{Hr}} W obu tworzonych tabelach zależy to od parametru, od wartości zmiennej: {{Code|strona}}, czyli: {{LinkPatrz|1-StronaSubst}}, którą jest nazwą artykułu, a gdy mamy niepustą zmienną: {{Code|link}} {{LinkPatrz|link-StronaSubst}}, wtedy następna zmienna jest ustawiana na: {{Code|tak}}, w przeciwnym wypadku mamy, dla niej, ciąg pusty, a pod: {{Code|str}}, jest ukryta zawartość szablonu {{LinkPatrz|StronaSubst-Szablon}}. ==== KsiążkaSubst ==== Funkcje poniżej wykorzystywane są przez szablon: {{Code|{{s|KsiążkaSubst}}}} {{LinkPatrz|KsiążkaSubst-Szablon}}. Funkcja: {{LinkŚródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, przez niego jest używana na stronie zbiorczej rozdziału, nawet podana za pomocą parametrów pudełkowych, ale też strony zbiorczej, i {{LinkŚródtytuł|AnalizowanieWoluminu}}, jest używana do analizowania całych wszystkich artykułów wraz z rozdziałami spisów książki, na stronie ich zbiorczej, lub podana ta strona jest przy pomocy też tych samych parametriów, ale o innej wartości. ===== {{Śródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}{{Code|AnalizowanieStronyWoluminuWprowadzeniaTekstu}} ===== Funkcja liczy strony zbiorcze dla danego rozdziału, oprócz wersji: do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}}, i druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}. W tym przypadku dla aktualnej książki, gdy niepodano zmiennych pudełkowych, lub one wskazują na ten artykuł, funkcja sprawdza zmienną: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, a jeżeli taki artykuł istnieje, to program tej funkcji jest zakańczany, a jeżeli nie, to sprawdzane jest, czy taki rozdział, któremu symbolizuje artykuł książki, w której leży ten szablon, czy rzeczywiście jest zbiorczy. Jeżeli mamy do czynienia z nieaktualną książką tylko inną, i podano parametry pudełkowe, to funkcja sprawdza też w: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|KsiążkaSubstInneRozdział}} {{Patrz|KsiążkaSubstInneRozdział-AnalizowanieWoluminu}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno ze zmiennych: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę. Jeśli funkcja nie zakończyła przedwcześnie pracy, wtedy ona liczy parametry: {{Code|naglowki}} {{LinkPatrz|naglowki}}, {{Code|sekcje}} {{LinkPatrz|sekcje}} i {{Code|postep}} {{LinkPatrz|postep-StronaSubstParametr}}, {{Code|ktore}} {{Patrz|ktore}}, jeżeli tej zmiennej nie podano, to ona domyślnie przyjmuje wartość {{Code|1}}, z {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. Funkcja liczy numer tego samego rozdziału. Ona wykorzystuje do tego zmienną: {{Code|ktore}} {{LinkPatrz|ktore}}, aby policzyć ten ściśle określony rozdział, by zwrócić wikikod {{LinkPatrz|wikikod}}. Dla aktualnego wyszukanego rozdziału zgodnego z nazwą artykułu jako strona zbiorcza, jeżeli taki istnieje, wtedy funkcja wyświetla jakiolwiek wynik, np. też z artykułami, jeżeli w nim istnieją takie. Funkcja wtedy inicjuje zmienną: {{Code|HNumer}} {{LinkPatrz|HNumer}} jako wynik z {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}, następnie, za pomocą niej, listuje wynik przy pomocy: {{LinkŚródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}, uzyskując w ten sposób wikikod {{LinkPatrz|wikikod}}. Według tej funkcji: cały taki wynik jest to serią znaczników: {{Tag|div|parametry=class="rozdział_książki"}}, a w nich poszczególnych są nagłówki artykułów, i pojedyncze adresy tych stron (czasami jest on ukryty, bo uruchomiony jest parametr postępu) lub ukryte w linku w nagłówku, a w nich one są okrążone: {{Tag|div|parametry=class="strona_subst"}}, którego zawartość jest zamieniana przez {{lpg|JavaScript}} na stronę o tym adresie. Dla parametru: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, który jest prawdziwy - aktualny artykuł, jeśli nie podano parametrów pudełkowych, lub one wskazują na ten artykuł, wtedy funkcja zbiera dane w tabeli: {{Code|glowna_tablica}} {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną o kluczu: {{Code|KsiążkaSubst}} {{Patrz|KsiążkaSubst-AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, jest zapisywany wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod; </syntaxhighlight> A gdy zmienna: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywa - nieaktualny artykuł, parametry pudełkowe już są, wtedy dla: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną: {{Code|KsiążkaSubstInneRozdział}} {{Patrz|KsiążkaSubstInneRozdział-AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, jest tworzona odpowiednia podtablica ze zmiennych nazw książki, a tam w końcu, pod kluczem artykułu, jest zapisywany wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][substrona]=wikikod </syntaxhighlight> Funkcja zwraca w ten sposób uzyskany wikikod {{LinkPatrz|wikikod}} dla całego rozdziału, lub ciąg pusty, jeżeli takiego rozdziału nie znaleziono. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista_artykulow_w_ksiazce}} | _1 = Jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 2 = {{Code|substrona}} | _2 = Jak w: {{LinkPatrz|substrona}}. | 3 = {{Code|tabela_parametrow_szablonu}} | _3 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. | 4 = {{Code|czy_artykul_aktualny}} | _4 = Jak w: {{LinkPatrz|czy_artykul_aktualny}}. | 5 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _5 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} Funkcja jest wykorzystywana w definicji funkcji zwracanej: {{LinkŚródtytuł|FunRozdzial}}. ===== {{Śródtytuł|AnalizowanieWoluminu}}{{Code|AnalizowanieWoluminu}} ===== Funkcja liczy strony zbiorcze dla całej ksiązki, oprócz wersji: do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}}, i druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}. W tym przypadku dla aktualnej książki, gdy nie podano zmiennych pudełkowych, lub one wskazują na ten artykuł, funkcja sprawdza zmienną: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|KsiążkaSubst}} {{Patrz|KsiążkaSubst-AnalizowanieWoluminu}}, a jeżeli taki, już policzony, artykuł istnieje, to program tej funkcji jest zakańczany. Jeżeli nie mamy do czynienia z aktualną książką tylko z inną, i podano parametry pudełkowe, to funkcja sprawdza też w: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|KsiążkaSubstInne}} {{Patrz|KsiążkaSubstInne-AnalizowanieWoluminu}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno zbudowanych ze zmiennych: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę. Jeżeli funkcja przedwcześnie nie zakończyła pracy, wtedy liczy parametry: {{Code|naglowki}} {{LinkPatrz|naglowki}}, {{Code|sekcje}} {{LinkPatrz|sekcje}} i {{LinkPatrz|postep-StronaSubstParametr}}, z {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}, oraz inicjowana jest funkcja: {{Code|HNumer}} {{LinkPatrz|HNumer}}, przy pomocy innej: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. Możliwe jest ze rozdział może nie składać się z żadnych artykułów, czyli funkcja liczy wszystkie rozdziały będące przed danymi artykułami. Ona liczy ich poziom z: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstu}}, tzn. {{Code|m}} {{Patrz|m-AnalizowanieWoluminu}}, aby funkcja poszła dalej w pętli, to ona nie może być poziomem {{LinkPatrz|m-AnalizowanieWoluminu}} równy zero, rozdział równy pustemu łańcuchowi, {{Code|Spis treści}}, {{Code|Bibliografia}}, {{Code|Zobacz też}}, {{Code|Inne}} i {{Code|Licencja}}, co na podstawie tego jest liczony jego numer poziomu z: {{Code|HNumer}} {{LinkPatrz|HNumer}}, tzn. {{Code|m_uzyskane}} {{Patrz|m_uzyskane}}, a następnie rozdział z {{Code|{{sr|#p.NapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, a do niego był wsadzony jako drugi parametr, tzn. tą ostatnią policzoną zmienną. Dalej jest wskazywany, które jest powtórzenie danego rozdziału z {{LinkŚródtytuł|Powtarzane}}, co na tej podstawie, licząc od tego pierwszego takiego rozdziału, co ten numer jest wykorzystywany w tablicy liczączej spis treści, strony zbiorczej, czyli: {{Code|toc_nowe}} {{LinkPatrz|toc_nowe}}. Co potem po wszystkich rozdziałach, nie posiadających w sobie artykułów, lub nie, wtedy liczymy listę artykułów w danym rozdziale, jego wikikod, i zaaktualizowaną wersję:, {{Code|toc_nowe}} {{LinkPatrz|toc_nowe}}, według funkcji: {{LinkŚródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}. Według tej funkcji: cały taki wynik jest otoczony: {{Tag|div|parametry=class="klasa_książki"}}, a w niej są większe rozdziały - one to są rozdziały w spisie, ale nie w artykule, a w niej a te rozdziały wraz artykułami są okrążone: {{Tag|div|parametry=class="klasa_naglowka klasa_nagłówka"}}, a w nich są dla danego rozdziału: a w nich są wszystkie artykuły w nich się znajdujące, którego każda reprezentuje inne: {{Tag|div|parametry=class="rozdział_książki"}}, a w nich poszczególnych są nagłówki artykułów, i pojedyncze adresy tych stron (jeślimamy uruchimiony postęp, to ten adres jest ukryty według: {{Code|display:none;}}) lub w postaci linku w nagłówka, a w nich one są okrążone: {{Tag|div|parametry=class="strona_subst"}}, którego zawartość jest zamieniana przez {{lpg|JavaScript}} na stronę o tym adresie. Dla aktualnej książki wynik jest zapisywany pod zmienną: {{Code|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, jeśli nie podano parametrów pudełkowych, w przeciwnym wypadku pod: {{Code|KsiążkaSubstInne}} {{LinkPatrz|KsiążkaSubstInne-AnalizowanieWoluminu}}. Dla parametru: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, który jest prawdziwy, wtedy funkcja zbiera dane w tabeli: {{Code|glowna_tablica}} {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną o kluczu: {{Code|KsiążkaSubst}} {{Patrz|KsiążkaSubst-StronaSubst}}, jest zapisywany wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod; </syntaxhighlight> A gdy zmienna: {{Code|czy_artykul_aktualny}} {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywa, wtedy dla: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną: {{Code|StronaSubstInne}} {{Patrz|KsiążkaSubstInne-StronaSubst}}, jest tworzona ta wielowymiarowa zmienna, pod którą jesst zapisywany wynik: <syntaxhighlight lang="lua"> glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=wikikod; </syntaxhighlight> Widzimy, że funkcja zwraca w ten sposób uzyskany wikikod {{LinkPatrz|wikikod}} dla całej książki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_lista_artykulow_w_ksiazce}} | _1 = Jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. | 3 = {{Code|czy_artykul_aktualny}} | _3 = Jak w: {{LinkPatrz|czy_artykul_aktualny}}. | 4 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _4 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} Funkcja jest wykorzystywana w definicji funkcji zwracanej: {{LinkŚródtytuł|TakFun}}. ==== Funkcje analizujące strony zbiorcze lub inne ==== ===== {{Śródtytuł|NieFun}}{{Code|NieFun}} ===== Jest to funkcja zwracająca inną funkcję, która to z kolei zwraca zawsze wartość pustą. Funkcja zwracana jest to funkcja: {{LinkPatrz|NieFun-AnalizaStronaSubst}}, w: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Ta funkcja zwracana przez funkcję w nagłówku jest wykorzystywana wtedy, gdy nie mamy do czynienia z żadną stroną zbiorczą, tylko ze zwykłym artykułem. Definicja poglądowa funkcji: <syntaxhighlight lang="lua"> local NieFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny) return function(parametr) return "";end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu-NieFun}} | _1 = Tabela parametrów szablonu: {{LinkPatrz|KsiążkaSubst-Szablon}}. | 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu-NieFun}} | _2 = Nazwa tego szablonu. | 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow-NieFun}} | _3 = Tabela jego modyfikatorów. | 4 = {{Code|czy_artykul_aktualny}} {{Patrz|czy_artykul_aktualny-NieFun}} | _4 = Czy dotyczy aktualnej książki, dla danego artykułu, na stronie zbiorczej tego woluminu. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Jest to dowolny parametr, w: {{Code|{{ld2|StronicowyParser/StronaSubst}}}}, przyjmuje wartość: {{Code|nil}}. }} ===== {{Śródtytuł|TakFun}}{{Code|TakFun}} ===== Funkcja zwracająca inną funkcję, której wywołanie jest funkcją z: {{LinkPatrz|TakFun-AnalizaStronaSubst}}, w: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Funkcja zwracana zwraca zawsze wartość odpowiadającą wartości logicznej prawdziwej. Tą funkcją zwracaną przez funkcję w nagłówku mamy do czynienia, gdy mamy do czynienia ze stronami zbiorczymi odpowiadzialnymi za stronę o: wersji: do czytania: {{Tt|Wersja do czytania}} {{LinkPatrz|Wersja do czytania}}, lub druku: {{Tt|Wersja do druku}} {{LinkPatrz|Wersja do druku}}. Definicja pogladowa funkcji: <syntaxhighlight lang="lua"> local TakFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny) return function(tab_lista_artykulow_w_ksiazce,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return "tak"; end; end; </syntaxhighlight> Funkcja wywołuje funkcję: {{LinkŚródtytuł|AnalizowanieWoluminu}}, do analizy woluminu, pojedynczego na stronie zbiorczej, ale nie rozdziałowej, tzn. te jednostki, które nie są zbiorczym obiektem dla stron danego rozdziału. Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu-NieFun}}. | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow-NieFun}}. | 4 = {{Code|czy_artykul_aktualny}} | _4 = Jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tab_lista_artykulow_w_ksiazce}} | _1 = Jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}} | 3 = {{Code|czy_artykul_aktualny}} | _3 = Jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}} | 4 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _4 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} ===== {{Śródtytuł|FunRozdzial}}{{Code|FunRozdzial}} ===== Funkcja zwraca inna funkcję, która jest tym: {{LinkPatrz|FunRozdzial-AnalizaStronaSubst}}, z: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Funkcja zwracana zawsze zwraca wartość odpowiadająca wartości logicznej prawdziwej. Tą funkcję zwracaną przez funkcję w nagłówku używaną, gdy mamy do czynienia, ze stronami zbiorczymi odpowiadzialnymi za rozdziały, która zbiera artykuły danego rozdziału. Definicja poglądowa funkcji: <syntaxhighlight lang="lua"> local FunRozdzial=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny) return function(tab_lista_artykulow_w_ksiazce,substrona,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return "tak"; end; end; </syntaxhighlight> Funkcja wywołuje funkcję: {{LinkŚródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, do analizy woluminu, pojedynczego na stronie zbiorczej, ale rozdziałowej, tzn. te jednostki, które są zbiorczym obiektem dla stron danego rozdziału. Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}. | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu-NieFun}}. | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow-NieFun}}. | 4 = {{Code|czy_artykul_aktualny}} | _4 = Jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tab_lista_artykulow_w_ksiazce}} | _1 = Jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}. | 2 = {{Code|substrona}} {{Patrz|substrona}} | _2 = Nazwa artykułu strony zbiorczej rozdziałowej. | 3 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} | _3 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fpfaf656rs6oof6rhzbp3k9c8t2ii3b Moduł:StronicowyParser/SzablonyTekstu 828 63668 558413 558411 2026-10-03T12:44:00Z Persino 2851 558413 Scribunto text/plain local p={}; p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(true)then local parametry_modul=require("Module:Parametry"); local tablica_analizy_obiektow_strony_dany_modul_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony); return tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare; end; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local __tablica_analizy_obiektow_strony_dany_modul={}; local __tablica_danych_parametrow_szablonu_strony={}; local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local function TemFunc(tab_co) local __metatablica={}; szablonowe_potrzebne_modul.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]); end; local parametry_modul=require("Module:Parametry"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for szablon,obiekt,kod in iterator do __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _,wartosc in pairs(tab_obiekt)do local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(tab_element_wartosc)then local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod]; if(tab_elements_kod)then if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then __tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; if(parametry_modul.TypeTable(tab_elements_kod))then __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod); else __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod; end; end; end; end; end; end; return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; end; p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu) --if(true)then return tekst;end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane; local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul; tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony; ---- local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then --if(true)then return nil,true;end; local wynik=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) if(szablony_tekstu[nazwa_szablonu])then local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); ---- tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu; local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$"); if(klucz)then if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz]; wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz; if(wartosc_klucz)then return wartosc_klucz;end; end; end; end; return nil,true; end); local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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) if( (numerowane_obiekty[nazwa_szablonu]) or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu]) or(nienumerowane_obiekty_tekstu[nazwa_szablonu]) )then local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local status; if(uchwyt)then local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __uchwyt_tekstu; uchwyt=__uchwyt_tekstu or uchwyt; end; if(nazwa_artykulu)then local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_artykulu_tekstu; nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu; end; if(nazwa_ksiazki)then local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_ksiazki_tekstu; nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki; end; --[[if( (status) or( (not czy_bez_preprocess) and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu))) ) )then]] tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil; tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil; tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil; local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false); __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; __tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil; --[[end;]] end; return nil; end); end; return nil,true; end); end; end); end; return nil,true; end,nil, function(szablon,obiekt,kod,poziom_iteracji,tekst) if(poziom_iteracji>0)then return nil; end; return szablon; end); return tekst; end; function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu) local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1]; return tekst; end; function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu) return tabela_parametrow_szablonu["bez preprocess"]; end; function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja); end; end; end; function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany) if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; end; function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany) local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do local nazwa_obiektu_tekstu=pozycja[1][1]; local uchwyt_obiektu_tekstu=pozycja[1][2][1]; if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then local dodatkowe_elementy=pozycja[2]; local czy_tak=false; for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then czy_tak=true; break; end; end; if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; end; end; end; end; end; function p.UstawPobierzKorzystanie(tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do if(not pozycja[3])then pozycja[3]=true; local nazwa_obiektu=pozycja[1][1]; local uchwyt_obiektu=pozycja[1][2]; local obiekt=pozycja[2][1]; local kod=pozycja[2][2]; p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true); end; end; end; end; function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane) local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul; local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony; local __obiekt=(pozycja[3] or {})[2]; local __kod=(pozycja[3] or {})[3]; local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod]; local szablonowe_modul=require("Module:Szablonowe"); local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu; nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local parametry_modul=require("Module:Parametry"); local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul); local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony); local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu); local __tabela_parametrow_szablonu=pozycja[3][1][1]; ---- local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); if(tekst)then local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); ---- local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); --local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul); local tab_numer={}; local tab_tak={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) obiekt_rodzica=obiekt_rodzica or true; kod_rodzica=kod_rodzica or true; local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]; if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end; local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]; if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end; local czy_tak=tab_tak_kod_rodzica[obiekt]; tab_tak_kod_rodzica[obiekt]=true; tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); local max_numer=tab_numer[obiekt]; local kod_temp=kod+max_numer; --tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon; local ile; if(not czy_tak)then szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod) kod=tonumber(kod) or nil; return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer); end); end; local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod) local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _, wartosc in pairs(tab_obiekt)do local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(not tab_wartosc)then tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod]; local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka; tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka; end; end; end; TempFunc(tablica_danych_parametrow_szablonu_strony,kod); if(poziom_iteracji>0)then tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica); local max_numer_rodzica=tab_numer[obiekt_rodzica]; kod_rodzica=kod_rodzica+max_numer_rodzica; end; if(not czy_tak)then return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; else return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; end; return; end); return tekst; ---- end; return; end; function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych) local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_obiekty=pozycja[2]; for _,pozycja2 in ipairs(tab_obiekty)do local __obiekt=pozycja2[1]; local __kod=pozycja2[2]; if((__obiekt==obiekt)and(__kod==kod))then local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane); if(szablon)then tab_numer=pozycja2[3]; return szablon,tab_numer; end; return; end; end; end; end; local szablon;local tab_numer; if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true); end; if(not szablon)then if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false); end; end; if(szablon)then return szablon,tab_numer;end; return nil; end; function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych) local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych; for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do local __obiekt=pozycja[3][2]; local __kod=pozycja[3][3]; if((obiekt==__obiekt)and(kod==__kod))then local tabela_parametrow_szablonu=pozycja[3][1][1]; local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); if(tekst)then return tekst;end; return nil; end; end; return nil; end; function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end; if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then local function TempFunc(tablica_szablonu_tekstu) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_pobierz=pozycja[2]; for _,value in ipairs(tab_pobierz)do return true; end; end; return nil; end; if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end; end; local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty"); local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local czy_pobierz=nil; local szablonowe_modul=require("Module:Szablonowe"); local ___tabela_parametrow_szablonu; tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(czy_pobierz)then szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych); if(szablon)then IterowaniePoElementachTekstu(szablon,tab_numer); end; else szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych); end; if(szablon)then return szablon;end; return nil; end,nil, function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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_pobierz_szablonu_tekstu[nazwa_szablonu])then czy_pobierz=true; ___tabela_parametrow_szablonu=tabela_parametrow_szablonu; return true; elseif(tab_szablony_tekstu[nazwa_szablonu])then czy_pobierz=false; return true; end; return nil; end); if(wynik)then return wynik;end; end; return nil; end); return tekst_rozwiniety_calego_artykulu; end; return p; mminhf42f20okyieb0siyimxo4rb840 558415 558413 2026-10-03T12:47:43Z Persino 2851 558415 Scribunto text/plain local p={}; p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local __tablica_analizy_obiektow_strony_dany_modul={}; local __tablica_danych_parametrow_szablonu_strony={}; local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local function TemFunc(tab_co) local __metatablica={}; szablonowe_potrzebne_modul.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]); end; local parametry_modul=require("Module:Parametry"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for szablon,obiekt,kod in iterator do __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _,wartosc in pairs(tab_obiekt)do local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(tab_element_wartosc)then local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod]; if(tab_elements_kod)then if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then __tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; if(parametry_modul.TypeTable(tab_elements_kod))then __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod); else __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod; end; end; end; end; end; end; return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; end; p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu) --if(true)then return tekst;end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane; local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul; tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony; ---- local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then --if(true)then return nil,true;end; local wynik=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) if(szablony_tekstu[nazwa_szablonu])then local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); ---- tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu; local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$"); if(klucz)then if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz]; wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz; if(wartosc_klucz)then return wartosc_klucz;end; end; end; end; return nil,true; end); local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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) if( (numerowane_obiekty[nazwa_szablonu]) or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu]) or(nienumerowane_obiekty_tekstu[nazwa_szablonu]) )then local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local status; if(uchwyt)then local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __uchwyt_tekstu; uchwyt=__uchwyt_tekstu or uchwyt; end; if(nazwa_artykulu)then local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_artykulu_tekstu; nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu; end; if(nazwa_ksiazki)then local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_ksiazki_tekstu; nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki; end; --[[if( (status) or( (not czy_bez_preprocess) and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu))) ) )then]] tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil; tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil; tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil; local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false); __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; __tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil; --[[end;]] end; return nil; end); end; return nil,true; end); end; end); end; return nil,true; end,nil, function(szablon,obiekt,kod,poziom_iteracji,tekst) if(poziom_iteracji>0)then return nil; end; return szablon; end); return tekst; end; function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu) local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1]; return tekst; end; function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu) return tabela_parametrow_szablonu["bez preprocess"]; end; function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja); end; end; end; function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany) if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; end; function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany) local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do local nazwa_obiektu_tekstu=pozycja[1][1]; local uchwyt_obiektu_tekstu=pozycja[1][2][1]; if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then local dodatkowe_elementy=pozycja[2]; local czy_tak=false; for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then czy_tak=true; break; end; end; if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; end; end; end; end; end; function p.UstawPobierzKorzystanie(tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do if(not pozycja[3])then pozycja[3]=true; local nazwa_obiektu=pozycja[1][1]; local uchwyt_obiektu=pozycja[1][2]; local obiekt=pozycja[2][1]; local kod=pozycja[2][2]; p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true); end; end; end; end; function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane) local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul; local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony; local __obiekt=(pozycja[3] or {})[2]; local __kod=(pozycja[3] or {})[3]; local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod]; local szablonowe_modul=require("Module:Szablonowe"); local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu; nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local parametry_modul=require("Module:Parametry"); local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul); local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony); local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu); local __tabela_parametrow_szablonu=pozycja[3][1][1]; ---- local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); if(tekst)then local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); ---- local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); --local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul); local tab_numer={}; local tab_tak={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) obiekt_rodzica=obiekt_rodzica or true; kod_rodzica=kod_rodzica or true; local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]; if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end; local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]; if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end; local czy_tak=tab_tak_kod_rodzica[obiekt]; tab_tak_kod_rodzica[obiekt]=true; tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); local max_numer=tab_numer[obiekt]; local kod_temp=kod+max_numer; --tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon; local ile; if(not czy_tak)then szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod) kod=tonumber(kod) or nil; return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer); end); end; local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod) local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _, wartosc in pairs(tab_obiekt)do local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(not tab_wartosc)then tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod]; local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka; tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka; end; end; end; TempFunc(tablica_danych_parametrow_szablonu_strony,kod); if(poziom_iteracji>0)then tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica); local max_numer_rodzica=tab_numer[obiekt_rodzica]; kod_rodzica=kod_rodzica+max_numer_rodzica; end; if(not czy_tak)then return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; else return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; end; return; end); return tekst; ---- end; return; end; function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych) local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_obiekty=pozycja[2]; for _,pozycja2 in ipairs(tab_obiekty)do local __obiekt=pozycja2[1]; local __kod=pozycja2[2]; if((__obiekt==obiekt)and(__kod==kod))then local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane); if(szablon)then tab_numer=pozycja2[3]; return szablon,tab_numer; end; return; end; end; end; end; local szablon;local tab_numer; if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true); end; if(not szablon)then if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false); end; end; if(szablon)then return szablon,tab_numer;end; return nil; end; function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych) local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych; for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do local __obiekt=pozycja[3][2]; local __kod=pozycja[3][3]; if((obiekt==__obiekt)and(kod==__kod))then local tabela_parametrow_szablonu=pozycja[3][1][1]; local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); if(tekst)then return tekst;end; return nil; end; end; return nil; end; function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end; if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then local function TempFunc(tablica_szablonu_tekstu) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_pobierz=pozycja[2]; for _,value in ipairs(tab_pobierz)do return true; end; end; return nil; end; if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end; end; local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty"); local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local czy_pobierz=nil; local szablonowe_modul=require("Module:Szablonowe"); local ___tabela_parametrow_szablonu; tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(czy_pobierz)then szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych); if(szablon)then IterowaniePoElementachTekstu(szablon,tab_numer); end; else szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych); end; if(szablon)then return szablon;end; return nil; end,nil, function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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_pobierz_szablonu_tekstu[nazwa_szablonu])then czy_pobierz=true; ___tabela_parametrow_szablonu=tabela_parametrow_szablonu; return true; elseif(tab_szablony_tekstu[nazwa_szablonu])then czy_pobierz=false; return true; end; return nil; end); if(wynik)then return wynik;end; end; return nil; end); return tekst_rozwiniety_calego_artykulu; end; return p; tu6ngqlk9ur7k1sok692bgvsicoszri 558416 558415 2026-10-03T12:58:07Z Persino 2851 558416 Scribunto text/plain local p={}; p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(true)then local parametry_modul=require("Module:Parametry"); local tablica_analizy_obiektow_strony_dany_modul_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony_stare=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony); return tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare; end; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local __tablica_analizy_obiektow_strony_dany_modul={}; local __tablica_danych_parametrow_szablonu_strony={}; local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local function TemFunc(tab_co) local __metatablica={}; szablonowe_potrzebne_modul.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]); end; local parametry_modul=require("Module:Parametry"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for szablon,obiekt,kod in iterator do __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _,wartosc in pairs(tab_obiekt)do local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(tab_element_wartosc)then local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod]; if(tab_elements_kod)then if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then __tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; if(parametry_modul.TypeTable(tab_elements_kod))then __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod); else __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod; end; end; end; end; end; end; return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; end; p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu) --if(true)then return tekst;end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane; local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul; tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony; ---- local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then --if(true)then return nil,true;end; local wynik=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) if(szablony_tekstu[nazwa_szablonu])then local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); ---- tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu; local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$"); if(klucz)then if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz]; wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz; if(wartosc_klucz)then return wartosc_klucz;end; end; end; end; return nil,true; end); local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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) if( (numerowane_obiekty[nazwa_szablonu]) or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu]) or(nienumerowane_obiekty_tekstu[nazwa_szablonu]) )then local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local status; if(uchwyt)then local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __uchwyt_tekstu; uchwyt=__uchwyt_tekstu or uchwyt; end; if(nazwa_artykulu)then local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_artykulu_tekstu; nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu; end; if(nazwa_ksiazki)then local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_ksiazki_tekstu; nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki; end; --[[if( (status) or( (not czy_bez_preprocess) and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu))) ) )then]] tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil; tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil; tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil; local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false); __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; __tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil; --[[end;]] end; return nil; end); end; return nil,true; end); end; end); end; return nil,true; end,nil, function(szablon,obiekt,kod,poziom_iteracji,tekst) if(poziom_iteracji>0)then return nil; end; return szablon; end); return tekst; end; function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu) local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1]; return tekst; end; function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu) return tabela_parametrow_szablonu["bez preprocess"]; end; function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja); end; end; end; function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany) if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; end; function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany) local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do local nazwa_obiektu_tekstu=pozycja[1][1]; local uchwyt_obiektu_tekstu=pozycja[1][2][1]; if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then local dodatkowe_elementy=pozycja[2]; local czy_tak=false; for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then czy_tak=true; break; end; end; if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; end; end; end; end; end; function p.UstawPobierzKorzystanie(tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do if(not pozycja[3])then pozycja[3]=true; local nazwa_obiektu=pozycja[1][1]; local uchwyt_obiektu=pozycja[1][2]; local obiekt=pozycja[2][1]; local kod=pozycja[2][2]; p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true); end; end; end; end; function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane) local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul; local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony; local __obiekt=(pozycja[3] or {})[2]; local __kod=(pozycja[3] or {})[3]; local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod]; local szablonowe_modul=require("Module:Szablonowe"); local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu; nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local parametry_modul=require("Module:Parametry"); local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul); local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony); local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu); local __tabela_parametrow_szablonu=pozycja[3][1][1]; ---- local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); if(tekst)then local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); ---- local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); --local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul); local tab_numer={}; local tab_tak={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) obiekt_rodzica=obiekt_rodzica or true; kod_rodzica=kod_rodzica or true; local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]; if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end; local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]; if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end; local czy_tak=tab_tak_kod_rodzica[obiekt]; tab_tak_kod_rodzica[obiekt]=true; tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); local max_numer=tab_numer[obiekt]; local kod_temp=kod+max_numer; --tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon; local ile; if(not czy_tak)then szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod) kod=tonumber(kod) or nil; return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer); end); end; local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod) local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _, wartosc in pairs(tab_obiekt)do local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(not tab_wartosc)then tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod]; local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka; tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka; end; end; end; TempFunc(tablica_danych_parametrow_szablonu_strony,kod); if(poziom_iteracji>0)then tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica); local max_numer_rodzica=tab_numer[obiekt_rodzica]; kod_rodzica=kod_rodzica+max_numer_rodzica; end; if(not czy_tak)then return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; else return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; end; return; end); return tekst; ---- end; return; end; function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych) local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_obiekty=pozycja[2]; for _,pozycja2 in ipairs(tab_obiekty)do local __obiekt=pozycja2[1]; local __kod=pozycja2[2]; if((__obiekt==obiekt)and(__kod==kod))then local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane); if(szablon)then tab_numer=pozycja2[3]; return szablon,tab_numer; end; return; end; end; end; end; local szablon;local tab_numer; if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true); end; if(not szablon)then if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false); end; end; if(szablon)then return szablon,tab_numer;end; return nil; end; function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych) local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych; for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do local __obiekt=pozycja[3][2]; local __kod=pozycja[3][3]; if((obiekt==__obiekt)and(kod==__kod))then local tabela_parametrow_szablonu=pozycja[3][1][1]; local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); if(tekst)then return tekst;end; return nil; end; end; return nil; end; function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end; if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then local function TempFunc(tablica_szablonu_tekstu) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_pobierz=pozycja[2]; for _,value in ipairs(tab_pobierz)do return true; end; end; return nil; end; if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end; end; local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty"); local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local czy_pobierz=nil; local szablonowe_modul=require("Module:Szablonowe"); local ___tabela_parametrow_szablonu; tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(czy_pobierz)then szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych); if(szablon)then IterowaniePoElementachTekstu(szablon,tab_numer); end; else szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych); end; if(szablon)then return szablon;end; return nil; end,nil, function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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_pobierz_szablonu_tekstu[nazwa_szablonu])then czy_pobierz=true; ___tabela_parametrow_szablonu=tabela_parametrow_szablonu; return true; elseif(tab_szablony_tekstu[nazwa_szablonu])then czy_pobierz=false; return true; end; return nil; end); if(wynik)then return wynik;end; end; return nil; end); return tekst_rozwiniety_calego_artykulu; end; return p; 5mhp0ghh0s2jfcawlvsx9ou1o3ajm5y 558419 558416 2026-10-03T13:28:36Z Persino 2851 558419 Scribunto text/plain local p={}; p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local __tablica_analizy_obiektow_strony_dany_modul={}; local __tablica_danych_parametrow_szablonu_strony={}; local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local function TemFunc(tab_co) local __metatablica={}; szablonowe_potrzebne_modul.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; TemFunc(__tablica_analizy_obiektow_strony_dany_modul[obiekt]); end; local parametry_modul=require("Module:Parametry"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for szablon,obiekt,kod in iterator do __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _,wartosc in pairs(tab_obiekt)do local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(tab_element_wartosc)then local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod]; if(tab_elements_kod)then if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then __tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; if(parametry_modul.TypeTable(tab_elements_kod))then __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod); else __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod; end; end; end; end; end; end; return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; end; p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu) --if(true)then return tekst;end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane; local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul; tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony; ---- local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then --if(true)then return nil,true;end; local wynik=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) if(szablony_tekstu[nazwa_szablonu])then local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); ---- tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu; local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$"); if(klucz)then if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz]; wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz; if(wartosc_klucz)then return wartosc_klucz;end; end; end; end; return nil,true; end); local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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) if( (numerowane_obiekty[nazwa_szablonu]) or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu]) or(nienumerowane_obiekty_tekstu[nazwa_szablonu]) )then local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local status; if(uchwyt)then local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __uchwyt_tekstu; uchwyt=__uchwyt_tekstu or uchwyt; end; if(nazwa_artykulu)then local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_artykulu_tekstu; nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu; end; if(nazwa_ksiazki)then local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_ksiazki_tekstu; nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki; end; --[[if( (status) or( (not czy_bez_preprocess) and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu))) ) )then]] tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil; tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil; tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil; local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false); __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; __tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil; --[[end;]] end; return nil; end); end; return nil,true; end); end; end); end; return nil,true; end,nil, function(szablon,obiekt,kod,poziom_iteracji,tekst) if(poziom_iteracji>0)then return nil; end; return szablon; end); return tekst; end; function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu) local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1]; return tekst; end; function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu) return tabela_parametrow_szablonu["bez preprocess"]; end; function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja); end; end; end; function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany) if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; end; function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany) local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do local nazwa_obiektu_tekstu=pozycja[1][1]; local uchwyt_obiektu_tekstu=pozycja[1][2][1]; if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then local dodatkowe_elementy=pozycja[2]; local czy_tak=false; for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then czy_tak=true; break; end; end; if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; end; end; end; end; end; function p.UstawPobierzKorzystanie(tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do if(not pozycja[3])then pozycja[3]=true; local nazwa_obiektu=pozycja[1][1]; local uchwyt_obiektu=pozycja[1][2]; local obiekt=pozycja[2][1]; local kod=pozycja[2][2]; p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true); end; end; end; end; function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane) local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul; local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony; local __obiekt=(pozycja[3] or {})[2]; local __kod=(pozycja[3] or {})[3]; local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod]; local szablonowe_modul=require("Module:Szablonowe"); local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu; nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local parametry_modul=require("Module:Parametry"); local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul); local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony); local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu); local __tabela_parametrow_szablonu=pozycja[3][1][1]; ---- local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); if(tekst)then local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); ---- local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); --local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul); local tab_numer={}; local tab_tak={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) obiekt_rodzica=obiekt_rodzica or true; kod_rodzica=kod_rodzica or true; local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]; if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end; local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]; if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end; local czy_tak=tab_tak_kod_rodzica[obiekt]; tab_tak_kod_rodzica[obiekt]=true; tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); local max_numer=tab_numer[obiekt]; local kod_temp=kod+max_numer; --tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon; local ile; if(not czy_tak)then szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod) kod=tonumber(kod) or nil; return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer); end); end; local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod) local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _, wartosc in pairs(tab_obiekt)do local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(not tab_wartosc)then tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod]; local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka; tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka; end; end; end; TempFunc(tablica_danych_parametrow_szablonu_strony,kod); if(poziom_iteracji>0)then tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica); local max_numer_rodzica=tab_numer[obiekt_rodzica]; kod_rodzica=kod_rodzica+max_numer_rodzica; end; if(not czy_tak)then return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; else return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; end; return; end); return tekst; ---- end; return; end; function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych) local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_obiekty=pozycja[2]; for _,pozycja2 in ipairs(tab_obiekty)do local __obiekt=pozycja2[1]; local __kod=pozycja2[2]; if((__obiekt==obiekt)and(__kod==kod))then local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane); if(szablon)then tab_numer=pozycja2[3]; return szablon,tab_numer; end; return; end; end; end; end; local szablon;local tab_numer; if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true); end; if(not szablon)then if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false); end; end; if(szablon)then return szablon,tab_numer;end; return nil; end; function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych) local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych; for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do local __obiekt=pozycja[3][2]; local __kod=pozycja[3][3]; if((obiekt==__obiekt)and(kod==__kod))then local tabela_parametrow_szablonu=pozycja[3][1][1]; local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); if(tekst)then return tekst;end; return nil; end; end; return nil; end; function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end; if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then local function TempFunc(tablica_szablonu_tekstu) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_pobierz=pozycja[2]; for _,value in ipairs(tab_pobierz)do return true; end; end; return nil; end; if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end; end; local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty"); local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local czy_pobierz=nil; local szablonowe_modul=require("Module:Szablonowe"); local ___tabela_parametrow_szablonu; tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(czy_pobierz)then szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych); if(szablon)then IterowaniePoElementachTekstu(szablon,tab_numer); end; else szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych); end; if(szablon)then return szablon;end; return nil; end,nil, function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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_pobierz_szablonu_tekstu[nazwa_szablonu])then czy_pobierz=true; ___tabela_parametrow_szablonu=tabela_parametrow_szablonu; return true; elseif(tab_szablony_tekstu[nazwa_szablonu])then czy_pobierz=false; return true; end; return nil; end); if(wynik)then return wynik;end; end; return nil; end); return tekst_rozwiniety_calego_artykulu; end; return p; gs5uhlbgdueu12lzq35axqfx856a80i 558434 558419 2026-10-03T16:54:47Z Persino 2851 558434 Scribunto text/plain local p={}; p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local __tablica_analizy_obiektow_strony_dany_modul={}; local __tablica_danych_parametrow_szablonu_strony={}; local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; local parametry_modul=require("Module:Parametry"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for szablon,obiekt,kod in iterator do __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _,wartosc in pairs(tab_obiekt)do local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(tab_element_wartosc)then local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod]; if(tab_elements_kod)then if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then __tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; if(parametry_modul.TypeTable(tab_elements_kod))then __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod); else __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod; end; end; end; end; end; end; return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; end; p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu) --if(true)then return tekst;end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane; local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul; tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony; ---- local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then --if(true)then return nil,true;end; local wynik=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) if(szablony_tekstu[nazwa_szablonu])then local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); ---- tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu; local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$"); if(klucz)then if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz]; wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz; if(wartosc_klucz)then return wartosc_klucz;end; end; end; end; return nil,true; end); local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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) if( (numerowane_obiekty[nazwa_szablonu]) or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu]) or(nienumerowane_obiekty_tekstu[nazwa_szablonu]) )then local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local status; if(uchwyt)then local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __uchwyt_tekstu; uchwyt=__uchwyt_tekstu or uchwyt; end; if(nazwa_artykulu)then local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_artykulu_tekstu; nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu; end; if(nazwa_ksiazki)then local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_ksiazki_tekstu; nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki; end; --[[if( (status) or( (not czy_bez_preprocess) and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu))) ) )then]] tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil; tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil; tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil; local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false); __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; __tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil; --[[end;]] end; return nil; end); end; return nil,true; end); end; end); end; return nil,true; end,nil, function(szablon,obiekt,kod,poziom_iteracji,tekst) if(poziom_iteracji>0)then return nil; end; return szablon; end); return tekst; end; function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu) local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1]; return tekst; end; function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu) return tabela_parametrow_szablonu["bez preprocess"]; end; function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja); end; end; end; function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany) if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; end; function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany) local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do local nazwa_obiektu_tekstu=pozycja[1][1]; local uchwyt_obiektu_tekstu=pozycja[1][2][1]; if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then local dodatkowe_elementy=pozycja[2]; local czy_tak=false; for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then czy_tak=true; break; end; end; if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; end; end; end; end; end; function p.UstawPobierzKorzystanie(tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do if(not pozycja[3])then pozycja[3]=true; local nazwa_obiektu=pozycja[1][1]; local uchwyt_obiektu=pozycja[1][2]; local obiekt=pozycja[2][1]; local kod=pozycja[2][2]; p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true); end; end; end; end; function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane) local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul; local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony; local __obiekt=(pozycja[3] or {})[2]; local __kod=(pozycja[3] or {})[3]; local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod]; local szablonowe_modul=require("Module:Szablonowe"); local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu; nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local parametry_modul=require("Module:Parametry"); local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul); local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony); local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu); local __tabela_parametrow_szablonu=pozycja[3][1][1]; ---- local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); if(tekst)then local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); ---- local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); --local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul); local tab_numer={}; local tab_tak={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) obiekt_rodzica=obiekt_rodzica or true; kod_rodzica=kod_rodzica or true; local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]; if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end; local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]; if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end; local czy_tak=tab_tak_kod_rodzica[obiekt]; tab_tak_kod_rodzica[obiekt]=true; tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); local max_numer=tab_numer[obiekt]; local kod_temp=kod+max_numer; --tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon; local ile; if(not czy_tak)then szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod) kod=tonumber(kod) or nil; return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer); end); end; local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod) local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _, wartosc in pairs(tab_obiekt)do local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(not tab_wartosc)then tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod]; local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka; tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka; end; end; end; TempFunc(tablica_danych_parametrow_szablonu_strony,kod); if(poziom_iteracji>0)then tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica); local max_numer_rodzica=tab_numer[obiekt_rodzica]; kod_rodzica=kod_rodzica+max_numer_rodzica; end; if(not czy_tak)then return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; else return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; end; return; end); return tekst; ---- end; return; end; function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych) local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_obiekty=pozycja[2]; for _,pozycja2 in ipairs(tab_obiekty)do local __obiekt=pozycja2[1]; local __kod=pozycja2[2]; if((__obiekt==obiekt)and(__kod==kod))then local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane); if(szablon)then tab_numer=pozycja2[3]; return szablon,tab_numer; end; return; end; end; end; end; local szablon;local tab_numer; if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true); end; if(not szablon)then if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false); end; end; if(szablon)then return szablon,tab_numer;end; return nil; end; function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych) local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych; for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do local __obiekt=pozycja[3][2]; local __kod=pozycja[3][3]; if((obiekt==__obiekt)and(kod==__kod))then local tabela_parametrow_szablonu=pozycja[3][1][1]; local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); if(tekst)then return tekst;end; return nil; end; end; return nil; end; function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end; if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then local function TempFunc(tablica_szablonu_tekstu) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_pobierz=pozycja[2]; for _,value in ipairs(tab_pobierz)do return true; end; end; return nil; end; if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end; end; local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty"); local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local czy_pobierz=nil; local szablonowe_modul=require("Module:Szablonowe"); local ___tabela_parametrow_szablonu; tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(czy_pobierz)then szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych); if(szablon)then IterowaniePoElementachTekstu(szablon,tab_numer); end; else szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych); end; if(szablon)then return szablon;end; return nil; end,nil, function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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_pobierz_szablonu_tekstu[nazwa_szablonu])then czy_pobierz=true; ___tabela_parametrow_szablonu=tabela_parametrow_szablonu; return true; elseif(tab_szablony_tekstu[nazwa_szablonu])then czy_pobierz=false; return true; end; return nil; end); if(wynik)then return wynik;end; end; return nil; end); return tekst_rozwiniety_calego_artykulu; end; return p; sb5uydrdr3l1w1tvqe21pw674yyjbql 558443 558434 2026-10-03T17:40:03Z Persino 2851 558443 Scribunto text/plain local p={}; p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local __tablica_analizy_obiektow_strony_dany_modul={}; local __tablica_danych_parametrow_szablonu_strony={}; local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; local parametry_modul=require("Module:Parametry"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for szablon,obiekt,kod in iterator do __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _,wartosc in pairs(tab_obiekt)do local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(tab_element_wartosc)then local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod]; if(tab_elements_kod)then if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then __tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; if(parametry_modul.TypeTable(tab_elements_kod))then __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod); else __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod; end; end; end; end; end; end; return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; end; p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu) --if(true)then return tekst;end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane; local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul; tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony; ---- local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then --if(true)then return nil,true;end; local wynik=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) if(szablony_tekstu[nazwa_szablonu])then local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); ---- tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu; local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$"); if(klucz)then if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz]; wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz; if(wartosc_klucz)then return wartosc_klucz;end; end; end; end; return nil,true; end); local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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) if( (numerowane_obiekty[nazwa_szablonu]) or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu]) or(nienumerowane_obiekty_tekstu[nazwa_szablonu]) )then local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local status; if(uchwyt)then local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __uchwyt_tekstu; uchwyt=__uchwyt_tekstu or uchwyt; end; if(nazwa_artykulu)then local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_artykulu_tekstu; nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu; end; if(nazwa_ksiazki)then local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_ksiazki_tekstu; nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki; end; --[[if( (status) or( (not czy_bez_preprocess) and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu))) ) )then]] tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil; tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil; tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil; local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false); __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; __tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil; --[[end;]] end; return nil; end); end; return nil,true; end); end; end); end; return nil,true; end,nil, function(szablon,obiekt,kod,poziom_iteracji,tekst) if(poziom_iteracji>0)then return nil; end; return szablon; end); return tekst; end; function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu) local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1]; return tekst; end; function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu) return tabela_parametrow_szablonu["bez preprocess"]; end; function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja); end; end; end; function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany) if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; end; function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany) local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do local nazwa_obiektu_tekstu=pozycja[1][1]; local uchwyt_obiektu_tekstu=pozycja[1][2][1]; if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then local dodatkowe_elementy=pozycja[2]; local czy_tak=false; for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then czy_tak=true; break; end; end; if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; end; end; end; end; end; function p.UstawPobierzKorzystanie(tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do if(not pozycja[3])then pozycja[3]=true; local nazwa_obiektu=pozycja[1][1]; local uchwyt_obiektu=pozycja[1][2]; local obiekt=pozycja[2][1]; local kod=pozycja[2][2]; p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true); end; end; end; end; function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane) local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul; local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony; local __obiekt=(pozycja[3] or {})[2]; local __kod=(pozycja[3] or {})[3]; local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod]; local szablonowe_modul=require("Module:Szablonowe"); local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu; nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local parametry_modul=require("Module:Parametry"); local __tablica_analizy_obiektow_strony_dany_modul=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul); local __tablica_danych_parametrow_szablonu_strony=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony); local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu); local __tabela_parametrow_szablonu=pozycja[3][1][1]; ---- local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); if(tekst)then local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); ---- local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); --local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul); local tab_numer={}; local tab_tak={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) obiekt_rodzica=obiekt_rodzica or true; kod_rodzica=kod_rodzica or true; local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]; if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end; local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]; if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end; local czy_tak=tab_tak_kod_rodzica[obiekt]; tab_tak_kod_rodzica[obiekt]=true; tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); local max_numer=tab_numer[obiekt]; local kod_temp=kod+max_numer; --tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon; local ile; if(not czy_tak)then szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod) kod=tonumber(kod) or nil; return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer); end); end; local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod) local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _, wartosc in pairs(tab_obiekt)do local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(not tab_wartosc)then tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod]; local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka; tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka; end; end; end; TempFunc(tablica_danych_parametrow_szablonu_strony,kod); if(poziom_iteracji>0)then tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica); local max_numer_rodzica=tab_numer[obiekt_rodzica]; kod_rodzica=kod_rodzica+max_numer_rodzica; end; if(not czy_tak)then return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; else return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; end; return; end); return tekst; ---- end; return; end; function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych) local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_obiekty=pozycja[2]; for _,pozycja2 in ipairs(tab_obiekty)do local __obiekt=pozycja2[1]; local __kod=pozycja2[2]; if((__obiekt==obiekt)and(__kod==kod))then local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane); if(szablon)then tab_numer=pozycja2[3]; return szablon,tab_numer; end; return; end; end; end; end; local szablon;local tab_numer; if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true); end; if(not szablon)then if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false); end; end; if(szablon)then return szablon,tab_numer;end; return nil; end; function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych) local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych; for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do local __obiekt=pozycja[3][2]; local __kod=pozycja[3][3]; if((obiekt==__obiekt)and(kod==__kod))then local tabela_parametrow_szablonu=pozycja[3][1][1]; local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); if(tekst)then return tekst;end; return nil; end; end; return nil; end; function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end; if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then local function TempFunc(tablica_szablonu_tekstu) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_pobierz=pozycja[2]; for _,value in ipairs(tab_pobierz)do return true; end; end; return nil; end; if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end; end; local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty"); local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local czy_pobierz=nil; local szablonowe_modul=require("Module:Szablonowe"); local ___tabela_parametrow_szablonu; tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(czy_pobierz)then szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych); if(szablon)then IterowaniePoElementachTekstu(szablon,tab_numer); end; else szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych); end; if(szablon)then return szablon;end; return nil; end,nil, function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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_pobierz_szablonu_tekstu[nazwa_szablonu])then czy_pobierz=true; ___tabela_parametrow_szablonu=tabela_parametrow_szablonu; return true; elseif(tab_szablony_tekstu[nazwa_szablonu])then czy_pobierz=false; return true; end; return nil; end); if(wynik)then return wynik;end; end; return nil; end); return tekst_rozwiniety_calego_artykulu; end; return p; je6akoomeh9qka6d6a2eupq48pszx66 558485 558443 2026-10-04T06:39:06Z Persino 2851 558485 Scribunto text/plain local p={}; p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local __tablica_analizy_obiektow_strony_dany_modul={}; local __tablica_danych_parametrow_szablonu_strony={}; local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; local parametry_modul=require("Module:Parametry"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for szablon,obiekt,kod in iterator do __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _,wartosc in pairs(tab_obiekt)do local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(tab_element_wartosc)then local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod]; if(tab_elements_kod)then if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then __tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; if(parametry_modul.TypeTable(tab_elements_kod))then __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod); else __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod; end; end; end; end; end; end; return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; end; p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu) --if(true)then return tekst;end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane; local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul; tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony; ---- local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then --if(true)then return nil,true;end; local wynik=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) if(szablony_tekstu[nazwa_szablonu])then local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); ---- tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu; local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$"); if(klucz)then if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz]; wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz; if(wartosc_klucz)then return wartosc_klucz;end; end; end; end; return nil,true; end); local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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) if( (numerowane_obiekty[nazwa_szablonu]) or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu]) or(nienumerowane_obiekty_tekstu[nazwa_szablonu]) )then local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local status; if(uchwyt)then local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __uchwyt_tekstu; uchwyt=__uchwyt_tekstu or uchwyt; end; if(nazwa_artykulu)then local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_artykulu_tekstu; nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu; end; if(nazwa_ksiazki)then local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_ksiazki_tekstu; nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki; end; --[[if( (status) or( (not czy_bez_preprocess) and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu))) ) )then]] tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil; tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil; tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil; local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false); __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; __tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil; --[[end;]] end; return nil; end); end; return nil,true; end); end; end); end; return nil,true; end,nil, function(szablon,obiekt,kod,poziom_iteracji,tekst) if(poziom_iteracji>0)then return nil; end; return szablon; end); return tekst; end; function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu) local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1]; return tekst; end; function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu) return tabela_parametrow_szablonu["bez preprocess"]; end; function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja); end; end; end; function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany) if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; end; function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany) local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do local nazwa_obiektu_tekstu=pozycja[1][1]; local uchwyt_obiektu_tekstu=pozycja[1][2][1]; if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then local dodatkowe_elementy=pozycja[2]; local czy_tak=false; for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then czy_tak=true; break; end; end; if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; end; end; end; end; end; function p.UstawPobierzKorzystanie(tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do if(not pozycja[3])then pozycja[3]=true; local nazwa_obiektu=pozycja[1][1]; local uchwyt_obiektu=pozycja[1][2]; local obiekt=pozycja[2][1]; local kod=pozycja[2][2]; p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true); end; end; end; end; function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane) local __tablica_analizy_obiektow_strony_dany_modul_nie_pobierz=(pozycja[4] or {})[1] or tablica_analizy_obiektow_strony_dany_modul; local __tablica_danych_parametrow_szablonu_strony_nie_pobierz=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony; local __obiekt_nie_pobierz=(pozycja[3] or {})[2]; local __kod_nie_pobierz=(pozycja[3] or {})[3]; local __szablon_nie_pobierz=__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz[__obiekt_nie_pobierz][__kod_nie_pobierz]; local szablonowe_modul=require("Module:Szablonowe"); local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu; nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local parametry_modul=require("Module:Parametry"); local __tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz); local __tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony_nie_pobierz); local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt_nie_pobierz,__kod_nie_pobierz),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia,__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu); local __tabela_parametrow_szablonu_nie_pobierz=pozycja[3][1][1]; local __tabela_parametrow_szablonu_nie_pobierz_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tabela_parametrow_szablonu_nie_pobierz); ---- local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu_nie_pobierz_kopia); if(tekst)then local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); ---- local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); --local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia); local tab_numer={}; local tab_tak={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) obiekt_rodzica=obiekt_rodzica or true; kod_rodzica=kod_rodzica or true; local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]; if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end; local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]; if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end; local czy_tak=tab_tak_kod_rodzica[obiekt]; tab_tak_kod_rodzica[obiekt]=true; tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); local max_numer=tab_numer[obiekt]; local kod_temp=kod+max_numer; --tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon; local ile; if(not czy_tak)then szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod) kod=tonumber(kod) or nil; return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer); end); end; local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod) local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _, wartosc in pairs(tab_obiekt)do local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(not tab_wartosc)then tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia[wartosc] or {})[kod]; local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka; tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka; end; end; end; TempFunc(tablica_danych_parametrow_szablonu_strony,kod); if(poziom_iteracji>0)then tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica); local max_numer_rodzica=tab_numer[obiekt_rodzica]; kod_rodzica=kod_rodzica+max_numer_rodzica; end; if(not czy_tak)then return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; else return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; end; return; end); return tekst; ---- end; return; end; function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych) local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_obiekty=pozycja[2]; for _,pozycja2 in ipairs(tab_obiekty)do local __obiekt=pozycja2[1]; local __kod=pozycja2[2]; if((__obiekt==obiekt)and(__kod==kod))then local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane); if(szablon)then tab_numer=pozycja2[3]; return szablon,tab_numer; end; return; end; end; end; end; local szablon;local tab_numer; if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true); end; if(not szablon)then if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false); end; end; if(szablon)then return szablon,tab_numer;end; return nil; end; function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych) local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych; for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do local __obiekt=pozycja[3][2]; local __kod=pozycja[3][3]; if((obiekt==__obiekt)and(kod==__kod))then local tabela_parametrow_szablonu=pozycja[3][1][1]; local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); if(tekst)then return tekst;end; return nil; end; end; return nil; end; function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end; if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then local function TempFunc(tablica_szablonu_tekstu) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_pobierz=pozycja[2]; for _,value in ipairs(tab_pobierz)do return true; end; end; return nil; end; if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end; end; local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty"); local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local czy_pobierz=nil; local szablonowe_modul=require("Module:Szablonowe"); local ___tabela_parametrow_szablonu; tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(czy_pobierz)then szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych); if(szablon)then IterowaniePoElementachTekstu(szablon,tab_numer); end; else szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych); end; if(szablon)then return szablon;end; return nil; end,nil, function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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_pobierz_szablonu_tekstu[nazwa_szablonu])then czy_pobierz=true; ___tabela_parametrow_szablonu=tabela_parametrow_szablonu; return true; elseif(tab_szablony_tekstu[nazwa_szablonu])then czy_pobierz=false; return true; end; return nil; end); if(wynik)then return wynik;end; end; return nil; end); return tekst_rozwiniety_calego_artykulu; end; return p; llxf349esnxszs6j64e7d7sw5s53kdb 558489 558485 2026-10-04T07:30:33Z Persino 2851 558489 Scribunto text/plain local p={}; p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local __tablica_analizy_obiektow_strony_dany_modul={}; local __tablica_danych_parametrow_szablonu_strony={}; local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; local parametry_modul=require("Module:Parametry"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for szablon,obiekt,kod in iterator do __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _,wartosc in pairs(tab_obiekt)do local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(tab_element_wartosc)then local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod]; if(tab_elements_kod)then if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then __tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; if(parametry_modul.TypeTable(tab_elements_kod))then __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod); else __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod; end; end; end; end; end; end; return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; end; p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu) --if(true)then return tekst;end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane; local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul; tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony; ---- local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then --if(true)then return nil,true;end; local wynik=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) if(szablony_tekstu[nazwa_szablonu])then local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); ---- tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu; local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$"); if(klucz)then if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz]; wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz; if(wartosc_klucz)then return wartosc_klucz;end; end; end; end; return nil,true; end); local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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) if( (numerowane_obiekty[nazwa_szablonu]) or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu]) or(nienumerowane_obiekty_tekstu[nazwa_szablonu]) )then local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local status; if(uchwyt)then local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __uchwyt_tekstu; uchwyt=__uchwyt_tekstu or uchwyt; end; if(nazwa_artykulu)then local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_artykulu_tekstu; nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu; end; if(nazwa_ksiazki)then local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_ksiazki_tekstu; nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki; end; --[[if( (status) or( (not czy_bez_preprocess) and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu))) ) )then]] tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil; tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil; tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil; local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false); __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; __tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil; --[[end;]] end; return nil; end); end; return nil,true; end); end; end); end; return nil,true; end,nil, function(szablon,obiekt,kod,poziom_iteracji,tekst) if(poziom_iteracji>0)then return nil; end; return szablon; end); return tekst; end; function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu) local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1]; return tekst; end; function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu) return tabela_parametrow_szablonu["bez preprocess"]; end; function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja); end; end; end; function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany) if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; end; function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany) local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do local nazwa_obiektu_tekstu=pozycja[1][1]; local uchwyt_obiektu_tekstu=pozycja[1][2][1]; if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then local dodatkowe_elementy=pozycja[2]; local czy_tak=false; for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then czy_tak=true; break; end; end; if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; end; end; end; end; end; function p.UstawPobierzKorzystanie(tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do if(not pozycja[3])then pozycja[3]=true; local nazwa_obiektu=pozycja[1][1]; local uchwyt_obiektu=pozycja[1][2]; local obiekt=pozycja[2][1]; local kod=pozycja[2][2]; p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true); end; end; end; end; function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane) local __tablica_analizy_obiektow_strony_dany_modul_nie_pobierz=(pozycja[4] or {})[1] or tablica_analizy_obiektow_strony_dany_modul; local __tablica_danych_parametrow_szablonu_strony_nie_pobierz=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony; local __obiekt_nie_pobierz=(pozycja[3] or {})[2]; local __kod_nie_pobierz=(pozycja[3] or {})[3]; local __szablon_nie_pobierz=__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz[__obiekt_nie_pobierz][__kod_nie_pobierz]; local szablonowe_modul=require("Module:Szablonowe"); local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu; nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local parametry_modul=require("Module:Parametry"); local __tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz); local __tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony_nie_pobierz); local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt_nie_pobierz,__kod_nie_pobierz),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia,__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu); local __tabela_parametrow_szablonu_nie_pobierz=pozycja[3][1][1]; local __tabela_parametrow_szablonu_nie_pobierz_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tabela_parametrow_szablonu_nie_pobierz); ---- local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu_nie_pobierz_kopia); if(tekst)then local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); ---- local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); --local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia); local tab_numer={}; local tab_tak={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) obiekt_rodzica=obiekt_rodzica or true; kod_rodzica=kod_rodzica or true; local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]; if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end; local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]; if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end; local czy_tak=tab_tak_kod_rodzica[obiekt]; tab_tak_kod_rodzica[obiekt]=true; tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); local max_numer=tab_numer[obiekt]; local kod_temp=kod+max_numer; --tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon; local ile; local TempFunc1=function(szablon_rodzica,obiekt) szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt and "("..obiekt..")" or nil),function(obiekt,kod) kod=tonumber(kod) or nil; return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer); end); return szablon_rodzica,ile; end; if(not czy_tak)then szablon_rodzica,ile=TempFunc1(szablon_rodzica,obiekt); end; local TempFunc2=function(tablica_danych_parametrow_szablonu_strony,kod) local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _, wartosc in pairs(tab_obiekt)do local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(not tab_wartosc)then tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia[wartosc] or {})[kod]; local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka,nil,nil, function(value,type_value) if(type_value=="string")then value,ile=TempFunc1(value,nil); if(ile>0)then return value;end; return nil; end; return nil; end) or stara_tabelka; tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka; end; end; end; TempFunc2(tablica_danych_parametrow_szablonu_strony,kod); if(poziom_iteracji>0)then tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica); local max_numer_rodzica=tab_numer[obiekt_rodzica]; kod_rodzica=kod_rodzica+max_numer_rodzica; end; if(not czy_tak)then return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; else return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; end; return; end); return tekst; ---- end; return; end; function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych) local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_obiekty=pozycja[2]; for _,pozycja2 in ipairs(tab_obiekty)do local __obiekt=pozycja2[1]; local __kod=pozycja2[2]; if((__obiekt==obiekt)and(__kod==kod))then local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane); if(szablon)then tab_numer=pozycja2[3]; return szablon,tab_numer; end; return; end; end; end; end; local szablon;local tab_numer; if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true); end; if(not szablon)then if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false); end; end; if(szablon)then return szablon,tab_numer;end; return nil; end; function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych) local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych; for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do local __obiekt=pozycja[3][2]; local __kod=pozycja[3][3]; if((obiekt==__obiekt)and(kod==__kod))then local tabela_parametrow_szablonu=pozycja[3][1][1]; local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); if(tekst)then return tekst;end; return nil; end; end; return nil; end; function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end; if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then local function TempFunc(tablica_szablonu_tekstu) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_pobierz=pozycja[2]; for _,value in ipairs(tab_pobierz)do return true; end; end; return nil; end; if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end; end; local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty"); local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local czy_pobierz=nil; local szablonowe_modul=require("Module:Szablonowe"); local ___tabela_parametrow_szablonu; tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(czy_pobierz)then szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych); if(szablon)then IterowaniePoElementachTekstu(szablon,tab_numer); end; else szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych); end; if(szablon)then return szablon;end; return nil; end,nil, function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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_pobierz_szablonu_tekstu[nazwa_szablonu])then czy_pobierz=true; ___tabela_parametrow_szablonu=tabela_parametrow_szablonu; return true; elseif(tab_szablony_tekstu[nazwa_szablonu])then czy_pobierz=false; return true; end; return nil; end); if(wynik)then return wynik;end; end; return nil; end); return tekst_rozwiniety_calego_artykulu; end; return p; d07svgbzchqk3zpxicasvmeaf8fm7aj 558490 558489 2026-10-04T08:27:12Z Persino 2851 558490 Scribunto text/plain local p={}; p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY) local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local __tablica_analizy_obiektow_strony_dany_modul={}; local __tablica_danych_parametrow_szablonu_strony={}; local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do __tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; szablonowe_potrzebne_modul.UstawianieMetatabelki(__tablica_analizy_obiektow_strony_dany_modul[obiekt],obiekt,__FUNKCJA_PARAMETRY); end; local parametry_modul=require("Module:Parametry"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for szablon,obiekt,kod in iterator do __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _,wartosc in pairs(tab_obiekt)do local tab_element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(tab_element_wartosc)then local tab_elements_kod=tablica_danych_parametrow_szablonu_strony[wartosc][kod]; if(tab_elements_kod)then if(not __tablica_danych_parametrow_szablonu_strony[wartosc])then __tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; if(parametry_modul.TypeTable(tab_elements_kod))then __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tab_elements_kod); else __tablica_danych_parametrow_szablonu_strony[wartosc][kod]=tab_elements_kod; end; end; end; end; end; end; return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; end; p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu) --if(true)then return tekst;end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane; local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul; tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony; ---- local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then --if(true)then return nil,true;end; local wynik=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) if(szablony_tekstu[nazwa_szablonu])then local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu); local bez_preprocess=p.SzablonTekstuBezPreProcess(__tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); ---- tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu; local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$"); if(klucz)then if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz]; wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz; if(wartosc_klucz)then return wartosc_klucz;end; end; end; end; return nil,true; end); local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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) if( (numerowane_obiekty[nazwa_szablonu]) or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu]) or(nienumerowane_obiekty_tekstu[nazwa_szablonu]) )then local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local status; if(uchwyt)then local __uchwyt_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __uchwyt_tekstu; uchwyt=__uchwyt_tekstu or uchwyt; end; if(nazwa_artykulu)then local __nazwa_artykulu_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_artykulu_tekstu; nazwa_artykulu=__nazwa_artykulu_tekstu or nazwa_artykulu; end; if(nazwa_ksiazki)then local __nazwa_ksiazki_tekstu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true); status=status or __nazwa_ksiazki_tekstu; nazwa_ksiazki=__nazwa_ksiazki_tekstu or nazwa_ksiazki; end; --[[if( (status) or( (not czy_bez_preprocess) and(((not nazwa_artykulu)and(nazwa_artykulu_tekstu))or((not nazwa_ksiazki)and(nazwa_modulu_ksiazki_tekstu))) ) )then]] tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil; tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu or (not czy_bez_preprocess)and nazwa_artykulu_tekstu or nil;tabela_parametrow_szablonu[2]=nil; tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki or (not czy_bez_preprocess) and nazwa_modulu_ksiazki_tekstu or nil;tabela_parametrow_szablonu[3]=nil; local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false); __tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; __tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil; --[[end;]] end; return nil; end); end; return nil,true; end); end; end); end; return nil,true; end,nil, function(szablon,obiekt,kod,poziom_iteracji,tekst) if(poziom_iteracji>0)then return nil; end; return szablon; end); return tekst; end; function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu) local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1]; return tekst; end; function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu) return tabela_parametrow_szablonu["bez preprocess"]; end; function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja); end; end; end; function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany) if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; end; function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany) local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do local nazwa_obiektu_tekstu=pozycja[1][1]; local uchwyt_obiektu_tekstu=pozycja[1][2][1]; if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then local dodatkowe_elementy=pozycja[2]; local czy_tak=false; for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then czy_tak=true; break; end; end; if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; end; end; end; end; end; function p.UstawPobierzKorzystanie(tablica_zmiennych2) if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do if(not pozycja[3])then pozycja[3]=true; local nazwa_obiektu=pozycja[1][1]; local uchwyt_obiektu=pozycja[1][2]; local obiekt=pozycja[2][1]; local kod=pozycja[2][2]; p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true); end; end; end; end; function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane) local __tablica_analizy_obiektow_strony_dany_modul_nie_pobierz=(pozycja[4] or {})[1] or tablica_analizy_obiektow_strony_dany_modul; local __tablica_danych_parametrow_szablonu_strony_nie_pobierz=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony; local __obiekt_nie_pobierz=(pozycja[3] or {})[2]; local __kod_nie_pobierz=(pozycja[3] or {})[3]; local __szablon_nie_pobierz=__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz[__obiekt_nie_pobierz][__kod_nie_pobierz]; local szablonowe_modul=require("Module:Szablonowe"); local nazwa_artykulu_tekstu;local nazwa_modulu_ksiazki_tekstu; nazwa_artykulu_tekstu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2]; nazwa_modulu_ksiazki_tekstu=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3]; local parametry_modul=require("Module:Parametry"); local __tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz); local __tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tablica_danych_parametrow_szablonu_strony_nie_pobierz); local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt_nie_pobierz,__kod_nie_pobierz),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia,__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu); local __tabela_parametrow_szablonu_nie_pobierz=pozycja[3][1][1]; local __tabela_parametrow_szablonu_nie_pobierz_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](__tabela_parametrow_szablonu_nie_pobierz); ---- local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu_nie_pobierz_kopia); if(tekst)then local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); ---- local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); --local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia); local tab_numer={}; local tab_tak={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) obiekt_rodzica=obiekt_rodzica or true; kod_rodzica=kod_rodzica or true; local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]; if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end; local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]; if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end; local czy_tak=tab_tak_kod_rodzica[obiekt]; tab_tak_kod_rodzica[obiekt]=true; tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); local max_numer=tab_numer[obiekt]; local kod_temp=kod+max_numer; --tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon; local ile; local TempFunc1=function(szablon_rodzica,obiekt) szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt and "("..obiekt..")" or nil),function(obiekt,kod) kod=tonumber(kod) or nil; return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer); end); return szablon_rodzica,ile; end; if(not czy_tak)then szablon_rodzica,ile=TempFunc1(szablon_rodzica,obiekt); end; local TempFunc2=function(tablica_danych_parametrow_szablonu_strony,kod) local tab_obiekt=tab_analiza[obiekt]; if(tab_obiekt)then for _, wartosc in pairs(tab_obiekt)do local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(not tab_wartosc)then tablica_danych_parametrow_szablonu_strony[wartosc]={}; end; local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia[wartosc] or {})[kod]; local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka,nil,nil, function(wartosc,type_value) if(type_value=="string")then local value,ile=TempFunc1(wartosc,nil); if(ile>0)then return value;end; return nil; end; return nil; end) or ( (not parametry_modul.TypeNil(stara_tabelka)) and (function(stara_tabelka) if(parametry_modul.TypeString(stara_tabelka)=="string")then local value,ile=TempFunc1(stara_tabelka,nil); if(ile>0)then return value;end; return nil; end; end)(stara_tabelka) or stara_tabelka ); tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka; end; end; end; TempFunc2(tablica_danych_parametrow_szablonu_strony,kod); if(poziom_iteracji>0)then tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica); local max_numer_rodzica=tab_numer[obiekt_rodzica]; kod_rodzica=kod_rodzica+max_numer_rodzica; end; if(not czy_tak)then return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; else return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica; end; return; end); return tekst; ---- end; return; end; function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych) local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_obiekty=pozycja[2]; for _,pozycja2 in ipairs(tab_obiekty)do local __obiekt=pozycja2[1]; local __kod=pozycja2[2]; if((__obiekt==obiekt)and(__kod==kod))then local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane); if(szablon)then tab_numer=pozycja2[3]; return szablon,tab_numer; end; return; end; end; end; end; local szablon;local tab_numer; if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true); end; if(not szablon)then if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false); end; end; if(szablon)then return szablon,tab_numer;end; return nil; end; function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych) local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych; for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do local __obiekt=pozycja[3][2]; local __kod=pozycja[3][3]; if((obiekt==__obiekt)and(kod==__kod))then local tabela_parametrow_szablonu=pozycja[3][1][1]; local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); if(tekst)then return tekst;end; return nil; end; end; return nil; end; function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end; if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then local function TempFunc(tablica_szablonu_tekstu) for _,pozycja in ipairs(tablica_szablonu_tekstu)do local tab_pobierz=pozycja[2]; for _,value in ipairs(tab_pobierz)do return true; end; end; return nil; end; if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end; end; local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty"); local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu; local czy_pobierz=nil; local szablonowe_modul=require("Module:Szablonowe"); local ___tabela_parametrow_szablonu; tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(czy_pobierz)then szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych); if(szablon)then IterowaniePoElementachTekstu(szablon,tab_numer); end; else szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych); end; if(szablon)then return szablon;end; return nil; end,nil, function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=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_pobierz_szablonu_tekstu[nazwa_szablonu])then czy_pobierz=true; ___tabela_parametrow_szablonu=tabela_parametrow_szablonu; return true; elseif(tab_szablony_tekstu[nazwa_szablonu])then czy_pobierz=false; return true; end; return nil; end); if(wynik)then return wynik;end; end; return nil; end); return tekst_rozwiniety_calego_artykulu; end; return p; 3v2ujq7onwe8ppxvd6ll6jrao23ktd9 Wikibooks:Moduły/StronicowyParser/SzablonyTekstu 4 63669 558435 558403 2026-10-03T17:00:17Z Persino 2851 558435 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}} == == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 13oodpkes969zh0nt3260tnvu9i4n45 558436 558435 2026-10-03T17:17:59Z Persino 2851 /* {{Śródtytuł|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}} */ 558436 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy paarametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> l1isfosk3kb3pmt01whazqbtbvy8ykl 558437 558436 2026-10-03T17:26:57Z Persino 2851 /* {{Śródtytuł|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}} */ 558437 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy paarametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _1 = Częściowa opisywana kopia bazy kodów zakodowanego tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 2 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _2 = Częściowa opisywana baza parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2ozn9ei2cdqqnvw2yjbidkhp14vtvvb 558438 558437 2026-10-03T17:29:02Z Persino 2851 558438 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy paarametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _1 = Częściowa opisywana kopia bazy kodów zakodowanego tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 2 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _2 = Częściowa opisywana baza parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 65bh642wuthzf9o46edsgq2gpu6gt9w 558439 558438 2026-10-03T17:30:03Z Persino 2851 /* {{Śródtytuł|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}} */ 558439 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy paarametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _1 = Częściowa opisywana kopia bazy kodów zakodowanego tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 2 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _2 = Częściowa opisywana baza parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> mtlb5st3eu4pmfi1ti1dkz4giqh0i50 558440 558439 2026-10-03T17:30:48Z Persino 2851 /* {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} */ 558440 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy paarametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _1 = Częściowa opisywana kopia bazy kodów zakodowanego tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 2 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _2 = Częściowa opisywana baza parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4h3kvcnniqdp7jrkqks8fko8v5wddv2 558441 558440 2026-10-03T17:32:26Z Persino 2851 /* {{Śródtytuł|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}} */ 558441 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _1 = Częściowa opisywana kopia bazy kodów zakodowanego tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 2 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _2 = Częściowa opisywana baza parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> po75o7vjdf9z5iyap9fk2976ia5m0cu 558442 558441 2026-10-03T17:38:47Z Persino 2851 /* {{Śródtytuł|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęElementówSzablonuTekstu"]}} */ 558442 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _1 = Częściowa opisywana kopia bazy kodów zakodowanego tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 2 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _2 = Częściowa opisywana baza parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> n4zjfzufplkxt6fwyjdova0qv4pqxx5 558445 558442 2026-10-03T17:45:58Z Persino 2851 /* {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} */ 558445 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | komórka1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 99nhsh565fco849wxxoem5sl3fgnoon 558446 558445 2026-10-03T17:46:23Z Persino 2851 /* {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} */ 558446 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fg821tiiqz49fzbgvq6u2t7273e0ej0 558447 558446 2026-10-03T17:56:40Z Persino 2851 /* {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} */ 558447 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jest to kod zapisany w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dsmhzz2samvi5ikiwbiwr23cvcxrr70 558448 558447 2026-10-03T17:58:09Z Persino 2851 /* {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} */ 558448 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jest to kod zapisany w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> oogttttum8vxaaobbsup306yq7a92b5 558449 558448 2026-10-03T18:03:01Z Persino 2851 /* {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} */ 558449 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8vent3bsd8gptk0rl9plhghb8zfb7vv 558450 558449 2026-10-03T18:15:37Z Persino 2851 /* {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} */ 558450 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pxlq3bipvg4571zc79obsnyeiug4uh5 558451 558450 2026-10-03T18:22:34Z Persino 2851 /* {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} */ 558451 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9hztwrhbggpf7t4qpnh6onruxhydnfy 558452 558451 2026-10-03T18:29:10Z Persino 2851 /* {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} */ 558452 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów zakodowanego tekstu. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> coeoex4rls7w5x08unrv6ylbhvyw5q7 558454 558452 2026-10-03T18:43:38Z Persino 2851 /* {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} */ 558454 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dtiae870vx663qemrxumtj9mlh62bu0 558455 558454 2026-10-03T18:50:47Z Persino 2851 /* {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} */ 558455 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q5xzxak21bdad9n8e7vuc5r97umqvg5 558456 558455 2026-10-03T18:57:03Z Persino 2851 /* {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} */ 558456 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ps6y2s7vw0gaqmrnzz0nade3f3sdtar 558457 558456 2026-10-03T19:30:31Z Persino 2851 /* {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} */ 558457 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jijdmipw1tc0lhp5camwnem2bkpk3pd 558458 558457 2026-10-03T19:37:01Z Persino 2851 /* {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} */ 558458 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lmovai875ti6npteub23tndft1kx1ka 558459 558458 2026-10-03T19:39:16Z Persino 2851 558459 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 25mp3fii0id2prij1ocgfc4yjs6nmi9 558460 558459 2026-10-03T19:41:04Z Persino 2851 558460 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> a8cdpswx8mtlptrb27wtk3mr18ovssl 558461 558460 2026-10-03T19:47:13Z Persino 2851 /* {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} */ 558461 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lzk2e3841qb7ifgx9uup4z67evptfqt 558462 558461 2026-10-03T20:12:51Z Persino 2851 /* {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} */ 558462 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej), dla, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> o66jcwvj0w8s80x8ijtus5dkmioc8uo 558463 558462 2026-10-03T20:19:11Z Persino 2851 /* {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} */ 558463 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów do strony bieżącej, czy aktualnej), dla, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> l1e5cdfz8oq6mbxfh0bdewi2tfwmwd8 558464 558463 2026-10-03T20:20:25Z Persino 2851 /* {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} */ 558464 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej), dla, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> m8bgyqnh96uuc71szndkaf4n9zmyz4i 558465 558464 2026-10-03T20:35:37Z Persino 2851 /* {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} */ 558465 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 67pdy26nueda9u2820uvy1kjv6cd4rx 558466 558465 2026-10-03T20:53:31Z Persino 2851 /* {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} */ 558466 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dbxuxzl83qev456416lbk4xgssguw3y 558467 558466 2026-10-03T20:54:33Z Persino 2851 /* {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} */ 558467 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu_stare,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul_stare,tablica_danych_parametrow_szablonu_strony_stare,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu_stare}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony_stare}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul_stare}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pkpnvbdhr99mm22vk72inq1b926fq84 558475 558467 2026-10-04T05:02:48Z Persino 2851 /* {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} */ 558475 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,__tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|__tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|__tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8ygcgfe6rr33pet9h4pzd8idqe8zhc3 558476 558475 2026-10-04T05:13:58Z Persino 2851 558476 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Ten powyższy kod, to nic innego jak część definicji funkcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do wstawiania tego, gdy napotkano szablony typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robiona przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla poszczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, które pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,__tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|__tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w w punkcie: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|__tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> i4t1ytk9hn60t4ujxpm582v52g9foom 558477 558476 2026-10-04T05:25:23Z Persino 2851 /* {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} */ 558477 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Ten powyższy kod, to nic innego jak część definicji funkcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do wstawiania tego, gdy napotkano szablony typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robiona przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla poszczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, które pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,__tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|__tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jak w punkcie: {{LinkPatrz|tabela_parametrow_szablonu_stare}}. Jest to kopia tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem siebie samego do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie. | 9 = {{Code|__tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem siebie samego do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0vy8vdqjze49h9baj31cn81ax4522qh 558478 558477 2026-10-04T05:30:45Z Persino 2851 /* {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} */ 558478 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Ten powyższy kod, to nic innego jak część definicji funkcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do wstawiania tego, gdy napotkano szablony typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robiona przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla poszczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, które pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,__tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|__tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jest to wierna kopia, bez żadnych zmian, tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem siebie samego do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie, czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 9 = {{Code|__tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem siebie samego do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> afmlf02quu04in4uqdbpa02ua2tdzxt 558479 558478 2026-10-04T05:35:05Z Persino 2851 /* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */ 558479 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Ten powyższy kod, to nic innego jak część definicji funkcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do wstawiania tego, gdy napotkano szablony typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robiona przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla poszczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, które pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,__tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|__tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jest to wierna kopia, bez żadnych zmian, tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem siebie samego do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie, czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 9 = {{Code|__tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem siebie samego do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Funkcja wykorzystuje tabelę: {{Code|__tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu_stare}}, do liczenia elementu: {{Code|tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> hzx3vv4bch961qt4aebzv7us4a4cmmc 558480 558479 2026-10-04T05:39:21Z Persino 2851 /* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */ 558480 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Ten powyższy kod, to nic innego jak część definicji funkcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do wstawiania tego, gdy napotkano szablony typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robiona przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla poszczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, które pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,__tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|__tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jest to wierna kopia, bez żadnych zmian, tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem siebie samego do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie, czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 9 = {{Code|__tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem siebie samego do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Funkcja wykorzystuje tabelę: {{Code|__tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu_stare}}, do liczenia elementu: {{Code|tekst}}, przy pomocy formy proceduralnej: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4akojjf6zcy483twy0uldqgqr3wu97z 558481 558480 2026-10-04T05:54:18Z Persino 2851 /* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */ 558481 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Ten powyższy kod, to nic innego jak część definicji funkcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do wstawiania tego, gdy napotkano szablony typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robiona przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla poszczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, które pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,__tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|__tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jest to wierna kopia, bez żadnych zmian, tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem siebie samego do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie, czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 9 = {{Code|__tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem siebie samego do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), to jest niczym innym, jak zapamiętanym: {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul_stare}}, a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), to jest niczym innym, jak zapamiętanym: {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony_stare}}, a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Funkcja wykorzystuje tabelę: {{Code|__tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu_stare}}, do liczenia elementu: {{Code|tekst}}, przy pomocy formy proceduralnej: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> foy5tyil4j7sspe1k4idiaxx56qzcwo 558482 558481 2026-10-04T05:57:30Z Persino 2851 /* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */ 558482 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Ten powyższy kod, to nic innego jak część definicji funkcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do wstawiania tego, gdy napotkano szablony typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robiona przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla poszczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, które pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,__tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|__tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jest to wierna kopia, bez żadnych zmian, tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem siebie samego do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie, czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 9 = {{Code|__tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem siebie samego do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), to jest niczym innym, jak zapamiętanym: {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul_stare}}, a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), to jest niczym innym, jak zapamiętanym: {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony_stare}}, a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Funkcja wykorzystuje tabelę: {{Code|__tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu_stare}}, liczoną z: {{Code|pozycja[3][1][1]}} {{LinkPatrz|pozycja[3][1][1]}}, do liczenia elementu: {{Code|tekst}}, przy pomocy formy proceduralnej: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9yrkiftvbpsvb0k5ko2coqsn6bp044n 558483 558482 2026-10-04T05:58:49Z Persino 2851 /* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */ 558483 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Ten powyższy kod, to nic innego jak część definicji funkcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do wstawiania tego, gdy napotkano szablony typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robiona przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla poszczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, które pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,__tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|__tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jest to wierna kopia, bez żadnych zmian, tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem siebie samego do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie, czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 9 = {{Code|__tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem siebie samego do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), to jest niczym innym, jak zapamiętanym: {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul_stare}}, a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), to jest niczym innym, jak zapamiętanym: {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony_stare}}, a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Funkcja wykorzystuje tabelę: {{Code|__tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu_stare}}, liczoną z: {{Code|pozycja[3][1][1]}}, do liczenia elementu: {{Code|tekst}}, przy pomocy formy proceduralnej: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7oexeeuwhj6sj5ij3yh0vo0x9wupjyq 558484 558483 2026-10-04T06:11:21Z Persino 2851 /* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */ 558484 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Ten powyższy kod, to nic innego jak część definicji funkcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do wstawiania tego, gdy napotkano szablony typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robiona przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla poszczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, które pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,__tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|__tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jest to wierna kopia, bez żadnych zmian, tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem siebie samego do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie, czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 9 = {{Code|__tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem siebie samego do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), to jest niczym innym, jak zapamiętanym: {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul_stare}}, a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), to jest niczym innym, jak zapamiętanym: {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony_stare}}, a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony-Śródtekst}}. Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul-Śródtekst}}, i {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony-Śródtekst}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Funkcja wykorzystuje tabelę: {{Code|__tabela_parametrow_szablonu}}, liczoną z: {{Code|pozycja[3][1][1]}}, to jest niczym innym jak zapamiętanym: {{LinkPatrz|tabela_parametrow_szablonu_stare}}, do liczenia elementu: {{Code|tekst}}, przy pomocy formy proceduralnej: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3u8qb2zjmijhz7grrodvyk10gojz8tv 558486 558484 2026-10-04T06:49:08Z Persino 2851 /* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */ 558486 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Ten powyższy kod, to nic innego jak część definicji funkcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do wstawiania tego, gdy napotkano szablony typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robiona przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla poszczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, które pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,__tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|__tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jest to wierna kopia, bez żadnych zmian, tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem siebie samego do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie, czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 9 = {{Code|__tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem siebie samego do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), to jest niczym innym, jak zapamiętanym: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul_stare}}, a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony_nie_pobierz}} {{Patrz|__tablica_danych_parametrow_szablonu_strony_nie_pobierz}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), to jest niczym innym, jak zapamiętanym: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony_stare}}, a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz}}, i {{Code|__tablica_danych_parametrow_szablonu_strony_nie_pobierz}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony_nie_pobierz}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie, do zmiennych kolejno: {{Code|__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia}}, i {{Code|__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia}} {{Patrz|__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia}}. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Funkcja wykorzystuje tabelę: {{Code|__tabela_parametrow_szablonu_nie_pobierz}}, liczoną z: {{Code|pozycja[3][1][1]}}, to jest niczym innym jak zapamiętanym: {{Code|__tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu_stare}}, do liczenia elementu: {{Code|tekst}}, przy pomocy formy proceduralnej: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}. Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia}} i {{Code|tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4reafntk3b8wt1s8gilfudmyq1s7fhs 558487 558486 2026-10-04T06:52:50Z Persino 2851 /* {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} */ 558487 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. Poniżej są opisane parametry dla szablonów typu {{Code|rodzaj: Śródtekst}} {{Patrz|rodzaj: Śródtekst}}: * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Ten powyższy kod, to nic innego jak część definicji funkcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do wstawiania tego, gdy napotkano szablony typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robiona przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla poszczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, które pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}}{{Code|p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]}} == Funkcja do kopiowania bazy kodów bazy kodowania tekstu zakodowanego: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i bazy parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, pojedynczego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Ona zwraca te dwie kolejno kopie. Te kopie to nie są całości tych tabel, ale jedynie dotyczące tych szablonów tego typu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["KopiujRekurencyjnieTabelęBazyOrazParametrówKodówZakodowanegoTekstu"]=function(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_PARAMETRY)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = {{Śródtekst|uchwyt=Śródtekst|tekst= Kod całego zakodowanego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, który ma pewne wnętrze, którym jest ten szablon. Jest to kod zapisany, używając pewnego szablonu z modułu: {{Code|{{ld2|Szablonowe}}}}, w formie: <syntaxhighlight lang="lua"> local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu("SZABLON",kod); </syntaxhighlight> ; Gdzie{{dk}} * {{Code|SZABLON}} - Typ obiektu szablonowego tego szablonu, * {{Code|kod}} - Jest to numer obiektu tego rodzaju. }} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Uchwyt zakodowanej bazy kodów, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|__FUNKCJA_PARAMETRY}} | _5 = Funkcja do modyfikacji parametrów w bazie połączonej w metatabelką. {{PobierzŚródtekst|uchwyt=__FUNKCJA_PARAMETRY|nazwa artykułu=StronicowyParser/Tekst}} }} Parametry zwracane funkcji - ilustracja kodowa: <syntaxhighlight lang="lua"> return __tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony; </syntaxhighlight> Parametry zwracane - opis: {{OpisParametrów | 1 = Częściowa tabela kodów zakodowanego tekstu: | nagłówek1 = tak | 2 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_stare}}| _2 = Bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony_stare}} | _3 = Parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_ksiazki_tekstu,nazwa_artykulu_tekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = {{PobierzŚródtekst|uchwyt=Śródtekst}} | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = Nazwy danej książki danej strony, jeśli poszczególne istnieją, na którą wskazuje szablon typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, na odpowiedni szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, przy nieustawionym niepustym parametrze: {{Code|bez preprocess}}, czyli: {{Parametr|bez preprocess|}}: | nagłówek10 = tak | 11 = {{Code|nazwa_modulu_ksiazki_tekstu}} {{Patrz|nazwa_modulu_ksiazki_tekstu}} | _11 = Pełna nazwa książki danej strony, lub ewentualnie w niektórych przypadkach bez przestrzeni nazw. | 12 = {{Code|nazwa_artykulu_tekstu}} {{Patrz|nazwa_artykulu_tekstu}} | _12 = Nazwa książkowa artykułu danej strony. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,__tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. Pierwszy z nich zbiera elementy strony korzystanej (bieżącej, czy aktualne), a drugi, to niekorzystanej (dołączonej). | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|__tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu_stare}}| _5 = Jest to wierna kopia, bez żadnych zmian, tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu w wersji szablonowej, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchomienia wywołania szablonowego szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}. Jest to tablica bazy kodów zakodowanego tekstu, przed przekształceniem siebie samego do: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla strony korzystanej, czy nie, czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 9 = {{Code|__tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_stare}}. Jest to tablica bazy rozkładu na czynniki pierwsze, elementów bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_stare}}, przed przekształceniem siebie samego do: {{Code|tablica_danych_parametrow_szablonu_strony_modul}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, dla strony korzystanej, czy nie czyli będącą jego częściową kopią tylko dla jednego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}.. Nie wszystkie elementy tutaj tej tablicy są rozłożone, tylko niektóre, ale mogą być wszystkie. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość prawdziwą, gdy rozważany artykuł jest wyświetlany jako korzystany, w pierwszej kolejności, widoczny w przeglądarce internetowej, dla innych stron na wartość jest fałszywa, takie strony są niekorzystane, są to strony dołączone do strony korzystanej (bieżącej, czy aktualnej). }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie (obiekcie, nie linku, czy szablonie pobierania, ale w normalnym) było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie za to niekorzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Funkcja służy do odpowiedniego przyporządkowania szablonów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Śródtekst}}, dla strony korzystanej, obiektom typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, też na tej samej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}} (ten szablon jest odmianą tego dla strony korzystanej, dla elementów pobierania do strony bieżącej, czy aktualnej, ale w nim wtedy, w tym przypadku, nie ma tych numerków, do przesuwania elementów w tablicy uchwytów i ich numerków, danego obiektu), dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też elementy zapisane w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, takie {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}: * Zdefiniujmy, że to: {{Code|__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy zakodowanego tekstu), to jest niczym innym, jak zapamiętanym: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul_stare}}, a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej). * Zdefiniujmy, że to: {{Code|__tablica_danych_parametrow_szablonu_strony_nie_pobierz}} {{Patrz|__tablica_danych_parametrow_szablonu_strony_nie_pobierz}}, to jest: {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), to jest niczym innym, jak zapamiętanym: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony_stare}}, a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej). : Ale to zwykle istnieją te poszczególne pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. ---- Funkcja robi kopię: {{Code|__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz}} {{LinkPatrz|__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz}}, i {{Code|__tablica_danych_parametrow_szablonu_strony_nie_pobierz}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony_nie_pobierz}}, dla każdego wywołania szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, aby było możliwe jego analizowanie względem różnych wywołań tego szablonu do tego samego szablonu typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, o pewnym uchwycie na danej stronie, do zmiennych kolejno: {{Code|__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia}} {{Patrz|__tablica_analizy_obiektow_strony_dany_modul_nie_pobierz_kopia}}, i {{Code|__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia}} {{Patrz|__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia}}. Funkcja przyszykowuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, względem parametrów, wskazującego na niego, szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, do dalszej analizy przez: '''{{ld|StronicowyParser|Stronnicowy Parser}}''', to jest robione przy pomocy: {{LinkŚródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}. Funkcja wykorzystuje tabelę: {{Code|__tabela_parametrow_szablonu_nie_pobierz}}, liczoną z: {{Code|pozycja[3][1][1]}}, to jest niczym innym jak zapamiętanym: {{Code|__tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu_stare}}, którą kopiujemy do: {{Code|__tabela_parametrow_szablonu_nie_pobierz_kopia}} {{Patrz|__tabela_parametrow_szablonu_nie_pobierz_kopia}}, a ta kopia jest wykorzystywana do liczenia elementu: {{Code|tekst}}, przy pomocy formy proceduralnej: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}. Funkcja do szybszego działania wykorzystuje tabelę: {{Code|__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia}} {{LinkPatrz|__tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia}} i {{Code|tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony_nie_pobierz_kopia}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Tablica bazy zakodowanego tekstu strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _4 = Tablicy parametrów rozłożeń tablicy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, na czynniki pierwsze, nie wszystkie elementy są tam zawarte, ale mogą być wszystkie. Jest to tablica dla strony korzystanej (bieżącej, czy aktualnej). Jest to tablica prekształcona względem elementów: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> aq5xghwc59sj8rcgffh48g0rjcjtrct Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II 4 63917 558496 556269 2026-10-04T10:10:03Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 558496 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = Parametry złożone {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = Parametry kodowania {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = Parametry zakodowanego spisu {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |komórka3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> j83qvn9ztx773dops16ny8plrj2vvqe 558497 558496 2026-10-04T10:11:25Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 558497 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = Parametry złożone {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}. | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = Parametry kodowania {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}. | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = Parametry zakodowanego spisu {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |komórka3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> g9ji51rwib0yvf9vn0htkf1zf292jcp 558498 558497 2026-10-04T10:16:37Z Persino 2851 558498 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = Parametry złożone {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}. | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = Parametry kodowania {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}. | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = Parametry zakodowanego spisu {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,bez_innych_stron)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |komórka3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4qho4fuqbgdnb8cknxgez5z77ioqvc5 558506 558498 2026-10-04T10:55:18Z Persino 2851 /* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */ 558506 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = Parametry złożone {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}. | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = Parametry kodowania {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}. | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = Parametry zakodowanego spisu {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,z_innymi_stronami)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |komórka3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka4=tak | 5 = {{Code|czy_usun_okladka}} | _5 = Jak w: {{LinkPatrz|czy_usun_okladka}}. | 6 = {{Code|czy_glowny_spis_tresci}} | _6 = Jak w: {{LinkPatrz|czy_glowny_spis_tresci}}. | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 7 = {{Code|z_innymi_stronami}} | _7 = Czy uwzględniać inne strony będących nieartykułami danej książki, lub linkami '''{{lpg|HTML}}'''. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qqpt7zprrezxznsbg3dmuxw35t311hg 558507 558506 2026-10-04T10:57:55Z Persino 2851 /* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */ 558507 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = Parametry złożone {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}. | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = Parametry kodowania {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}. | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = Parametry zakodowanego spisu {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego, tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, ale nie do okładki, danego podręcznika, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,z_innymi_stronami)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |komórka3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka4=tak | 5 = {{Code|czy_usun_okladka}} | _5 = Jak w: {{LinkPatrz|czy_usun_okladka}}. | 6 = {{Code|czy_glowny_spis_tresci}} | _6 = Jak w: {{LinkPatrz|czy_glowny_spis_tresci}}. | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 7 = {{Code|z_innymi_stronami}} | _7 = Czy uwzględniać inne strony będących nieartykułami danej książki, lub linkami '''{{lpg|HTML}}'''. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2h470x9cgvcpxb3wthubycmqxe2qvr9 558508 558507 2026-10-04T11:05:19Z Persino 2851 /* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */ 558508 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = Parametry złożone {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}. | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = Parametry kodowania {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}. | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = Parametry zakodowanego spisu {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego, tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, ale nie do okładki, danego podręcznika, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,z_innymi_stronami)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka3=tak | 4 = {{Code|czy_usun_okladka}} | _4 = Jak w: {{LinkPatrz|czy_usun_okladka}}. | 5 = {{Code|czy_glowny_spis_tresci}} | _5 = Jak w: {{LinkPatrz|czy_glowny_spis_tresci}}. | 6 = {{Code|czy_wszystkie_linki}} | _6 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 7 = {{Code|z_innymi_stronami}} | _7 = Czy uwzględniać inne strony będących nieartykułami danej książki, lub linkami '''{{lpg|HTML}}'''. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 776ysmfd5a1ecedfli7i8dolvden4g0 558509 558508 2026-10-04T11:06:01Z Persino 2851 /* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */ 558509 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = Parametry złożone {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}. | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = Parametry kodowania {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}. | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = Parametry zakodowanego spisu {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego, tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, ale nie do okładki, danego podręcznika, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,z_innymi_stronami)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka3=tak | 4 = {{Code|czy_usun_okladka}} | _4 = Jak w: {{LinkPatrz|czy_usun_okladka}}. | 5 = {{Code|czy_glowny_spis_tresci}} | _5 = Jak w: {{LinkPatrz|czy_glowny_spis_tresci}}. | 6 = {{Code|czy_wszystkie_linki}} | _6 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 7 = {{Code|z_innymi_stronami}} | _7 = Czy uwzględniać inne strony będących nieartykułami danej książki, lub linkami '''{{lpg|HTML}}'''. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ssd3pv9wktd7c73b4rwrscj7lnkjeog 558510 558509 2026-10-04T11:06:57Z Persino 2851 /* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */ 558510 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = Parametry złożone {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}. | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = Parametry kodowania {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}. | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = Parametry zakodowanego spisu {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego, tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, ale nie do okładki, danego podręcznika, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,z_innymi_stronami)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka3=tak | 4 = {{Code|czy_wszystkie_linki}} | _4 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 5 = {{Code|z_innymi_stronami}} | _5 = Czy uwzględniać inne strony będących nieartykułami danej książki, lub linkami '''{{lpg|HTML}}'''. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 74zezznfrw8ofypbbv0hf0z5gbpts10 558511 558510 2026-10-04T11:11:28Z Persino 2851 /* {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} */ 558511 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = Parametry złożone {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}. | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = Parametry kodowania {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}. | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = Parametry zakodowanego spisu {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł główny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami nowych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego, tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, ale nie do okładki, danego podręcznika, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,z_innymi_stronami)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka3=tak | 4 = {{Code|czy_wszystkie_linki}} | _4 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 5 = {{Code|z_innymi_stronami}} | _5 = Czy uwzględniać inne strony będących nieartykułami danej książki, lub linkami '''{{lpg|HTML}}'''. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jvm0nwhpll1fvdyc3z80r9a4bnu9gqh Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy 4 63923 558499 554638 2026-10-04T10:25:55Z Persino 2851 /* Parametry zakodowanego spisu */ 558499 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens. == Argumenty (zmienne) wstawiane do różnych funkcji == === Parametry tekstu === Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego, * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu. === Elementy kodowania kodów różnych obiektów === Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}: * {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu, * {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju. === Elementy złożone z rodzaju kodu i jego numeru === Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów: * {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. === Parametry zakodowanego spisu === Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki'''. | 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta. | 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku, tak jak się pisze wywołania szablonowe, do uruchomienia. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji. | 7 = Parametry tabele potrzebne przez funkcję {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak | 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego. }} == Spis treści == Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich. {{Hr}} {{Kolumny|2|2= === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru === Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej ksiązki === Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału === Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału === Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji === Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy === Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu === Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> eozyt483eugfp3m73450ri14r68mvkf 558500 558499 2026-10-04T10:26:42Z Persino 2851 /* Elementy złożone z rodzaju kodu i jego numeru */ 558500 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens. == Argumenty (zmienne) wstawiane do różnych funkcji == === Parametry tekstu === Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego, * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu. === Elementy kodowania kodów różnych obiektów === Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}: * {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu, * {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju. === Elementy złożone z rodzaju kodu i jego numeru === Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} === Parametry zakodowanego spisu === Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki'''. | 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta. | 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku, tak jak się pisze wywołania szablonowe, do uruchomienia. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji. | 7 = Parametry tabele potrzebne przez funkcję {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak | 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego. }} == Spis treści == Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich. {{Hr}} {{Kolumny|2|2= === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru === Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej ksiązki === Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału === Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału === Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji === Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy === Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu === Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6vwm391wh8k024h1xo4m3pxfcs4lpba 558501 558500 2026-10-04T10:28:10Z Persino 2851 /* Elementy kodowania kodów różnych obiektów */ 558501 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens. == Argumenty (zmienne) wstawiane do różnych funkcji == === Parametry tekstu === Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego, * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu. === Elementy kodowania kodów różnych obiektów === Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}: {{OpisParametrów | 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu. | 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju. }} === Elementy złożone z rodzaju kodu i jego numeru === Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} === Parametry zakodowanego spisu === Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki'''. | 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta. | 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku, tak jak się pisze wywołania szablonowe, do uruchomienia. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji. | 7 = Parametry tabele potrzebne przez funkcję {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak | 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego. }} == Spis treści == Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich. {{Hr}} {{Kolumny|2|2= === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru === Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej ksiązki === Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału === Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału === Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji === Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy === Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu === Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6ltussvjjx6zw78o44g0mesxbevfxt1 558502 558501 2026-10-04T10:29:30Z Persino 2851 /* Parametry tekstu */ 558502 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens. == Argumenty (zmienne) wstawiane do różnych funkcji == === Parametry tekstu === Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}: {{OpisParametrów | 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego. | 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu. }} === Elementy kodowania kodów różnych obiektów === Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}: {{OpisParametrów | 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu. | 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju. }} === Elementy złożone z rodzaju kodu i jego numeru === Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} === Parametry zakodowanego spisu === Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki'''. | 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta. | 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku, tak jak się pisze wywołania szablonowe, do uruchomienia. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji. | 7 = Parametry tabele potrzebne przez funkcję {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak | 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego. }} == Spis treści == Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich. {{Hr}} {{Kolumny|2|2= === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru === Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej ksiązki === Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału === Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału === Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji === Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy === Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu === Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q5nsy4dupwjyj1w0gbfhqx9w3dipfbv 558503 558502 2026-10-04T10:32:51Z Persino 2851 /* Parametry zakodowanego spisu */ 558503 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens. == Argumenty (zmienne) wstawiane do różnych funkcji == === Parametry tekstu === Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}: {{OpisParametrów | 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego. | 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu. }} === Elementy kodowania kodów różnych obiektów === Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}: {{OpisParametrów | 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu. | 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju. }} === Elementy złożone z rodzaju kodu i jego numeru === Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} === Parametry zakodowanego spisu === Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki'''. | 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta. | 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji. | 7 = Parametry tabele potrzebne przez funkcję {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak | 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego. }} == Spis treści == Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich. {{Hr}} {{Kolumny|2|2= === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru === Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej ksiązki === Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału === Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału === Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji === Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy === Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu === Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> h74aeme5fjreengdpei942qdi0bjdkq 558504 558503 2026-10-04T10:38:46Z Persino 2851 /* Parametry zakodowanego spisu */ 558504 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens. == Argumenty (zmienne) wstawiane do różnych funkcji == === Parametry tekstu === Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}: {{OpisParametrów | 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego. | 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu. }} === Elementy kodowania kodów różnych obiektów === Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}: {{OpisParametrów | 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu. | 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju. }} === Elementy złożone z rodzaju kodu i jego numeru === Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} === Parametry zakodowanego spisu === Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki'''. | 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta. | 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje. | 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji. | 7 = Parametry tabele potrzebne przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak | 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego. }} == Spis treści == Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich. {{Hr}} {{Kolumny|2|2= === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru === Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej ksiązki === Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału === Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału === Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji === Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy === Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane. === {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu === Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 27tyx2wn2iqkurjpq3w67va2myau1bt