YAML - Syntaxprimitive

In diesem Kapitel lernen Sie die folgenden Aspekte von Syntaxprimitiven in YAML kennen:

  • Produktionsparameter
  • Einrückungsräume
  • Trennräume
  • Ignoriertes Zeilenpräfix
  • Linienfaltung

Lassen Sie uns jeden Aspekt im Detail verstehen.

Produktionsparameter

Zu den Produktionsparametern gehören eine Reihe von Parametern und der Bereich der zulässigen Werte, die für eine bestimmte Produktion verwendet werden. Die folgende Liste von Produktionsparametern wird in YAML verwendet -

Vertiefung

Es wird durch Zeichen bezeichnet n oder mDer Zeichenstrom hängt von der Einrückungsstufe der darin enthaltenen Blöcke ab. Viele Produktionen haben diese Funktionen parametrisiert.

Kontext

Es wird mit bezeichnet c. YAML unterstützt zwei Gruppen von Kontexten:block styles und flow styles.

Stil

Es wird mit s bezeichnet. Skalare Inhalte können in einem der fünf Stile dargestellt werden:plain, double quoted and single quoted flow, literal and folded block.

Chomping

Es wird mit bezeichnet t. Blockskalare bieten viele Mechanismen, die beim Trimmen des Blocks helfen:strip, clip und keep. Chomping hilft beim Formatieren neuer Zeilenfolgen. Es wird die Blockstildarstellung verwendet. Der Chomping-Prozess erfolgt mithilfe von Indikatoren. Die Indikatoren steuern, welche Ausgabe mit Zeilenumbrüchen erzeugt werden soll. Die Zeilenumbrüche werden mit entfernt(-) Operator und Zeilenumbrüche werden mit hinzugefügt (+) Operator.

Ein Beispiel für den Chomping-Prozess ist unten dargestellt -

strip: |-
   text↓
clip: |
   text↓
keep: |+
   text↓

Die Ausgabe nach dem Parsen des angegebenen YAML-Beispiels lautet wie folgt:

Einrückungsräume

Im YAML-Zeichenstrom wird der Einzug als Zeilenumbruchzeichen mit null oder mehr Zeichen definiert. Der wichtigste zu beachtende Punkt ist, dass Einrückungen keine Tabulatorzeichen enthalten dürfen. Die Zeichen in Einrückungen sollten niemals als Teil der Inhaltsinformationen des Knotens betrachtet werden. Beachten Sie zum besseren Verständnis den folgenden Code:

%YAML 1.1
---
!!map {
   ? !!str "Not indented"
   : !!map {
      ? !!str "By one space"
      : !!str "By four\n spaces\n",
      ? !!str "Flow style"
      : !!seq [
         !!str "By two",
         !!str "Still by two",
         !!str "Again by two",
      ]
   }
}

Die Ausgabe, die Sie nach dem Einrücken sehen können, lautet wie folgt:

{
   "Not indented": {
      "By one space": "By four\n spaces\n", 
      "Flow style": [
         "By two", 
         "Still by two", 
         "Again by two"
      ]
   }
}

Trennräume

YAML verwendet Leerzeichen zur Trennung zwischen Token. Der wichtigste Hinweis ist, dass die Trennung in YAML keine Tabulatorzeichen enthalten sollte.

Der folgende Code zeigt die Verwendung von Trennräumen -

{ · first: · Sammy, · last: · Sosa · }
Die oben gezeigte Syntax gibt Ihnen die folgende Ausgabe:
{
   "\u00b7 last": "\u00b7 Sosa \u00b7", 
   "\u00b7 first": "\u00b7 Sammy"
}

Ignoriertes Zeilenpräfix

Das leere Präfix enthält je nach Skalartyp immer einen Einzug, der auch ein führendes Leerzeichen enthält. Einfache Skalare sollten keine Tabulatorzeichen enthalten. Auf der anderen Seite können Skalare in Anführungszeichen Tabulatorzeichen enthalten. Blockskalare hängen vollständig von der Einrückung ab.

Das folgende Beispiel zeigt die systematische Arbeit mit ignorierten Zeilenpräfixen -

%YAML 1.1
---
!!map {
   ? !!str "plain"
   : !!str "text lines",
   ? !!str "quoted"
   : !!str "text lines",
   ? !!str "block"
   : !!str "text·®lines\n"
}

Die für die Blockströme erzielte Ausgabe ist wie folgt:

{
   "plain": "text lines", 
   "quoted": "text lines", 
   "block": "text\u00b7\u00aelines\n"
}

Linienfalten

Das Falten von Linien ermöglicht das Brechen langer Linien zur besseren Lesbarkeit. Mehr kurze Zeilen bedeuten eine bessere Lesbarkeit. Das Falten von Linien wird erreicht, indem die ursprüngliche Semantik der langen Linie notiert wird. Das folgende Beispiel zeigt das Falten von Linien -

%YAML 1.1
--- !!str
"specific\L\
trimmed\n\n\n\
as space"

Sie können die Ausgabe für das Falten von Linien im JSON-Format wie folgt sehen:

"specific\u2028trimmed\n\n\nas space"