YAML - Primitives de syntaxe

Dans ce chapitre, vous découvrirez les aspects suivants des primitives de syntaxe dans YAML -

  • Paramètres de production
  • Espaces d'indentation
  • Espaces de séparation
  • Préfixe de ligne ignoré
  • Pliage de ligne

Comprenons chaque aspect en détail.

Paramètres de production

Les paramètres de production comprennent un ensemble de paramètres et la plage de valeurs autorisées qui sont utilisées sur une production spécifique. La liste suivante des paramètres de production est utilisée dans YAML -

Échancrure

Il est indiqué par le caractère n ou mLe flux de caractères dépend du niveau d'indentation des blocs qu'il contient. De nombreuses productions ont paramétré ces fonctionnalités.

Le contexte

Il est désigné par c. YAML prend en charge deux groupes de contextes:block styles et flow styles.

Style

Il est indiqué par l'art. Le contenu scalaire peut être présenté dans l'un des cinq styles:plain, double quoted and single quoted flow, literal and folded block.

Chomping

Il est désigné par t. Les scalaires de bloc offrent de nombreux mécanismes qui aident à rogner le bloc:strip, clip et keep. Chomping aide à formater les nouvelles chaînes de ligne. Il est utilisé comme représentation de style de bloc. Le processus de chomping se produit à l'aide d'indicateurs. Les indicateurs contrôlent quelle sortie doit être produite avec des nouvelles lignes de chaîne. Les nouvelles lignes sont supprimées avec(-) l'opérateur et les nouvelles lignes sont ajoutés avec (+) opérateur.

Un exemple de processus de chomping est montré ci-dessous -

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

La sortie après analyse de l'exemple YAML spécifié est la suivante -

Espaces d'indentation

Dans le flux de caractères YAML, l'indentation est définie comme un caractère de saut de ligne de zéro ou plusieurs caractères. Le point le plus important à garder à l'esprit est que l'indentation ne doit contenir aucun caractère de tabulation. Les caractères en retrait ne doivent jamais être considérés comme faisant partie des informations de contenu du nœud. Observez le code suivant pour une meilleure compréhension -

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

La sortie que vous pouvez voir après l'indentation est la suivante -

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

Espaces de séparation

YAML utilise des caractères d'espacement pour la séparation entre les jetons. La remarque la plus importante est que la séparation dans YAML ne doit pas contenir de caractères de tabulation.

Le code unique suivant montre l'utilisation des espaces de séparation -

{ · first: · Sammy, · last: · Sosa · }
La syntaxe indiquée ci-dessus vous donne le résultat suivant:
{
   "\u00b7 last": "\u00b7 Sosa \u00b7", 
   "\u00b7 first": "\u00b7 Sammy"
}

Préfixe de ligne ignoré

Le préfixe vide inclut toujours une indentation en fonction du type scalaire qui comprend également un espace blanc au début. Les scalaires simples ne doivent contenir aucun caractère de tabulation. D'autre part, les scalaires entre guillemets peuvent contenir des caractères de tabulation. Les scalaires de bloc dépendent complètement de l'indentation.

L'exemple suivant montre le fonctionnement du préfixe de ligne ignoré de manière systématique -

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

La sortie obtenue pour les flux de blocs est la suivante -

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

Pliage de ligne

Le pliage de lignes permet de casser de longues lignes pour plus de lisibilité. Un plus grand nombre de lignes courtes signifie une meilleure lisibilité. Le pliage de ligne est réalisé en notant la sémantique originale de la longue ligne. L'exemple suivant montre le pliage de ligne -

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

Vous pouvez voir la sortie pour le pliage de ligne au format JSON comme suit -

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