Zum Hauptinhalt springen

Makro (compound)

Makros sind benannte Felddefinitionen, die innerhalb einer API mehrfach verwendet werden können.

{
"application": "Tutorial",
"label": "Verwendung von Macros",
"project": "inSynergie CMS",
"tags": [],
"hideId": true,
"extensions": {
"compounds": {
"string": {
"cms": {
"column": true,
"sortable": true
},
"type": "string",
"empty": false
},
"name": {
"cms": {
"column": true
},
"type": "object",
"strict": true,
"properties": {
"first": {
"cms": {
"label": "Vorname"
},
"type": "compound",
"compound": "string",
"localizable": true,
"optional": true
},
"last": {
"cms": {
"label": "Nachname"
},
"type": "compound",
"compound": "string"
}
}
}
}
},
"fields": {
"name": {
"cms": {
"column": true,
"sortable": true,
"label": "Wer"
},
"empty": false,
"type": "string"
},
"spouse": {
"type": "compound",
"compound": "name",
"optional": true
},
"children": {
"type": "array",
"optional": true,
"items": {
"type": "compound",
"compound": "name"
}
}
}
}

Die API hat die Felder name, spouse und children, wobei die beiden letzten den Typ compound verwenden. spouse und children greifen auf das Makro name zurück, das unter extensions.compounds definiert ist. spouse wird zusätzlich optional gemacht ("optional": true).

Das Makro name verwendet seinerseits das Makro string und macht es im Feld first lokalisierbar ("localizable": true).

Verwendung von Makros

Regeln​

  • Ein Makro-Feld hat "type": "compound" und nennt in compound den Namen des Makros. Erlaubt sind zusätzlich optional, localizable und cms. Sie ergänzen bzw. überschreiben die Angaben des Makros.
  • Makros können andere Makros verwenden, solange keine Zyklen entstehen.
  • Makros gelten nur innerhalb einer API, nicht API-übergreifend.

Neue Möglichkeiten für die Beschreibung bringen Makros nicht: Die benannte Definition wird lediglich an der Verwendungsstelle eingesetzt, bei Bedarf mehrstufig. Sie erleichtern aber die Beschreibung komplexer Strukturen, anders als in diesem bewusst einfachen Beispiel.