web-dev-qa-db-fra.com

Comment échapper aux caractères indicateurs (c'est-à-dire: ou -) dans YAML

Dans un fichier de configuration, j'ai une clé à laquelle je souhaite attribuer une URL. Le problème est que YAML interprète: et - les caractères comme créant des mappages ou des listes, ce qui pose un problème avec la ligne.

url: http://www.example-site.com/

(les deux à cause des deux points qui suivent http et du trait d'union au milieu)

Existe-t-il un moyen explicite d'échapper à ':' et '-'? Ou est-ce que cela fonctionnerait simplement de mettre le tout entre guillemets simples et de l'appeler un jour?

199
danieltahara

Citations:

"url: http://www.example-site.com/"

Pour clarifier, je voulais dire "citer la valeur" et pensais à l’origine que le tout était la valeur. Si http://www.example-site.com/ est la valeur, citez-la simplement ainsi:

url: "http://www.example-site.com/"
192
Ry-

Ce qui fonctionne également et est encore plus pratique pour les textes longs et multilignes, est de mettre votre texte en retrait sur la ligne suivante, après un signe de conduite superposé ou supérieur à:

text: >
    Op dit plein stond het hoofdkantoor van de NIROM: Nederlands Indische 
    Radio Omroep

Un tube conserve les nouvelles lignes, un signe gt transforme toutes les lignes suivantes en une longue chaîne.

159
Micros

Selon la spécification YAML, ni le : ni le - ne devraient poser problème. : n'est qu'un séparateur de clé suivi d'un espace, et - n'est qu'un indicateur de tableau au début d'une ligne suivi d'un espace.

Mais si votre implémentation YAML a un problème, vous avez potentiellement beaucoup d'options:

- url: 'http://www.example-site.com/'
- url: "http://www.example-site.com/"
- url:
    http://www.example-site.com/
- url: >-
    http://www.example-site.com/
- url: |-
    http://www.example-site.com/

Il n’existe cependant aucune forme d’échappement possible dans " style simple ".

38
Steve Bennett

Citations, mais je les préfère sur le juste la valeur:

url: "http://www.example.com/"

En les plaçant sur toute la ligne, cela pourrait poser problème.

30
Gringo Suave

Une autre manière qui fonctionne avec l'analyseur YAML utilisé dans Jekyll:

title: My Life: A Memoir

Les colons non suivis d'espaces ne semblent pas déranger l'analyseur YAML de Jekyll, en revanche. Ni les tirets.

19
ptomato

Si vous utilisez @ConfigurationProperties avec Spring Boot 2 pour injecter des cartes avec des clés contenant des deux-points, vous devez utiliser un niveau supplémentaire d'échappement à l'aide de crochets à l'intérieur des guillemets, car spring n'autorise que les caractères alphanumériques et '-'. du repos. Votre nouvelle clé ressemblerait à ceci:

"[8.11.32.120:8000]": GoogleMapsKeyforThisDomain

Voir this github issue pour référence.

2
Andy Brown

Je suis venu ici pour essayer de faire fonctionner ma tâche Azure DevOps Command Line. La chose qui a fonctionné pour moi utilisait le caractère pipe (|). Utiliser > ne fonctionnait pas.

Exemple:

steps:
- task: CmdLine@2
  inputs:
    script: |
      echo "Selecting Mono version..."
      /bin/bash -c "Sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_18_1"
      echo "Selecting Xcode version..."
      /bin/bash -c "echo '##vso[task.setvariable variable=MD_Apple_SDK_ROOT;]'/Applications/Xcode_10.2.1.app;Sudo xcode-select --switch /Applications/Xcode_10.2.1.app/Contents/Developer"
1