Czy potrzebuję cudzysłowów dla ciągów w Yaml?

Próbuję napisać słownik YAML dla internacjonalizacji projektu Rails. Jestem trochę zdezorientowany, ponieważ w niektórych plikach widzę ciągi w podwójnych cudzysłowach, a w niektórych bez. Kilka punktów do rozważenia:

  • przykład 1 - wszystkie łańcuchy znaków używają podwójnych cudzysłowów;
  • przykład 2 - żadne łańcuchy (poza dwoma ostatnimi) nie używają cudzysłowów;
  • the YAML cookbook says: zamykanie łańcuchów w podwójnych cudzysłowach pozwala na użycie escapingów do reprezentowania Znaki ASCII i Unicode. czy to oznacza, że muszę używać podwójnych cudzysłowów tylko wtedy, gdy chcę uciec od niektórych znaków? Jeśli tak-to dlaczego w pierwszym przykładzie wszędzie używają podwójnych cudzysłowów-tylko ze względu na jedność / powody stylistyczne?
  • dwie ostatnie linie przykładu 2 używają ! - niespecyficznego znacznika, podczas gdy dwie ostatnie linie pierwszego przykładu nie-i obie działają.

Moje pytanie brzmi - Jakie są zasady korzystania z różnych typów cytatów w YAML. Można powiedzieć, że:

  • ogólnie rzecz biorąc, nie potrzebujesz cudzysłowów;
  • jeśli chcesz uniknąć znaków użyj podwójnych cudzysłowów;
  • użyj ! z pojedynczymi cudzysłowami, gdy... ?!?
Dziękuję.
Author: Alex Popov, 2013-10-01

1 answers

Po krótkim przeglądzie cytowanej w pytaniu książki kucharskiej YAML i kilku testach, oto moja interpretacja:]}

  • ogólnie rzecz biorąc, nie potrzebujesz cudzysłowów.
  • użyj cudzysłowów, aby wymusić łańcuch, np. jeśli twoim kluczem lub wartością jest 10, ale chcesz, aby zwrócił łańcuch, a nie Fixnum, napisz '10' lub "10".
  • użyj cudzysłowów, jeśli wartość zawiera znaki specjalne, (np. :, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @, \).
  • pojedyncze cudzysłowy pozwalają umieścić prawie każdy znak w łańcuchu i nie będą próbowały analizować kodów ucieczki. '\n' zostanie zwrócony jako łańcuch \n.
  • double quotes parse Escape codes. "\n" zostanie zwrócony jako znak kanału linii.
  • wykrzyknik wprowadza metodę, np. !ruby/sym zwracającą symbol Ruby.

Wydaje mi się, że najlepszym podejściem byłoby nie używać cudzysłowów, chyba że trzeba, a następnie używać pojedynczych cudzysłowów, chyba że chcesz przetwarzać kody specjalne.

Update

W przeciwnym razie zostaną one zinterpretowane jako wartości TrueClass i FalseClass:

"Yes" I "No" powinny być zawarte w cudzysłowach (pojedyncze lub podwójne).]}

en:
  yesno:
    'yes': 'Yes'
    'no': 'No'
 365
Author: Mark Berry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-10 17:56:18