Ich versuche ein YAML-Wörterbuch für die Internationalisierung eines Rails-Projekts zu schreiben. Ich bin allerdings etwas verwirrt, da ich in einigen Dateien Zeichenfolgen in doppelten Anführungszeichen und in einigen ohne sehe. Einige Punkte zu beachten:
- Beispiel 1 - Alle Zeichenfolgen verwenden doppelte Anführungszeichen.
- Beispiel 2 - Keine Zeichenfolgen (außer den letzten beiden) verwenden Anführungszeichen.
- Im YAML-Kochbuch heißt es: Wenn Sie Zeichenfolgen in doppelte Anführungszeichen setzen, können Sie Escapezeichen verwenden, um ASCII- und Unicode-Zeichen darzustellen. Bedeutet dies, dass ich nur doppelte Anführungszeichen verwenden muss, wenn ich einigen Zeichen entkommen möchte? Wenn ja - warum verwenden sie im ersten Beispiel überall doppelte Anführungszeichen - nur aus Gründen der Einheit / des Stils?
- In den letzten beiden Zeilen von Beispiel 2 wird
!
das unspezifische Tag verwendet, in den letzten beiden Zeilen des ersten Beispiels nicht. Beide funktionieren.
Meine Frage ist: Welche Regeln gelten für die Verwendung der verschiedenen Arten von Anführungszeichen in YAML?
Könnte man sagen, dass:
- Im Allgemeinen benötigen Sie keine Anführungszeichen.
- Wenn Sie Zeichen maskieren möchten, verwenden Sie doppelte Anführungszeichen.
- Verwendung
!
mit einfachen Anführungszeichen, wenn ...?!?
Antworten:
Nach einem kurzen Überblick über das in der Frage zitierte YAML-Kochbuch und einigen Tests ist hier meine Interpretation:
10
, Sie jedoch möchten, dass eine Zeichenfolge und keine Fixnummer zurückgegeben wird, schreiben Sie'10'
oder"10"
.:
,{
,}
,[
,]
,,
,&
,*
,#
,?
,|
,-
,<
,>
,=
,!
,%
,@
,\
).'\n'
würde als Zeichenfolge zurückgegeben werden\n
."\n"
würde als Zeilenvorschubzeichen zurückgegeben.!ruby/sym
um ein Ruby-Symbol zurückzugeben.Mir scheint, der beste Ansatz wäre, keine Anführungszeichen zu verwenden, wenn Sie dies nicht müssen, und dann einfache Anführungszeichen zu verwenden, es sei denn, Sie möchten speziell Escape-Codes verarbeiten.
Aktualisieren
"Ja" und "Nein" sollten in Anführungszeichen (einfach oder doppelt) eingeschlossen werden, da sie sonst als TrueClass- und FalseClass-Werte interpretiert werden:
quelle
@
und `überall in einer einfachen Zeichenfolge verwendet werden, außer am Anfang, da es sich um reservierte Indikatoren handelt .Ich hatte dieses Problem, als ich mit Docker an einer Rails- Anwendung arbeitete .
Mein am meisten bevorzugter Ansatz ist es, im Allgemeinen keine Anführungszeichen zu verwenden. Dies beinhaltet, dass keine Anführungszeichen verwendet werden für:
${RAILS_ENV}
postgres-log:/var/log/postgresql
Ich verwende jedoch doppelte Anführungszeichen für
integer
Werte, die in Zeichenfolgen konvertiert werden müssen, wie:version: "3.8"
"8080:8080"
Jedoch für besondere Fälle wie
booleans
,floats
,integers
und andere Fälle, in denen für die Eingabewerte doppelte Anführungszeichen verwendet , könnten als interpretiert werdenstrings
, bitte seien Sie nicht doppelte Anführungszeichen verwenden.Hier ist eine Beispieldatei
docker-compose.yml
, um dieses Konzept zu erklären:Das ist alles.
ich hoffe das hilft
quelle