Я пытаюсь написать словарь YAML для интернационализации проекта Rails. Я немного растерялся, хотя в некоторых файлах я вижу строки в двойных кавычках, а в некоторых - без. Несколько моментов для рассмотрения:
- пример 1 - все строки используют двойные кавычки;
- пример 2 - без строк (кроме двух последних) используются кавычки;
- поваренная YAML говорит: Вшита строка в двойных кавычках позволяет использовать escapings для представления ASCII и Unicode символов. Означает ли это, что мне нужно использовать двойные кавычки только тогда, когда я хочу экранировать некоторые символы? Если да - почему они используют двойные кавычки везде в первом примере - только ради единства / стилистических соображений?
- последние две строки примера 2 используют
!
- неспецифический тег, тогда как последние две строки первого примера - нет, и они обе работают.
Мой вопрос: каковы правила использования различных типов цитат в YAML?
Можно ли сказать, что:
- в общем, вам не нужны кавычки;
- если вы хотите экранировать символы, используйте двойные кавычки;
- использовать
!
с одинарными кавычками, когда ...?!?
Ответы:
После краткого обзора поваренной книги YAML, процитированной в этом вопросе, и некоторого тестирования, вот моя интерпретация:
10
но вы хотите, чтобы оно возвращало String, а не Fixnum, write'10'
или"10"
.:
,{
,}
,[
,]
,,
,&
,*
,#
,?
,|
,-
,<
,>
,=
,!
,%
,@
,\
).'\n'
будет возвращен как строка\n
."\n"
будет возвращен как символ перевода строки.!ruby/sym
для возврата символа Ruby.Мне кажется, что лучшим подходом было бы не использовать кавычки без необходимости, а затем использовать одинарные кавычки, если вы специально не хотите обрабатывать escape-коды.
Обновить
«Да» и «Нет» должны быть заключены в кавычки (одинарные или двойные), иначе они будут интерпретироваться как значения TrueClass и FalseClass:
источник
@
и `можно использовать где угодно в простой строке, кроме как в начале, потому что они являются зарезервированными индикаторами .У меня была эта проблема при работе над приложением Rails с Docker .
Мой самый предпочтительный подход - вообще не использовать кавычки. Это включает в себя не использовать кавычки для:
${RAILS_ENV}
postgres-log:/var/log/postgresql
Я, однако, использую двойные кавычки для
integer
значений, которые должны быть преобразованы в строки вроде:version: "3.8"
"8080:8080"
Однако, для особых случаев , как
booleans
,floats
,integers
, и другие случаи, когда с помощью двойных кавычек для значений входа могут быть истолкованы какstrings
, пожалуйста , не используйте двойные кавычки.Вот пример
docker-compose.yml
файла, чтобы объяснить эту концепцию:Это все.
надеюсь, это поможет
источник