Il y a 5 6 NEUF (ou 63 *, selon la façon dont vous comptez) différentes façons d'écrire des chaînes multilignes en YAML.
TL; DR
En général, vous voulez >
:
key: >
Your long
string here.
Si vous souhaitez que les sauts de ligne soient conservés comme \n
dans la chaîne (par exemple, démarque intégrée avec des paragraphes), utilisez |
.
key: |
### Heading
* Bullet
* Points
Utilisez >-
ou à la |-
place si vous ne souhaitez pas ajouter de saut de ligne à la fin.
Si vous devez fractionner des lignes au milieu des mots ou taper littéralement des sauts de ligne comme \n
, utilisez plutôt des guillemets:
key: "Antidisestab\
lishmentarianism.\n\nGet on it."
YAML est fou.
Bloquer les styles scalaires ( >
, |
)
Ceux-ci autorisent les caractères tels que \
et "
sans s'échapper, et ajoutent une nouvelle ligne ( \n
) à la fin de votre chaîne.
>
Le style plié supprime les sauts de ligne simples dans la chaîne (mais en ajoute un à la fin et convertit les doubles sauts de ligne en simples):
Key: >
this is my very very very
long string
→ this is my very very very long string\n
|
Le style littéral transforme chaque nouvelle ligne de la chaîne en une nouvelle ligne littérale et en ajoute une à la fin:
Key: |
this is my very very very
long string
→ this is my very very very\nlong string\n
Voici la définition officielle de la spécification YAML 1.2
Le contenu scalaire peut être écrit en notation bloc, en utilisant un style littéral (indiqué par «|») où tous les sauts de ligne sont significatifs. Alternativement, ils peuvent être écrits avec le style plié (désigné par «>») où chaque saut de ligne est plié en un espace à moins qu'il ne termine une ligne vide ou plus en retrait.
Styles de bloc avec bloc indicateur chomping ( >-
, |-
, >+
, |+
)
Vous pouvez contrôler le traitement de la nouvelle ligne finale de la chaîne et de toutes les lignes vides de fin ( \n\n
) en ajoutant un caractère indicateur de hachage de bloc :
>
, |
: "clip": conservez le saut de ligne, supprimez les lignes vierges de fin.
>-
, |-
: "strip": supprimez le saut de ligne, supprimez les lignes vierges de fin.
>+
, |+
: "garder": garder le saut de ligne, garder les lignes vides à la fin.
Styles scalaires "Flow" (
, "
, '
)
Ceux-ci ont un échappement limité et construisent une chaîne d'une seule ligne sans nouveaux caractères de ligne. Ils peuvent commencer sur la même ligne que la clé, ou avec des retours à la ligne supplémentaires en premier.
style simple (pas d'échappement, non#
ou:
combinaisons, limites sur le premier caractère):
Key: this is my very very very
long string
style entre guillemets (\
et"
doit être échappé par\
, les sauts de ligne peuvent être insérés avec une\n
séquencelittérale, les lignes peuvent être concaténées sans espaces avec des espaces\
):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ "this is my very very \"very\" loooong string.\n\nLove, YAML."
style guillemet simple (le littéral'
doit être doublé, pas de caractères spéciaux, peut-être utile pour exprimer des chaînes commençant par des guillemets doubles):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "this is my very very \"very\" long string, isn't it."
Sommaire
Dans ce tableau, _
signifie space character
. \n
signifie "caractère de nouvelle ligne" ( \n
en JavaScript), à l'exception de la ligne "nouvelles lignes en ligne", où il signifie littéralement une barre oblique inverse et un n).
> | " ' >- >+ |- |+
-------------------------|------|-----|-----|-----|------|------|------|------
Trailing spaces | Kept | Kept | | | | Kept | Kept | Kept | Kept
Single newline => | _ | \n | _ | _ | _ | _ | _ | \n | \n
Double newline => | \n | \n\n | \n | \n | \n | \n | \n | \n\n | \n\n
Final newline => | \n | \n | | | | | \n | | \n
Final dbl nl's => | | | | | | | Kept | | Kept
In-line newlines | No | No | No | \n | No | No | No | No | No
Spaceless newlines| No | No | No | \ | No | No | No | No | No
Single quote | ' | ' | ' | ' | '' | ' | ' | ' | '
Double quote | " | " | " | \" | " | " | " | " | "
Backslash | \ | \ | \ | \\ | \ | \ | \ | \ | \
" #", ": " | Ok | Ok | No | Ok | Ok | Ok | Ok | Ok | Ok
Can start on same | No | No | Yes | Yes | Yes | No | No | No | No
line as key |
Exemples
Notez les espaces de fin sur la ligne avant «espaces».
- >
very "long"
'string' with
paragraph gap, \n and
spaces.
- |
very "long"
'string' with
paragraph gap, \n and
spaces.
- very "long"
'string' with
paragraph gap, \n and
spaces.
- "very \"long\"
'string' with
paragraph gap, \n and
s\
p\
a\
c\
e\
s."
- 'very "long"
''string'' with
paragraph gap, \n and
spaces.'
- >-
very "long"
'string' with
paragraph gap, \n and
spaces.
[
"very \"long\" 'string' with\nparagraph gap, \\n and spaces.\n",
"very \"long\"\n'string' with\n\nparagraph gap, \\n and \nspaces.\n",
"very \"long\" 'string' with\nparagraph gap, \\n and spaces.",
"very \"long\" 'string' with\nparagraph gap, \n and spaces.",
"very \"long\" 'string' with\nparagraph gap, \\n and spaces.",
"very \"long\" 'string' with\nparagraph gap, \\n and spaces."
]
Styles de bloc avec indicateurs d'indentation
Juste au cas où ce qui précède ne vous suffit pas, vous pouvez ajouter un " indicateur d'indentation de bloc " (après votre indicateur de blocage de bloc, si vous en avez un):
- >8
My long string
starts over here
- |+1
This one
starts here
Addenda
Si vous insérez des espaces supplémentaires au début des lignes qui ne sont pas les premières dans le style Plié, elles seront conservées, avec une nouvelle ligne bonus. Cela ne se produit pas avec les styles de flux:
- >
my long
string
- my long
string
→ ["my long\n string\n", "my long string"]
Je ne peux même pas.
*
2 styles de bloc, chacun avec 2 indicateurs de compression de bloc possibles (ou aucun), et avec 9 indicateurs d'indentation possibles (ou aucun), 1 style simple et 2 styles cités: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63
Certaines de ces informations ont également été résumées ici .