web-dev-qa-db-ja.com

YAMLの文字列には引用符が必要ですか?

私はRailsプロジェクトの国際化のためのYAML辞書を書くことを試みています。ただし、ファイルによっては文字列が二重引用符で囲まれているものと、含まれていないものがあります。考慮すべき点がいくつかあります。

  • 例1 - すべての文字列は二重引用符を使用します。
  • 例2 - 引用符を使わない文字列(最後の2つを除く)。
  • YAMLクックブック は、次のように述べています。二重引用符で文字列を囲むと、ASCIIとUnicode文字これは、一部の文字をエスケープしたい場合にのみ二重引用符を使用する必要があるという意味ですか?もしそうであれば - 最初の例のどこで二重引用符を使用するのですか? - 統一性/文体上の理由からです。
  • 例2の最後の2行では! - 非特定タグを使用していますが、最初の例の最後の2行では使用していません - 両方とも機能します。

私の質問は、YAMLでさまざまな種類の引用符を使用するための規則は何ですか?

それは言うことができます:

  • 一般に、引用符は必要ありません。
  • エスケープしたい場合は二重引用符を使用してください。
  • ...?!?の場合は、!を一重引用符で囲みます。
309
Alex Popov

質問といくつかのテストで引用されたYAMLクックブックの簡単なレビューの後に、ここに私の解釈があります:

  • 一般に、引用符は必要ありません。
  • 引用符を使用して文字列を強制します。キーまたは値が10で、FixnumではなくStringを返したい場合は、'10'または"10"を書きます。
  • お使いの値に特殊文字が含まれている場合は、引用符を使用して、(例えば:{}[],&*#?|-<>=!%@\)。
  • 一重引用符を使用すると、文字列にほとんどすべての文字を入れることができ、エスケープコードを解析することはできません。 '\n'は文字列\nとして返されます。
  • 二重引用符はエスケープコードを解析します。 "\n"は改行文字として返されます。
  • 感嘆符は、方法を紹介します。 Rubyシンボルを返す!Ruby/sym

あなたがしなければならない限り引用符を使用しないこと、そしてあなたが特にエスケープコードを処理したいのでない限り単一引用符を使用することが最善のアプローチであろうと私には思えます。

更新

"はい"と "いいえ"は引用符(一重または二重)で囲む必要があります。そうでないと、TrueClassおよびFalseClassの値として解釈されます。

en:
  yesno:
    'yes': 'Yes'
    'no': 'No'
444
Mark Berry