Yaml-syntax-primitives

提供:Dev Guides
移動先:案内検索

YAML-構文プリミティブ

In this chapter you will learn about the following aspects of syntax primitives in YAML −

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

各側面を詳細に理解しましょう。

生産パラメータ

生産パラメーターには、特定の生産で使用されるパラメーターのセットと許容値の範囲が含まれます。 生産パラメータの次のリストはYAMLで使用されます-

インデント

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

コンテキスト

*c* で示されます。 YAMLは、*ブロックスタイル*と*フロースタイル*の2つのコンテキストグループをサポートしています。

スタイル

sで示されます。 スカラーコンテンツは、5つのスタイルのいずれかで表示できます。

むしゃむしゃ

*t* で示されます。 ブロックスカラーは、ブロックのトリミングに役立つ多くのメカニズム( *strip、clip* 、 *keep* )を提供します。 むち打つことは、新しいライン文字列のフォーマットに役立ちます。 ブロックスタイルの表現が使用されます。 むちゃくちゃプロセスは、インジケータの助けを借りて発生します。 インジケータは、改行文字列でどの出力を生成するかを制御します。 改行は*(-)*演算子で削除され、改行は*(+)*演算子で追加されます。

加工プロセスの例を以下に示します-

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

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

指定されたYAMLの解析後の出力

インデントスペース

YAML文字ストリームでは、インデントは、ゼロ個以上の文字による改行文字として定義されます。 留意すべき最も重要な点は、インデントにはタブ文字を含めないことです。 インデントの文字は、ノードのコンテンツ情報の一部と見なされることはありません。 より良い理解のために次のコードを観察します-

%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"
}

行折り

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

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

あなたは次のようにJSON形式で行の折りたたみの出力を見ることができます-

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