EasyCatalog-Zusatzfelder mit LUA-Script Schritt-für-Schritt

Einführung

Einführung

Mit den Standard-Zusatzfeldern von EasyCatalog kann man bereits eine Menge Dinge erreichen und die unterschiedlichsten Berechnungen und Umformungen von Daten durchführen. Wesentlich mächtiger sind die in InDesign CC2015 neu hinzugekommenen erweiterten Zusatzfelder, die Lua-Skriptcode enthalten können. Lua ist eine eigene Skriptsprache mit dem üblichen Funktionsumfang, wie man ihn von sonstigen Skriptsprachen kennt. EasyCatalog bringt zusätzliche LUA-Objekte mit, um auf Datenquellen, Textfelder usw. zugreifen zu können (siehe auch: EasyCatalog LUA-Dokumentation).

Am Beispiel eines Unterkunftverzeichnisses für eine Urlaubs- und Ferienregion möchten wir zeigen, wie mit Hilfe eines LUA-Skripts aus den Basisdaten pro Unterkunft die jeweils verfügbaren Betten in den verschiedenen Sterne-Kategorien für eine Katalogausgabe aufbereitet wurden.

Die Beispieldaten und die Idee zur Aufarbeitung

Die Beispieldaten und die Idee zur Aufarbeitung

In unserem Beispiel liegen die Daten in einer XML-Struktur vor. Aus ihnen sollen alle verfügbare Zimmergrößen als ein einzelner Text für das Unterkunftsverzeichnis aufbereitet werden. Die Abbildung zeigt einen Ausschnitt aus den XML-Daten. Pro Unterkunft können beliebig viele Einträge der Art <service> vorliegen. In jedem davon ist in <category> die Sterne-Kategorie, z.B. *** für drei Sterne, hinterlegt sowie in <occupancy> die Bettenzahl. Zusätzlich kann ein Text Sup. enthalten sein, der später als Superior angehängt werden soll. Weitere Komplizierung: Es können gleichartige Einträge mehrfach vorkommen. Dadurch wird angezeigt, dass es z.B. 2 Ferienwohnungen in der Kategorie 3*** in der Unterkunft gibt.

Die Ausgabe aller verfügbaren Ferienwohnungen eines Anbieters soll nun die höchsten Kategorien zuerst ausgeben, darin jeweils aufsteigend sortiert nach Bettenzahl. Beispiel: 4*: 2x4 & 1x6 Betten, 3* Superior: 1x5 Betten, 2*: 3x6 Betten. Die Idee ist nun, die Daten zunächst vom XML-Ballast zu befreien und anschließend mit LUA-Skriptcode so aufzubereiten und zu sortieren, dass das gewünschte Ergebnis herauskommt.

Die XML-Daten in eine einfache Struktur bringen

Die XML-Daten in eine einfache Struktur bringen

Im ersten Schritt erstellen wir ein Zusatzfeld __service, das aus der XML-Struktur der <service>-Einträge eine Komma-separierte Liste von Inhalten macht. Wie die Abbildung zeigt, kann das mit Hilfe von EVALUATEXPATH(service, '//service') geschehen.

Weiteren Ballast werden wir durch Reinigungsoptionen los: STV=; =;^n=;. Hier werden Leerzeichen, Zeilenumbrüche sowie alls Vorkommen von STV entfernt. Übrig bleibt z.B.: **2,***2,***Sup.4,***4,***Sup.4,***Sup.6,***Sup.6.

Aufarbeitung mit einem erweiterten Zusatzfeld und LUA

Aufarbeitung mit einem erweiterten Zusatzfeld und LUA

Im nächsten Schritt kommt die Aufarbeitung mit LUA-Skriptcode hinzu. Dazu erstellt man ein neues Zusatzfeld mit dem Namen _bettenzahl. Als Typ wird erweitert eingestellt. In das nun erscheinende große Texteingabefeld trägt man den LUA-Quelltext ein, der aus dem zuvor aus dem XML-Anteil extrahierten Text mit Sternen, Zahlen dem Sup die gewünschte Ausgabe erzeugt. Die Rückgabe muss dabei mit return am Ende des Skripts erfolgen, so wie es die Abbildung zeigt.

Das Ergebnis

Das Ergebnis

Wie die Abbildung zeigt, konnte mit dem LUA-Skript eine zunächst unstrukturierte Information so aufbereitet werden, dass das gewünschte Ergebnis herauskommt: 3*Superior: 2x4 & 2x6 Betten, 3*: 1x2 & 1x4 Betten, 2*: 1x2 Betten.

Dokumente
EasyCatalog LUA-Dokumentation
EasyCatalog LUA-Dokumentation