YAML – Introduction

29 janvier 2021

Ah non, pas un autre façon de représenter des structures de données 😉 !


Description:

YAML Ain’t Markup Language

Référence: YAML

Validateur YAML en ligne: yamllint

Convertisseur YAML -> JSON : onlineyamltools


1 – Insérer des commentaires dans un document YAML

# Je suis un commentaire
# Référence de YAML : https://yaml.org/spec/1.2/spec.html

# --> Je suis dans la zone des directives YAML
# https://yaml.org/spec/1.2/spec.html#id2781553

# Je (---) délimite les deux zones
---  

# --> Je suis dans la zone de contenu YAML

2 – Variables scalaires

2.1 – Chaines de caractères

# Une chaine non délimitée
titre: L'Origine des espèces

# Une chaine délimitée
sous-titre: "L'origine des espèces au moyen de la sélection naturelle ou la préservation des races favorisées dans la lutte pour la survie"

# Une chaine multi-lignes débute par le car '|'
especes: |
  mammifère
  oiseau
  reptile
  poisson

2.1b – Représentation json

{
   "titre" :       "L'Origine des espèces",
   "sous-titre" :  "L'origine des espèces au moyen de la sélection naturelle ou la préservation des races favorisées dans la lutte pour la survie",
   "especes" :     "mammifère\noiseau\reptile\npoisson"
}

2.2 – Définition d’une chaine sur plusieurs lignes

# Expression sur plusieurs lignes avec un seul \n à la fin de la chaine:
commentaires: >
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.

2.2b – json

{ 
   "commentaires": "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.\n"
}

2.3 – Nombres

# Définir des nombres:

# Entier:
age: 33

# Nombre flottant  - Float:
PI: 3.1415926535897932384626433832

# Notation scientifique:
population: 7.7947e+9

2.3b – json

{
   "age": 33,
   "PI":  3.141592653589793,
   "population": 7794700000.0
}

2.4 – Valeur booléenne

# Valeur booléenne 
important: false
# important: False
# important: FALSE

2.4b – json

{
   "important": false
}

2.5 – Valeur ‘null’

# Représentation de la valeur 'null'
# Peut être défini par l'absence d'affectation

valeur-null: 

# Ou bien, explicitement:

autre-valeur-null: null

# valeur-null: NULL
# valeur-null: Null

2.5b – json

{
    "valeur-null": null
}

2.6 – Représentation de dates

# Représentation des dates et horodatages (timestamps)
date: 2022-02-22
canonical: 2021-01-15T05:59:43.1Z
iso8601: 2011-01-14t11:59:43.10-05:00
avec-espaces: 2021-02-14 23:59:43.10 -5

2.6b – json

{
  "date": "2022-02-22T00:00:00.000Z",
  "canonical": "2021-01-15T05:59:43.100Z",
  "iso8601": "2011-01-14T16:59:43.100Z",
  "avec-espaces": "2021-02-15T04:59:43.100Z"
}

3.0 – Structures et listes

3.1 – Une liste (tableau, vecteur) des chaines de caractères

# Représentation d'une liste d'éléments
# Définir une liste d'éléments avec '-':
mammifères:
    - chat
    - chien
    - souris

# Version en ligne 'inline':
poissons: [ ange, truite, saumon ]

NOTE: L’indentation est obligatoire.  Au moins un ‘ ‘ pour représenter les sous éléments d’un bloc.  Il faut ABSOLUMENT utiliser la même indentation pour tous les éléments d’une liste.

# Ceci est valide:
mammifères:
 - chat
 - chien
 - souris

# ceci est INVALIDE:
mammifères:
 - chat
- chien  # !! Indentation incorrecte 
 - souris

# ceci est AUSSI INVALIDE:
mammifères:
 - chat
  - chien  # !! Indentation incorrecte 
 - souris

3.1b – json

{
  "mammifères": [
    "chat",
    "chien",
    "souris"
  ]
}

{
  "poissons": [
     "ange",
     "truite",
     "saumon"
  ]
}

3.1c – Exemple d’une structure imbriquée:

---
mammifères:
  - chat:
    - brun
    - noir
  - chien
  - souris
mammifères2:
  - chat
  - chien
  - souris
{
  "mammifères": [
    {
      "chat": [
        "chat1",
        "chat2"
      ]
    },
    "chien",
    "souris"
  ],
  "mammifères2": [
    "chat",
    "chien",
    "souris"
  ]
}

3.2 – Structures complexes – valeurs imbriquées

# Un livre marquant
Origine-des-espèces: 
  auteur: Charles Darwin
  date: 1859-11-24
  page: 502
  genres: 
    - Traité
    - Publication scientifique

3.2b – json

{
  "Origine-des-espèces": {
    "auteur": "Charles Darwin",
    "date": "1859-11-24T00:00:00.000Z",
    "page": 502,
    "genres": [
      "Traité",
      "Publication scientifique"
    ]
  }
}

4.0 Les noeuds

4.1 – Réutilisation d’un noeud

# Ancrage de nœuds - Réutilisation d'un nœud
auteur : &cDarwin
  prenom: Charles
  nom: Darwin
  naissance: 1809-02-12

Le-voyage-du-Beagle: 
  auteur: *cDarwin
  date: 1839-05-25
  page: 350
  réédition:
    - 1839
    - 1860
  genres: 
    - Biographie
    - Guide de voyage
    - Littérature de voyage

4.1b – json

{
  "auteur": {
    "prenom": "Charles",
    "nom": "Darwin",
    "naissance": "1809-02-12T00:00:00.000Z"
  },
  "Le-voyage-du-Beagle": {
    "auteur": {
      "prenom": "Charles",
      "nom": "Darwin",
      "naissance": "1809-02-12T00:00:00.000Z"
    },
    "date": "1839-05-25T00:00:00.000Z",
    "page": 350,
    "réédition": [
      1839,
      1860
    ],
    "genres": [
      "Biographie",
      "Guide de voyage",
      "Littérature de voyage"
    ]
  }
}
 

Document rédigé par Alain Boudreault (c) 2021 – Révision 2021.01.29.01