YAML-構文プリミティブ

この章では、YAMLの構文プリミティブの次の側面について学習します。

  • 生産パラメータ
  • インデントスペース
  • 分離スペース
  • 無視される行プレフィックス
  • ラインフォールディング

それぞれの側面を詳しく理解しましょう。

生産パラメータ

プロダクションパラメータには、特定のプロダクションで使用されるパラメータのセットと許可される値の範囲が含まれます。次の本番パラメータのリストはYAMLで使用されます-

インデント

文字で表されます n または m文字ストリームは、それに含まれるブロックのインデントレベルによって異なります。多くのプロダクションがこれらの機能をパラメータ化しています。

環境

それはによって示されます c。YAMLは、次の2つのコンテキストグループをサポートします。block styles そして flow styles

スタイル

sで表されます。スカラーコンテンツは、次の5つのスタイルのいずれかで表示できます。plain, double quoted and single quoted flow, literal and folded block.

チョッピング

それはによって示されます t。ブロックスカラーは、ブロックのトリミングに役立つ多くのメカニズムを提供します。strip, clip そして keep。チョッピングは、改行文字列のフォーマットに役立ちます。ブロックスタイル表現を使用します。チョッピングプロセスは、インジケーターの助けを借りて行われます。インジケーターは、文字列の改行を使用して生成する出力を制御します。改行はで削除されます(-) 演算子と改行は次のように追加されます (+) オペレーター。

チョッピングプロセスの例を以下に示します-

strip: |-
   text↓
clip: |
   text↓
keep: |+
   text↓

指定されたYAMLの例を解析した後の出力は次のとおりです-

インデントスペース

YAML文字ストリームでは、インデントは0文字以上の改行文字として定義されます。覚えておくべき最も重要な点は、インデントにタブ文字を含めてはならないということです。インデントの文字は、ノードのコンテンツ情報の一部と見なしてはなりません。理解を深めるために、次のコードを確認してください。

%YAML 1.1
---
!!map {
   ? !!str "Not indented"
   : !!map {
      ? !!str "By one space"
      : !!str "By four\n spaces\n",
      ? !!str "Flow style"
      : !!seq [
         !!str "By two",
         !!str "Still by two",
         !!str "Again by two",
      ]
   }
}

インデント後に表示される出力は次のとおりです。

{
   "Not indented": {
      "By one space": "By four\n spaces\n", 
      "Flow style": [
         "By two", 
         "Still by two", 
         "Again by two"
      ]
   }
}

分離スペース

YAMLは、トークン間の分離にスペース文字を使用します。最も重要な注意点は、YAMLでの区切りにタブ文字を含めるべきではないということです。

次のコードは、分離スペースの使用法を示しています-

{ · first: · Sammy, · last: · Sosa · }
上記の構文では、次の出力が得られます。
{
   "\u00b7 last": "\u00b7 Sosa \u00b7", 
   "\u00b7 first": "\u00b7 Sammy"
}

無視される行プレフィックス

空のプレフィックスには、先頭の空白も含まれるスカラータイプに応じて、常にインデントが含まれます。プレーンスカラーにはタブ文字を含めないでください。一方、引用符で囲まれたスカラーにはタブ文字が含まれる場合があります。ブロックスカラーは完全にインデントに依存します。

次の例は、無視された行プレフィックスが体系的に機能することを示しています。

%YAML 1.1
---
!!map {
   ? !!str "plain"
   : !!str "text lines",
   ? !!str "quoted"
   : !!str "text lines",
   ? !!str "block"
   : !!str "text·®lines\n"
}

ブロックストリームで達成される出力は次のとおりです。

{
   "plain": "text lines", 
   "quoted": "text lines", 
   "block": "text\u00b7\u00aelines\n"
}

ラインフォールディング

Line Foldingを使用すると、読みやすくするために長い行を分割できます。短い行の量が多いほど、読みやすさが向上します。行の折り畳みは、長い行の元のセマンティクスに注目することによって実現されます。次の例は、線の折り畳みを示しています-

%YAML 1.1
--- !!str
"specific\L\
trimmed\n\n\n\
as space"

次のように、JSON形式の行折り畳みの出力を確認できます-

"specific\u2028trimmed\n\n\nas space"