YAML - Primitive di sintassi

In questo capitolo imparerai i seguenti aspetti delle primitive di sintassi in YAML:

  • Parametri di produzione
  • Spazi di rientro
  • Spazi di separazione
  • Prefisso di linea ignorato
  • Linea pieghevole

Cerchiamo di capire ogni aspetto in dettaglio.

Parametri di produzione

I parametri di produzione includono una serie di parametri e la gamma di valori consentiti utilizzati su una produzione specifica. Il seguente elenco di parametri di produzione viene utilizzato in YAML:

Rientro

È indicato dal carattere n o mIl flusso di caratteri dipende dal livello di rientro dei blocchi inclusi in esso. Molte produzioni hanno parametrizzato queste caratteristiche.

Contesto

È indicato da c. YAML supporta due gruppi di contesti:block styles e flow styles.

Stile

È indicato con s. Il contenuto scalare può essere presentato in uno dei cinque stili:plain, double quoted and single quoted flow, literal and folded block.

Masticare

È indicato da t. Gli scalari del blocco offrono molti meccanismi che aiutano a tagliare il blocco:strip, clip e keep. Il masticare aiuta a formattare le nuove stringhe di riga. Viene utilizzata la rappresentazione in stile blocco. Il processo di masticare avviene con l'aiuto di indicatori. Gli indicatori controllano quale output dovrebbe essere prodotto con le nuove righe di stringa. Le nuove righe vengono rimosse con(-) operatore e newline vengono aggiunti con (+) operatore.

Di seguito è mostrato un esempio per il processo di chomping:

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

L'output dopo l'analisi dell'esempio YAML specificato è il seguente:

Spazi di rientro

Nel flusso di caratteri YAML, il rientro è definito come un carattere di interruzione di riga di zero o più caratteri. Il punto più importante da tenere a mente è che il rientro non deve contenere caratteri di tabulazione. I caratteri nel rientro non dovrebbero mai essere considerati come parte delle informazioni sul contenuto del nodo. Osservare il codice seguente per una migliore comprensione:

%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",
      ]
   }
}

L'output che puoi vedere dopo il rientro è il seguente:

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

Spazi di separazione

YAML utilizza caratteri spazio per la separazione tra i token. La nota più importante è che la separazione in YAML non deve contenere caratteri di tabulazione.

Il seguente solitario di codice mostra l'utilizzo degli spazi di separazione:

{ · first: · Sammy, · last: · Sosa · }
La sintassi mostrata sopra fornisce il seguente output:
{
   "\u00b7 last": "\u00b7 Sosa \u00b7", 
   "\u00b7 first": "\u00b7 Sammy"
}

Prefisso di linea ignorato

Il prefisso vuoto include sempre un rientro a seconda del tipo scalare che include anche uno spazio bianco iniziale. Gli scalari semplici non devono contenere caratteri di tabulazione. D'altra parte, gli scalari tra virgolette possono contenere caratteri di tabulazione. Gli scalari del blocco dipendono completamente dall'indentazione.

L'esempio seguente mostra il funzionamento del prefisso di riga ignorato in modo sistematico:

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

L'output ottenuto per i flussi di blocchi è il seguente:

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

Linea pieghevole

Line Folding consente di rompere le linee lunghe per la leggibilità. Più quantità di righe brevi significano una migliore leggibilità. La piegatura della linea si ottiene annotando la semantica originale della linea lunga. L'esempio seguente mostra la piegatura della linea:

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

Puoi vedere l'output per la piegatura della linea in formato JSON come segue:

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