Нужны ли мне кавычки для строк в Yaml?
Я пытаюсь написать словарь YAML для интернационализации проекта Rails. Я немного смущен, хотя, как и в некоторых файлах, я вижу строки в двойных кавычках, а в некоторых без них. Несколько моментов, чтобы рассмотреть:
- Пример 1 - все строки используются двойные кавычки;
- Пример 2 - никакие строки (кроме последних двух) не используют кавычки;
- the и YAML поваренной говорит: заключая строки в двойном кавычки позволяет использовать экранирование для представления символов ASCII и Unicode. означает ли это, что мне нужно использовать двойные кавычки только тогда, когда я хочу избежать некоторых символов? Если да-почему они везде используют двойные кавычки в первом примере-только ради единства / стилистических причин?
- последние две строки примера 2 используют
!
- неспецифический тег, в то время как последние две строки первого примера не делают - и они оба работают.
мой вопрос - каковы правила использования различных типов котировок в YAML. Можно ли сказать, что:
- В общем, вам не нужны цитаты;
- если вы хотите экранировать символы, используйте двойные кавычки;
- использовать
!
с одинарными кавычками, когда... ?!?
спасибо.
1 ответ:
после краткого обзора поваренной книги YAML, приведенной в вопросе, и некоторых тестов, вот моя интерпретация:
- В общем, вам не нужны цитаты.
- используйте кавычки, чтобы заставить строку, например, если ваш ключ или значение
10
но вы хотите, чтобы он возвращал строку, а не Fixnum, напишите'10'
или"10"
.- цитаты использовать, если значение содержит специальные символы (например,
:
,{
,}
,[
,]
,,
,&
,*
,#
,?
,|
,-
,<
,>
,=
,!
,%
,@
,\
).- одинарные кавычки позволяют поместить почти любой символ в строку, и не будет пытаться разобрать escape-коды.
'\n'
будет возвращена в виде строки\n
.- двойные кавычки разбирают escape-коды.
"\n"
будет возвращен как символ подачи строки.- восклицательный знак вводит метод, например,
!ruby/sym
для возврата Рубиновый символ.мне кажется, что лучшим подходом было бы не использовать кавычки, если вам не нужно, а затем использовать одиночные кавычки, если вы специально не хотите обрабатывать escape-коды.
обновление
"да "и" нет " должны быть заключены в кавычки (одинарные или двойные), иначе они будут интерпретироваться как значения TrueClass и FalseClass:
en: yesno: 'yes': 'Yes' 'no': 'No'