LUA Funktionen für EasyCatalog – Teil 1

Vor kurzem habe ich in EasyCatalog Zusatzfelder angelegt um Datensätze zu bearbeiten. Irgendwann kam der Zeitpunkt an dem die Funktionen aus der EasyCatalog Funktionsliste nicht mehr ausgereicht haben und ich angefangen habe, die Daten mit LUA zu verändern. Wenn ich aber sowohl EasyCatalog Funktionen als auch LUA Skripte verwenden wollte, musste ich dafür immer mindestens ein weiteres Zusatzfeld anlegen. Mehr zur Übung und zum Spaß als aus Notwendigkeit habe ich für diesen Fall angefangen, die EasyCatalog Funktionen in LUA nachzubauen.

In dieser kleinen Reihe aus Blog-Beiträgen möchte ich meine Ergebnisse zeigen und zur Verfügung stellen.
Vor allem deswegen, weil es eine gute Gelegenheit ist die Funktionsliste näher zu betrachten und die ein oder andere Funktion zu entdecken, die man vorher vielleicht noch nicht auf dem Schirm hatte.

PIM Astronaut entdeckt LUA Funktionen für EasyCatalog

Anmerkung: Die LUA Funktionen lassen sich direkt in EasyCatalog einsetzen.Allerdings müssen dafür die Kommentare entfernt werden. Zum besseren Verständnis wurden in allen Funktionen schon Werte eingetragen um in EasyCatalog direkt ein Ergebnis sehen zu können.

AVG

Beschreibung:
Gibt den Durchschnitt mehrerer Werte zurück.
Parameter
argument1, argument2, …
Beispiel
AVG(20, 10, -20, 2.5, 0)      Ergebnis: 2.5

values_table = {20, 10, -20, 2.5, 0};      — Es können beliebig viele Parameter übergeben werden aus denen der Durchschnitt gebildet wird.

function AVG( values_table )
   local sum = 0;
   local count= 0;

   for i, v in ipairs( values_table ) do
      sum = sum + v;

      count = count + 1;
   end

   return(sum/count);
end

return(AVG( values_table ));

CASE

Beschreibung
In einer Liste aus Pärchen (welche jeweils aus „Schlüssel“ und „Wert“ bestehen) wird ein Schlüssel gesucht und der darauf folgende Wert ausgegeben.
Parameter
text, key, value
Beispiel
CASE(3, 1, Hund, 2, Bär, 3, Katze, 4, Kuh)      Ergebnis: Katze

pair_Table = {1, ‘Hund‘, 2, ‘Bär‘, 3, ‘Katze‘, 4, ‘Kuh‘};      — Eine Tabelle mit Wertepärchen.
test = 3;      — Nach diesem Wert wird in “pair_Table“ gesucht.

function CASE(pair_Table, test)
   for i, v in ipairs(pair_Table) do
      if v == test then
         return(pair_Table[i+1]);
      end
   end
end

return(CASE(pair_Table, test));

COMPARESTR

Beschreibung
Vergleicht einen Feldinhalt mit einem Wert und gibt TRUE oder FALSE aus.
TRUE und FALSE können durch andere Strings ersetzt werden.
Parameter
field name, value, (optional)result if TRUE, (optional)result if FALSE
Beispiel
COMPARESTR(Verfügbarkeit, ‘Ja‘, ‘Der Artikel ist verfügbar.‘, ‘Der Artikel ist nicht auf Lager.‘)      Ergebnis: Der Artikel ist verfügbar.

fieldname = ‘Feldname‘;      — Der Feldname, dessen Inhalt geprüft werden soll.
testvalue = ‘test‘;      — Nach diesem Wert wird in “Feldname“ gesucht.
true_str = ‘TRUE‘;      — Dieser String wird ausgegeben wenn “test“ in “Feldname“ gefunden wird.
false_str = ‘FALSE‘;      — Dieser String wird ausgegeben wenn “test“ nicht in “Feldname“ gefunden wird.

function COMPARESTR(fieldname, testvalue)
   fieldvalue = FIELD.get(fieldname):content();
   if fieldvalue == testvalue then
      return(true_str);
   else
      return(false_str);
   end
end

return(COMPARESTR(fieldnametestvalue));

CONCAT

Beschreibung
Mehrere Parameter werden der Reihe nach zusammengesetzt. Die einzelnen Parameter werden auch gerne mit der Funktion FIELDSTR befüllt um Feldinhalte zusammenzuführen.
Parameter
argument1, argument2, …
Beispiel
CONCAT(‘PIM‘, ‘Astronauten‘)    Ergebnis: PIMAstronauten.
CONCAT(FIELDSTR(Material), ‘ – ‘, FIELDSTR(Veredelung))    Ergebnis: Stahlblech – gebürstet

return(‘PIM‘ .. ‘ ‘ .. ‘Astronauten‘);      — Der zweite Parameter ist hier ein Leerzeichen welches zwischen PIM und Astronauten eingeschoben wird.

In den meisten Fällen genügt diese Variante vollkommen und ist zudem am übersichtlichsten. Sollte jedoch mehr Kontrolle gewünscht sein, kann auch folgender Code verwendet werden:

concat_table = {‘PIM‘, ‘ ‘, ‘Astronauten‘};

function CONCAT( concat_table )
   local returnvalue_str = ‘‘;
   for i, v in ipairs( concat_table ) do     — In dieser Schleife kann “v“ bearbeitet/geprüft/… werden.
      returnvalue_str = returnvalue_str .. v;
   end
   return(returnvalue_str);
end

return(CONCAT( concat_table ));

CONTAINSALL

Beschreibung
CONTAINSALL prüft Strings darauf, ob sie alle in einem Test-String enthalten sind und gibt TRUE oder FALSE aus.
Ein Einsatzort ist wenn man in einem Beschreibungstext Stichwörter hat, die eine Aktion auslösen sollen. Wenn also zum Beispiel ein Auto beschrieben wird und man immer dann ein Hybridauto-Umweltsiegel-Icon ausgeben möchte, wenn im Beschreibungstext sowohl das Wort „Hybrid“ als auch das Wort „Umweltsiegel“ vorkommt.
Parameter
string to check, string to look for, string to look for, …
Beispiel
CONTAINSALL(Das Hybridauto hat ein Umweltsiegel, Hybrid, Umweltsiegel)      Ergebnis: TRUE

string_to_test = ‘Astronaut‘;     — Es soll das Wort “Astronaut“ durchsucht werden.
containsall_table = {‘A‘, ‘stro‘, ‘n‘};     — Nach diesen Strings wird gesucht, wobei beliebig viele Strings übergeben werden können.

function CONTAINSALL( string_to_test, containsall_table )

   for i, v in ipairs( containsall_table ) do
      if string.find(string_to_test, v) == nil then
         return(‘FALSE‘);
      end
   end

   return(‘TRUE‘);
end

return(CONTAINSALL( string_to_test, containsall_table ));

CONTAINSANY

Beschreibung
CONTAINSANY prüft ob mindestens ein String in einem Test-String enthalten ist und gibt TRUE oder FALSE aus.
Parameter
string to check, string to look for, string to look for, …
Beispiel
CONTAINSANY(‚Astronaut‘, ‚A‘, ‚p‘, ‚q‘)      Ergebnis: TRUE

string_to_test = ‘Astronaut‘;     — Es soll das Wort “Astronaut“ durchsucht werden.
containsany_table = {‘A‘, ‘p‘, ‘q‘};     — Nach diesen Strings wird gesucht, wobei beliebig viele Strings übergeben werden können.

function CONTAINSANY( string_to_test, containsany_table )

   for i, v in ipairs( containsany_table ) do
      if string.find(string_to_test, v) ~= nil then
         return(‘TRUE‘);
      end
   end

   return(‘FALSE‘);
end

return(CONTAINSANY( string_to_test, containsany_table ));

Schreibe einen Kommentar

Menü schließen

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen