learnxinyminutes-docs/fr/yaml.md

160 lines
5.5 KiB
Markdown
Raw Normal View History

2014-10-26 16:07:25 +00:00
---
2017-08-25 08:00:34 +00:00
filename: learnyaml-fr.yaml
2014-10-26 16:07:25 +00:00
contributors:
- ["Andrei Curelaru", "http://www.infinidad.fr"]
---
Proposé à l'origine par Clark Evans en Mai 2001, YAML est un un format de
représentation de données par sérialisation, conçu pour être aisément
2015-10-08 14:48:50 +00:00
modifiable et lisible par nous-mêmes, les humains.
2014-10-26 16:07:25 +00:00
2015-10-08 14:48:50 +00:00
YAML est plus concis que le XML auquel il est parfois comparé par ceux qui le
découvre, plus lisible et clair que le CSV, et emprunte beaucoup au JSON dont
il est un parent naturel. Toutefois, YAML emprunte également des idées et
concepts de Python, et s'intègre bien avec bon nombre de langages.
Contrairement à ce dernier, YAML interdit l'utilisation des tabulations.
2014-10-26 16:07:25 +00:00
```yaml
2015-10-08 14:48:50 +00:00
# Les commentaires sont précédés d'un signe "#", comme cette ligne.
2014-10-26 16:07:25 +00:00
#############
# SCALAIRES #
#############
2015-10-08 14:48:50 +00:00
# Les scalaires sont l'ensemble des types YAML qui ne sont pas des collections
# (listes ou tableaux associatifs).
2014-10-26 16:07:25 +00:00
2015-10-08 14:48:50 +00:00
# Notre objet root (racine), sera une map (carte) et englobera
# l'intégralité du document. Cette map est l'équivalent d'un dictionnaire,
2014-10-26 16:07:25 +00:00
# hash ou objet dans d'autres langages.
clé: valeur
2015-10-08 14:48:50 +00:00
autre_clé: une autre valeur
2014-10-26 16:07:25 +00:00
valeur_numérique: 100
notation_scientifique: 1e+12
2015-10-08 14:48:50 +00:00
booléen: true
2014-10-26 16:07:25 +00:00
valeur_null: null
une_autre_valeur_null: ~
2014-10-26 16:07:25 +00:00
clé avec espaces: valeur
2015-10-08 14:48:50 +00:00
# Bien qu'il ne soit pas nécessaire de mettre les chaînes de caractères
2014-10-26 16:07:25 +00:00
# entre guillemets, cela reste possible, et parfois utile.
toutefois: "Une chaîne, peut être contenue entre guillemets."
2015-10-08 14:48:50 +00:00
"Une clé entre guillemets.": "Utile si l'on veut utiliser ':' dans la clé."
2014-10-26 16:07:25 +00:00
2015-10-08 14:48:50 +00:00
# Les chaînes couvrant plusieurs lignes, peuvent être écrites au choix,
# comme un "bloc littéral" (avec '|') ou bien un "bloc replié" (avec '>').
2014-10-26 16:07:25 +00:00
bloc_littéral: |
2015-10-08 14:48:50 +00:00
Tout ce bloc de texte sera la valeur de la clé "bloc_littéral",
avec préservation des retours à la ligne.
2014-10-26 16:07:25 +00:00
Le littéral continue jusqu'à ce que l'indentation soit annulée.
2015-10-08 14:48:50 +00:00
Toutes lignes qui seraient "davantage indentées" conservent leur
2014-10-26 16:16:25 +00:00
indentation, constituée de 4 espaces.
2014-10-26 16:07:25 +00:00
bloc_replié: >
2015-10-08 14:48:50 +00:00
Tout ce bloc de texte sera la valeur de la clé "bloc_replié", mais
cette fois-ci, toutes les nouvelles lignes deviendront un simple espace.
2014-10-26 16:07:25 +00:00
2015-10-08 14:48:50 +00:00
Les lignes vides, comme ci-dessus, seront converties en caractère de
nouvelle ligne.
2014-10-26 16:07:25 +00:00
2015-10-08 14:48:50 +00:00
Les lignes "plus-indentées" gardent leurs retours à la ligne -
2014-10-26 16:07:25 +00:00
ce texte apparaîtra sur deux lignes.
###############
# COLLECTIONS #
###############
2015-10-08 14:48:50 +00:00
# L'imbrication est créée par indentation.
2014-10-26 16:07:25 +00:00
une_map_imbriquée:
clé: valeur
autre_clé: autre valeur
autre_map_imbriquée:
bonjour: bonjour
2015-10-08 14:48:50 +00:00
# Les clés des maps ne sont pas nécessairement des chaînes de caractères.
0.25: une clé de type flottant
2014-10-26 16:07:25 +00:00
2015-10-08 14:48:50 +00:00
# Les clés peuvent également être des objets s'étendant sur plusieurs lignes,
2014-10-26 16:07:25 +00:00
# en utilisant le signe "?" pour indiquer le début de la clé.
? |
2015-10-08 14:48:50 +00:00
ceci est une clé
2014-10-26 16:07:25 +00:00
sur de multiples lignes
2015-10-08 14:48:50 +00:00
: et ceci est sa valeur
2014-10-26 16:07:25 +00:00
# YAML autorise aussi l'usage des collections à l'intérieur des clés,
# mais certains langages de programmation ne le tolère pas si bien.
2015-10-08 14:48:50 +00:00
# Les séquences (équivalent des listes ou tableaux) ressemblent à cela :
2014-10-26 16:07:25 +00:00
une_séquence:
2015-10-08 14:48:50 +00:00
- Objet 1
- Objet 2
2014-10-26 16:07:25 +00:00
- 0.5 # les séquences peuvent contenir des types variés.
2015-10-08 14:48:50 +00:00
- Objet 4
2014-10-26 16:07:25 +00:00
- clé: valeur
autre_clé: autre_valeur
-
- Ceci est une séquence
- dans une autre séquence
2015-10-08 14:48:50 +00:00
# YAML étant un proche parent de JSON, vous pouvez écrire directement
2014-10-26 16:07:25 +00:00
# des maps et séquences façon JSON
json_map: {"clé": "valeur"}
json_seq: [1, 2, 3, "soleil"]
2015-10-08 14:48:50 +00:00
################################
2014-11-12 22:59:32 +00:00
# AUTRES FONCTIONNALITÉES YAML #
2015-10-08 14:48:50 +00:00
################################
2014-10-26 16:07:25 +00:00
2015-10-08 14:48:50 +00:00
# YAML possède une fonctionnalité fort utile nommée "ancres". Celle-ci
2014-10-26 16:07:25 +00:00
# vous permet de dupliquer aisément du contenu au sein de votre document.
2015-10-08 14:48:50 +00:00
# Les deux clés suivantes auront la même valeur :
2014-10-26 16:07:25 +00:00
contenu_ancré: &nom_ancre Cette chaîne sera la valeur des deux clés.
autre_ancre: *nom_ancre
2015-10-08 14:48:50 +00:00
# Avec les tags YAML, vous pouvez explicitement déclarer des types de données.
2014-10-26 16:07:25 +00:00
chaine_explicite: !!str 0.5
2015-10-08 14:48:50 +00:00
# Certains analyseurs syntaxiques (parsers) implémentent des tags spécifiques à
# d'autres langages, comme par exemple celui des nombres complexes de Python.
2014-10-26 16:07:25 +00:00
python_complex_number: !!python/complex 1+2j
#####################
# AUTRES TYPES YAML #
#####################
2014-11-12 22:59:32 +00:00
# YAML interprète également les données formatées ISO de type date et datetime,
2015-10-08 14:48:50 +00:00
# pas seulement les chaînes et nombres.
2014-10-26 16:07:25 +00:00
datetime: 2001-12-15T02:59:43.1Z
datetime_avec_espaces: 2001-12-14 21:59:43.10 -5
date: 2002-12-14
# Le tag !!binary indique que la chaîne à suivre est la représentation binaire
2014-11-12 22:59:32 +00:00
# d'un blob encodé en base64. En clair ? Une image !
2014-10-26 16:07:25 +00:00
fichier_gif: !!binary |
R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5
OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+
+f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC
AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=
2015-10-08 14:48:50 +00:00
# YAML a de même un type "set", semblable à ceci :
2014-10-26 16:07:25 +00:00
set:
? item1
? item2
? item3
2014-11-12 22:59:32 +00:00
# Comme dans Python, les sets ne sont que des maps contenant des valeurs null ;
2015-10-08 14:48:50 +00:00
# le set précédent est l'équivalent du suivant :
2014-10-26 16:07:25 +00:00
set2:
item1: null
item2: null
item3: null
```
2014-10-26 16:16:25 +00:00
Quelques références et outils :
2014-10-26 16:07:25 +00:00
2015-10-08 14:48:50 +00:00
- Documentation officielle [YAML 1.2](http://www.yaml.org/spec/1.2/spec.html) *anglais*,
2014-10-26 16:16:25 +00:00
- Une [Introduction à YAML](http://sweetohm.net/html/introduction-yaml.html) très bien construite et claire,
2015-10-08 14:48:50 +00:00
- Un outil pour tester [en ligne](http://yaml-online-parser.appspot.com/) la syntaxe YAML, avec des exemples.