2017-05-27 10 views
2

単一のn文字はYAMLで特別な意味を持ちますか?私の崇高な3つのテキストエディタは他の文字列の値とは異なる色で強調表示されているため、私は本当にそれの理由を理解していないので私は尋ねています。YAMLの 'n'文字に特別な意味がありますか?

enter image description here

+1

それはブール値を書き込むための方法の一つだ:偽、いいえ、オフ、はい、で、Y、真、N。それを文字列として望むなら、それを引用する必要があります。 – jasonharper

答えて

1

TL; DR。そのnは、ブール値 "False"のYAMLでの2009年以前の正規表現です。

全く場合は、明示的インタフェースを介して、YAML 1.1のファイルを編集することが指定されていれば、それだけでそのnを強調すべき崇高は、nとして、デフォルトでは2009年以来、YAMLで、このような表現を持っていないことを強調するべきではありません文書の上部にある指示文%YAML 1.1を使用して文書がそのように認識された場合。 YAMLで


スカラーは異なるフォーマット(from the YAML 1.2 specification)を有することができる:

をYAMLはスカラーはいくつかの形式で提示することが可能になります。例えば、整数「11」は「0xB」と書くこともできる。タグは、等価性テストで使用するために、フォーマットされたコンテンツを標準形式に変換するためのメカニズムを指定する必要があります。ノードスタイルと同様に、フォーマットはプレゼンテーションの詳細であり、シリアライゼーションツリーや表現グラフには反映されません。

古い1.1仕様では、その段落で異なる第二の文を持っている、directly mentions booleansこと:

例えば、「真」ブールも「はい」と書き込まれることがあります。

プログラミング言語でYAMLスカラーがどのように構築されるかは、パーサーが使用するスキーマによって異なります。最も基本的なスキーマは、すべてのスカラーを文字列(すなわち、解釈なし)として構築する。

より実用的なスキーマでは、標準形式(通常、整数、ブール値、日付時刻スタンプなどのコンピュータプログラミング型を表すときに使用される)と一致するスカラー(通常は正規表現を介して)そのようなタイプの構築。たとえば、42は標準的な表現ですが、入力側では同じ整数値に対しては0x2a0o52も許可されています。 YAML 1.2で

true

core schemasTrueTRUEfalseFalseFALSE —拡張のみtruefalseを可能にする単純なJSONスキーマに一致しながら、ブール値が正則形式truefalseに消毒されたため。

。これは、広範囲yYyesYesYESnNnoNoNOtrueTrueTRUEfalseFalseの全てに合致しながら、正規表現はynfrom YAML 1.1を変更しましたFALSE,on,On,ON,off,Off,OFF。プログラム内の一致する文字列が負荷にブール値として解釈されないようにするために、明示的な引用符でYAMLで表現されなければならなかったので、これは多くの場合、混乱につながりました。

サブライムは、ブール値がnのように書くことができYAML 1.1仕様をサポートしているようです。 YAML 1.2仕様は2009年からなので、私は本当にないこと崇高は、そうすることで正しいこと、およびYAML文書は、明示的な指示%YAML 1.1で始まっていない限り、ブール値としてnを解釈するべきではありません。 (あなたがインターフェースにそれを示していないので、ドキュメントにはないので、私はあなたが持っているとは思わない)。

はもちろん崇高のオリジナルリリースはYAML 1.2仕様を先行していますが、8年後、彼らは更新することによって、これを修正しているだろうことを望んでいるだろう。別のそのような変更は、YAML 1.2の文字列ですが、YAML 1.1(8進数)の整数だった0123のような0で始まるスカラー、です。 YAMLモードが正しく更新されているかどうかを確認するためにテストとして使用するかもしれません:0123は、明示的にYAML 1.1を指定しない限り、エディタで強調表示しないでください。

もちろん、YAML 1.1のみをサポートする旧式のライブラリもありますが、それを使用することさえあるかもしれませんが、デフォルトのがエディタにあるという言い訳はありません。

+0

あなたの答えは上です。速いテストを行い、スカラー 'yes'、' off'、 '0123'はすべて文字列スカラーとは異なる色で強調表示されます。 SublimeはYAML 1.1のハイライトを立てているようです。 – Xukrao

+1

@Xukrao私は(https://www.sublimetext.com/docs/3/syntax.html)来サブライム(私は80年代半ば以来のEmacsユーザーとなっている)、その[独自の構文の強調表示の設定ファイル]にビットを見て'%YAML 1.2'ディレクティブで置き換えます。誰かがYAML 1.1とYAML 1.2との間の本当の違いを見逃したように見える – Anthon

関連する問題