YAML

Un article de Wikipédia, l'encyclopédie libre.

YAML, acronyme récursif de YAML Ain't Markup language, est un langage de sérialisation de données qui reprend des concepts d'autres langages comme XML, C, Python, et Perl, ou encore du format de message électronique tel que documenté par RFC 2822. YAML a été proposé par Clark Evans et implémenté par ses soins ainsi que par Brian Ingerson et Oren Ben-Kiki.

Sommaire

[modifier] Caractéristiques

L'idée de fond de YAML est que toute donnée peut être représentée par une combinaison de listes, tableaux (de hachage) et données scalaires. La syntaxe de YAML est relativement simple et efficace, et a été établie de sorte à ce qu'elle soit la plus lisible possible par des humains, tout en pouvant être mise en correspondance facile avec les types de données précités, communs dans les langages de haut niveau. À ces langages il emprunte certaines notations.

  • les commentaires sont signalés par le signe dièse (#) et se prolongent sur toute la ligne
  • les items de listes sont dénotés par le tiret (-), à raison d'un item par ligne, ou bien sont séparés par des virgules et encadrés de crochets ([ & ])
  • les tableaux sont de la forme clé: valeur, soit à raison d'un couple par ligne, soit séparés par des virgules et encadrés d'accolades ({ & })
  • les scalaires peuvent être entourés de guillemets doubles ("), ou simples ('), ou encore être représentés par un bloc indenté avec des modificateurs facultatifs pour conserver (|) ou éliminer (>) les retours à la ligne.
  • plusieurs documents rassemblés dans un seul fichier sont séparés par trois traits d'union (---); trois points (...) optionnels marquent la fin d'un document dans un fichier.
  • les nœuds répétés sont initialement signalés par une esperluette (&) puis sont référencés avec un astérisque (*)

JSON, un langage concurrent de YAML, est compatible avec la syntaxe de Javascript mais ne supporte pas cette notion de référence.

[modifier] Exemples

[modifier] Listes

--- # Films préférés, format bloc
- Casablanca
- Bourgogne Casablanca
- La Règle du jeu
- Titanic
--- # Listes de courses, format linéaire
[lait, pain, œufs]

[modifier] Tableaux

--- # bloc
nom: Paul Dupond
age: 33
--- # linéaire
{nom: Paul Dupond, age: 33}

[modifier] Blocs de mise en forme

[modifier] Nouvelles lignes conservées

--- |
  There was a young fellow of Warwick
  Who had reason for feeling euphoric
      For he could, by election
      Have triune erection
  Ionic, Corinthian, and Doric

[modifier] Nouvelles lignes rassemblées

--- >
  Le texte ainsi
  séparé sera ensuite
  rassemblé sur
  une seule ligne
  
  Une ligne vide
  signale un nouveau
  paragraphe

[modifier] Listes de tableaux

- {name: Paul Dupond, age: 33}
-
  name: Marie Dupont
  age: 27

[modifier] Tableaux de listes

homme: [Paul Dupond, Pierre Dubois]
femme:
  - Marie Dupont
  - Susanne Didier

[modifier] Implémentations

Des bibliothèques pour YAML existent pour les langages suivants :

[modifier] Voir ailleurs