Dans YAML, j'ai une chaîne de caractères qui est très longue. Je veux la conserver dans la vue de 80 colonnes (environ) de mon éditeur, et j’aimerais donc casser la chaîne. Quelle est la syntaxe pour cela ?
En d'autres termes, j'ai ceci :
Key: 'this is my very very very very very very long string'
et j'aimerais avoir ceci (ou quelque chose de ce genre) :
Key: 'this is my very very very ' +
'long string'
J'aimerais utiliser les guillemets comme ci-dessus, de manière à ne pas avoir besoin d'échapper quoi que ce soit dans la chaîne.
Il existe 5 6 NINE (ou 63*, selon la façon dont on compte) différentes façons d'écrire des chaînes de caractères multi-lignes dans YAML.
Habituellement, vous voulez >
:
clé : >
Votre longue
chaîne de caractères ici.
Si vous voulez que les sauts de ligne soient préservés sous forme de n
dans la chaîne (par exemple, markdown intégré avec des paragraphes), utilisez |
.
clé : |
### Titre
* Bullet
* Points
Utilisez plutôt >-
ou |-
si vous ne voulez pas qu'un saut de ligne soit ajouté à la fin.
Si vous devez couper des lignes au milieu d'un mot ou si vous tapez littéralement des sauts de ligne comme \n
, utilisez plutôt des guillemets doubles :
clé : "Antidisestabétique.
lishmentarianism.\n\nGet on it."
YAML est fou.
>
, |
)Ces styles autorisent les caractères tels que \
et "
sans les échapper, et ajoutent une nouvelle ligne (\n
) à la fin de votre chaîne.
>
Style plié supprime les nouvelles lignes simples dans la chaîne (mais en ajoute une à la fin, et convertit les doubles lignes en simples) :
Key: >
this is my very very very
long string
→ c'est ma très très très longue chaîne de caractères\n
|
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
→ C'est ma très très très\nlongue chaîne de caractères\n
Voici la définition officielle de la [YAML Spec 1.2] (http://www.yaml.org/spec/1.2/spec.html#id2760844)
Les contenus scalaires peuvent être écrits en notation de bloc, en utilisant un style littéral (indiqué par "|") où tous les sauts de ligne sont significatifs. Il peut également être écrit avec le style plié (indiqué par ">") où chaque retour à la ligne est replié sur un espace sauf s'il termine une ligne vide ou plus indentée.
>-
, |-
, >+
, |+
)Vous pouvez contrôler le traitement de la dernière nouvelle ligne de la chaîne et de toute ligne vide de fin (\n\n
) en ajoutant un caractère indicateur de fragmentation de bloc :
>
, |
: "clip" : conserve le saut de ligne, supprime les lignes vides de fin de ligne.>-
, |-
: "strip" : supprime le saut de ligne, supprime les lignes vides de fin de ligne.>+
, |+
: "keep" : conserve le saut de ligne, conserve les lignes vides de fin de ligne.`,
",
'`)Ils ont un échappement limité, et construisent une chaîne de caractères d'une seule ligne sans caractères de nouvelle ligne. Ils peuvent commencer sur la même ligne que la clé, ou avec des nouvelles lignes supplémentaires en premier.
plain style (pas d'échappement, pas de combinaisons #
ou :
, limites sur le premier caractère) :
Key: this is my very very very
long string
style à double guillemet (les caractères \
et "
doivent être échappés par \
, les sauts de ligne peuvent être insérés avec une séquence littérale \n
, les lignes peuvent être concaténées sans espace avec \
de fin) :
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
&rarr ; "Ceci est ma très très \"très\" longue chaîne.\n\nLove, YAML."
style guillemets simples (le littéral '
doit être doublé, pas de caractères spéciaux, éventuellement utile pour exprimer des chaînes de caractères commençant par des guillemets doubles) :
Key: 'this is my very very "very"
long string, isn''t it.'
&rarr ; C'est ma très très longue chaîne de caractères, n'est-ce pas?
Dans ce tableau, _
signifie caractère d'espace
. n` signifie `caractère de nouvelle ligne
(n
en JavaScript), sauf pour la ligne nouvelles 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 |
Notez les espaces de queue sur la ligne précédant "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
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."
]
Au cas où ce qui précède ne vous suffirait pas, vous pouvez ajouter un "indicateur d'indentation des blocs" (après votre indicateur d'indentation des blocs, si vous en avez un) :
- >8
My long string
starts over here
- |+1
This one
starts here
Si vous insérez des espaces supplémentaires au début des lignes qui ne sont pas les premières dans le style plié, ils seront conservés, avec une nouvelle ligne supplémentaire. 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 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] (http://yaml-multiline.info/).
En utilisant le style plié de yaml, chaque saut de ligne est remplacé par un espace. L'indentation dans chaque ligne sera ignorée. Un saut de ligne sera inséré à la fin.
Key: >
This is a very long sentence
that spans several lines in the YAML
but which will be rendered as a string
with only a single carriage return appended to the end.
http://symfony.com/doc/current/components/yaml/yaml_format.html
Vous pouvez utiliser l'indicateur "block chomping" pour éliminer le retour à la ligne, comme suit :
Key: >-
This is a very long sentence
that spans several lines in the YAML
but which will be rendered as a string
with NO carriage returns.
D'autres outils de contrôle sont également disponibles (pour contrôler l'indentation par exemple).
Pour préserver les nouvelles, utilisez |
, par exemple :
|
This is a very long sentence
that spans several lines in the YAML
but which will be rendered as a string
with newlines preserved.
se traduit par "C'est une très longue phrase\n qui s'étend sur plusieurs lignes dans le YAML\n mais qui sera rendue sous forme de chaîne\n avec les nouvelles lignes préservées.\n"