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