YAML - Stili di flusso

Gli stili di flusso in YAML possono essere pensati come un'estensione naturale di JSON per coprire le linee di contenuto pieghevole per una funzionalità meglio leggibile che utilizza ancore e alias per creare le istanze dell'oggetto. In questo capitolo, ci concentreremo sulla rappresentazione del flusso dei seguenti concetti:

  • Nodi alias
  • Nodi vuoti
  • Stili scalari di flusso
  • Stili di raccolta Flow
  • Nodi di flusso

L'esempio di nodi alias è mostrato di seguito:

%YAML 1.2
---
!!map {
   ? !!str "First occurrence"
   : &A !!str "Foo",
   ? !!str "Override anchor"
   : &B !!str "Bar",
   ? !!str "Second occurrence"
   : *A,
   ? !!str "Reuse anchor"
   : *B,
}

L'output JSON del codice sopra riportato è riportato di seguito:

{
   "First occurrence": "Foo", 
   "Second occurrence": "Foo", 
   "Override anchor": "Bar", 
   "Reuse anchor": "Bar"
}

I nodi con contenuto vuoto sono considerati nodi vuoti. L'esempio seguente mostra questo:

%YAML 1.2
---
!!map {
   ? !!str "foo" : !!str "",
   ? !!str "" : !!str "bar",
}

L'output dei nodi vuoti in JSON è rappresentato come di seguito:

{
   "": "bar", 
   "foo": ""
}

Gli stili scalari di flusso includono i tipi con virgolette doppie, virgolette singole e semplici. L'esempio di base per lo stesso è fornito di seguito:

%YAML 1.2
---
!!map {
   ? !!str "implicit block key"
   : !!seq [
      !!map {
         ? !!str "implicit flow key"
         : !!str "value",
      }
   ]  
}

L'output in formato JSON per l'esempio sopra riportato è mostrato di seguito:

{
   "implicit block key": [
      {
         "implicit flow key": "value"
      }
   ] 
}

La raccolta di flussi in YAML è nidificata con una raccolta di blocchi all'interno di un'altra raccolta di flussi. Le voci di raccolta del flusso vengono terminate concomma (,) indicatore. L'esempio seguente spiega in dettaglio il blocco di raccolta del flusso:

%YAML 1.2
---
!!seq [
   !!seq [
      !!str "one",
      !!str "two",
   ],
   
   !!seq [
      !!str "three",
      !!str "four",
   ],
]

L'output per la raccolta di flussi in JSON è mostrato di seguito:

[
   [
      "one", 
      "two"
   ], 
   [
      "three", 
      "four"
   ]
]

Gli stili di flusso come JSON includono indicatori di inizio e fine. L'unico stile di flusso che non ha alcuna proprietà è il semplice scalare.

%YAML 1.2
---
!!seq [
!!seq [ !!str "a", !!str "b" ],
!!map { ? !!str "a" : !!str "b" },
!!str "a",
!!str "b",
!!str "c",]

L'output per il codice mostrato sopra in formato JSON è fornito di seguito:

[
   [
      "a", 
      "b"
   ], 
   
   {
      "a": "b"
   }, 
   
   "a", 
   "b", 
   "c"
]