Montag, 14. Oktober 2013

Update #14102013 LUA Scripting Engine

Im nächsten Update bzw. in Vorbereitung ist im Moment die LUA Scripting Engine,
die sich in das Regelsystem perfekt einarbeiten lässt. (Mit Erweiterung der Rules auf ein
2-Dimensionales Array).

Funktionsweise des LUA in den Rules:

nehmen wir an, wir haben eine Matrix mit dem folgenden Inhalt:

12 neue Mails erhalten
14 neue RSS-Feeds erhalten

mit folgendem Ausdruck:
(..) neue (.*?) erhalten.

ergibt sich als Resultatsmatrix:

LC |  1  | 2
1    | 12 | Mails
2    | 14 | RSS Feeds.

Die Regel kann nun lauten: Vergleich: gt IDL(ine): 2 IDC: 1 mit Wert "5"
Sprich: wenn der Wert aus Zeile 2, Spalte 1 größer 5 ist dann ist das Ergebnis wahr!

=> Ergebnis aus der neuen Rules-Definition

Wird nun der Typ auf "LUAC" eingestellt, so kann unter Code (unter Attribute "LUA"):
folgendermaßen lauten:

(Match[1][1] > 1) => Die Zielmatrix wird an LUA übertragen und auf den Wert >1
geprüft. Ist das Ergebnis wahr, so wird True zurückgeliefert.

Das gesamte Regex-Array wird an LUA übertragen und steht unter "Match"
zur Verfügung. der Index beginnt ab 1 (Spalte und Zeile).
Match[1][1] bezieht sich also auf "12" aus Zeile1, Spalte 1.

der Ausdruck aus der internen Auswertung kann mit Result abgerufen
und verarbeitet werden. Steht also im LUA-Code Result > 1 dann wird
wahr zurückgegeben, wenn sich das Ergebnis aus unserem Regex-Ausdruck
IDL 2, IDC 1 größer als 1 ist (Result > 1)

Der Typ kann ebenfalls "LUAF" heißen, was bedeutet dass unter LUA ein
Dateiname des zu ladenden LUA-Codes enthalten ist.

Bei Auswahl eines LUA-Typen wird der interne Vergleich nicht angewendet !
(Vergleich + Wert) wird ignoriert !

Aufgrund des LUA-Codes mit Vergleichen, wird der LUA-Code in den Unterknoten
LUA in ein CDATA-Segment gekapselt:

<Rule IDC="1" IDL="1" Type="LUA">
<LUA>
<![CDATA[
Result = (Match[1][1] < 5)
]]> 
</LUA>

Bildunterschrift hinzufügen



Keine Kommentare:

Kommentar veröffentlichen