Les bases du YAML

By Denis Fabien
2023-01-04

Ami du beau code, bonsoir !

Dans le cadre de nos activités de soutien pour la mise en place d'automatisme dans les compagnies, nous rencontrons souvent des contributeurs, donc le YAML n'est pas le "core business". Souvent, il font face à de petites erreurs de syntaxe qui font perdre beaucoup de temps. L'objectif ici est de donner des exemples de syntaxe pour couvrir les principaux enjeux.

Le YAML c'est quoi ?

Le YAML est un markup langage (Yet Another Markup Langage), qui permet de véhiculer des informations à l'aide de balise ou de syntaxe.

C'est donc un sérialiseur de données.

Le YAML est basé sur les concepts de Key/Value, il est souvent comparé au JSON, mais contrairement au JSON il est simple à lire pour un humain.

Les clés ressemblent à quoi ?

Les clés dans un YAML sont des champs textes, par contre, comme elles vont souvent être réutilisées dans du code, on va appliquer certaines normes :

  • snake_case : les lettres de l'alphabet, en minuscule, les chiffres, avec le underscore pour séparer les mots ;
  • en anglais : j'ai pris pour habitude de toujours représenter les keys en anglais pour une raison simple : les accents ! Même si le YAML supporte les accents, le code qui va lire le YAML va généralement mal fonctionner s'il y a des accents ;
  • le pluriel / singulier : on essaie toujours d'utiliser la logique des singuliers / pluriels. Une liste de voiture se nommera voitures (au pluriel pour matérialiser la liste) ;
  • jamais des chiffres seuls, les chiffres sont plus pertinents pour indiquer les éléments dans une liste.

Les valeurs, elles, c'est quoi ?

Il existe 3 types de valeurs dans un fichier YAML :

  • les données scalaires : chaîne de caractères, booléen, nombre ;
  • les listes ;
  • les tableaux associatifs.

Les données scalaires

Ce sont des données tels que :

  • Chaîne de caractères
    • Doit être définie entre guillement (simple ou double) OU ne pas contenir de caractère tel deux-points (:) et les guillemets entre autres
      • ma chaîne de caractères
      • "l'autre chaîne"   # ici nous avons une apostrophe donc la chaîne doit être créee entre double guillement
      • 'il dit "bonjour"'   # ici c'est le contraire, nous avons un guillement donc la chaîne doit être mise entre apostrophe
    • Peuvent être sur plusieurs lignes
  • Nombre
    • N'importe quel nombre positif ou négatif, entier ou flottant
      • 12
      • 12.5
      • -45
      • -45.67
  • Booléen
    • Que deux valeurs possibles 
      • true
      • false

Les listes

Les listes sont composées de séries de valeurs. Les valeurs peuvent être toutes du même type, ou bien chacune d'un type différent. Si un des éléments est une chaîne, un nombre ou un booléen, il doit respecter les règles de données scalaires.

Quelques exemples :

  • ['abc', 'def', ghi]
  • ['abc', -123.456, true]

Mais, il peut aussi contenir des tableaux associatifs:

  • ['abc', {'a': 'b'}, {'d': 'e'}]

Les tableaux associatifs

Ce sont des données plus complexes, elles correspondent à des types plus avancés, où les éléments sont identifés par des clés:

  • {a: b, c: {'d': 'e'}, 'g': [1, 2, 3]}

Voilà, avec ces quelques bases, vous devriez être plus en business !

Ami de Yaml, je vous souhaite une bonne nuit !