Hinweise zu Codebeispielen

Formeta

In der Dokumentation finden sich immer wieder Codebeispiele. Ein- und Ausgaben werden dabei im sog. Formeta-Format dargestellt. Formeta hat lediglich zwei Bausteine: Literale (Schlüssel-Wert-Paare) und Entitäten (Objekte, die Literale oder weitere Entitäten enthalten). Weiter gelten folgende Regeln:

Ein Beispiel:

{
  kanton1 {
    name: Appenzell Ausserrhoden,
    hauptort: 'Herisau, Trogen',
    einwohnerzahl: 55\'000
  },
  kanton2 {
    name: Appenzell Innerrhoden,
    hauptort: 'Appenzell',
    einige berge: {
      hoher berg: säntis,
      und: schäfler
    }
}

Dasselbe Beispiel in kompakter Schreibweise ohne Leerzeichen, Zeilenumbrüche und optionalen Kommata:

{kanton{name:Appenzell Ausserrhoden,hauptort:Herisau\, Trogen,einwohnerzahl:55\'000}kanton2{name:Appenzell Innerrhoden,hauptort:Appenzell,einige berge{hoher berg:säntis,und:schäfler}}}

Metafacture Runner

Um die Beispiele selber durchspielen zu können, muss der sog. Metafacture runner (eine ausführbare Instanz von Metafacture) installiert werden. Dazu die aktuelle Metafacture-Distribution herunterladen und entpacken. Weitere Hinweise dazu finden sich auf der Website von Metafacture. Zudem ist eine sog. Flux-Datei notwendig, in der der Transformationsworkflow definiert wird. Eine minimale Flux-Datei, in der das obige Beispiel transformiert wird, ist folgendermassen aufgebaut:

FLUX_DIR + "eingabe.formeta"|   // Pfad zur Eingabedatei; FLUX_DIR enthält den Pfad zur Flux-Datei
open-file|                      // Öffne Datei
as-formeta-records|             // Prozessiere Dateitext als Formeta
decode-formeta|                 // Dekodiere Formeta
morph(FLUX_DIR + "morph.xml")|  // Wende Transformationsregeln an (in morph.xml definiert)
encode-formeta|                 // Serialisiere als Formeta
write("stdout");                // Gib Resultat auf Kommandozeile aus

Nachdem Metafacture runner installiert und die Flux- sowie die Eingabedatei erstellt sind, ins Verzeichnis der Flux-Datei wechseln und auf der Kommandozeile folgendes eingeben:

/pfad/zu/metafacture/runner/flux.sh flux.datei

Docker-Image

Anstatt Metafacture runner zu installieren, kann auch das entsprechende Docker-Image verwendet werden. Dazu muss Docker lokal installiert werden. Anschliessend über Kommandozeile ins Verzeichnis wechseln, wo sich die Flux- und die Eingabedatei befinden, und eingeben:

docker run -v `pwd`:/mfwf:ro sschuepbach/metafacture-runner:latest flux.datei

Wird das Docker-Image zum ersten Mal ausgeführt, dauert der Prozess etwas länger, da zuerst das entsprechende Image heruntergeladen werden muss.