Moduł parser jest oparty na skryptowym języku T-Script, którego głównym zadaniem jest generowanie plików tekstowych. Może być używany do przetwarzania szablonów z danymi pobieranymi z różnych źródeł np. baz SQL lub plików tekstowych. W naszym przypadku treść skryptu (szablon) jest przechowywany w bazie danych, dlatego istnieje możliwość jego edycji poprzez LMS-UI. W przyszłości moduł parser może zastąpić większość modułów demona.
Przed kompilacją modułu upewnij się, że posiadasz w systemie pakiety bison (co najmniej w wersji 1.875) oraz flex.
Parser posiada następujące opcje:
script
Zawartość skryptu (szablonu). Domyślnie: pusta.
Przykład: script = '{var=1}zmienna var={var}'
file
Lokalizacja pliku wynikowego. Domyślnie: pusta
Przykład: file = /tmp/parser.out
command
Polecenie powłoki do wykonania po kompilacji skryptu. Domyślnie: pusta
Przykład: command = "sh /tmp/parser.out"
Składnia języka T-Script jest podobna do składni innych popularnych języków takich jak C czy JavaScript, ale dokonano pewnych zmian mających na celu ułatwienie tworzenia szablonów. Wszystkie podane polecenia powinny być zapisywane wewnątrz klamer { }.
Wyrażenia:
Ciąg znaków
"some literal"
Liczba
1234
Wartość zmiannej "var"
var
N-ty element tablicy "var"
var[n]
Podzmienna "n" zmiennej "var"
var.n
Wartość wyrażenia w nawiasach
( <wyrażenie> )
Zwraca 1 gdy wyrażenie nie jest prawdą, w przeciwnym wypadku 0
! <wyrażenie>
Zwraca 1 gdy wartość wyrażenie1 jest identyczna z wartością wyrażenie2 lub 0 gdy są różne
<wyrażenie1> == <wyrażenie2>
Zwraca 1 gdy wyrażenia są różne lub 0 gdy są takie same
<wyrażenie1> != <wyrażenie2>
Zwraca 1 gdy wyrażenie1 jest mniejsze od wartości wyrażenia wyrażenie2
<wyrażenie1> < <wyrażenie2>
Zwraca 1 gdy wartość wyrażenie1 jest większa od wartości wyrażenie2
<wyrażenie1> > <wyrażenie2>
Zwraca 1 gdy jedno z wyrażeń jest prawdą
<wyrażenie1> || <wyrażenie2>
Zwraca 1 gdy wyrażenie1 i wyrażenie2 są prawdziwe
<wyrażenie1> && <wyrażenie2>
Gdy oba wyrażenia są liczbami zwraca wynik operacji arytmetycznej. W innym przypadku traktuje wyrażenia jako ciągi znaków i dokonuje ich połączenia
<wyrażenie1> + <wyrażenie2>
Zwraca wynik operacji arytmetycznej na dwóch wyrażeniach
<wyrażenie1> - <wyrażenie2> <wyrażenie1> * <wyrażenie2> <wyrażenie1> / <wyrażenie2> <wyrażenie1> % <wyrażenie2>
Podstawowe polecenia:
Przypisuje wartość wyrażenia do podanej zmiennej
<variable_name> = <wyrażenie>
Wykonuje polecenie tylko wtedy gry wyrażenie jest prawdą. Druga forma wykonuje polecenie1 gdy wyrażenie jest prawdą lub polecenie2 gdy jest fałszem
if ( <wyrażenie> ) <polecenia> /if if ( <wyrażenie> ) <polecenie1> else <polecenie2> /if
Tekst między blokami jest traktowany jako polecenia dlatego następujący przykłąd jest prawidłowy:
Jakiś tekst {if (a==1)} a równe jest 1 {else} a nie jest równe 1 {/if}Można wstawić backslash (\) pomiędzy poleceniem a końcem wiersza aby pozbyć się znaku końca linii i zachować normalny (bez załamania linii w tym miejscu) przepływ tekstu. Na przykład:
Jakiś tekst {if (a==1)}\ a równa się 1 {else}\ a nie równa się 1 {/if}\
Wykonuje polecenie1 jako polecenie inicjalizujące pętlę. Następnie wykonuje polecenia i polecenie2 dopóki wyrażenie jest prawdziwe
for ( <polecenie1> ; <wyrażenie> ; <polecenie2> ) <polecenia> /for
Podstawowe funkcje:
Zamienia wartość liczbową na ciąg znaków
string(<zmienna>)
Zamienia ciąg znaków na liczbę
number(<zmienna>)
Rozszerzenia:
Polecenia SQL (pisane tylko małymi lub tylko dużymi literami)
SELECT <dalszy_ciąg_zapytania> INSERT <dalszy_ciąg_zapytania> DELETE <dalszy_ciąg_zapytania> UPDATE <dalszy_ciąg_zapytania> CREATE <dalszy_ciąg_zapytania> DROP <dalszy_ciąg_zapytania>
Liczba wierszy, których dotyczy zapytanie (małe lub duże litery)
ROWS <zapytanie_sql>
Wykonywanie poleceń powłoki
exec <polecenie>
Zacznijmy od bardzo prostego skryptu, który tworzy plik /etc/hosts z listą adresów i nazw komputerów (oraz urządzeń).
Poprzedni | Spis treści | Następny |
Moduły | Początek rozdziału | Dla dociekliwych |