Yaml-processes
YAML-プロセス
YAML follows a standard procedure for Process flow. The native data structure in YAML includes simple representations such as nodes. It is also called as Representation Node Graph.
これには、シリアル化ツリーを作成するためにシリアル化されるマッピング、シーケンス、およびスカラー量が含まれます。 シリアル化では、オブジェクトはバイトストリームで変換されます。
シリアル化イベントツリーは、次の図に示すように、文字ストリームのプレゼンテーションを作成するのに役立ちます。
逆の手順では、バイトのストリームをシリアル化されたイベントツリーに解析します。 その後、ノードはノードグラフに変換されます。 これらの値は、後でYAMLネイティブデータ構造で変換されます。 以下の図はこれを説明します-
YAMLの情報は、*マシン処理*および*人間の消費*の2つの方法で使用されます。 YAMLのプロセッサは、上記の図の補完的なビュー間で情報を変換する手順のツールとして使用されます。 この章では、YAMLプロセッサが特定のアプリケーション内で提供する必要がある情報構造について説明します。
YAMLには、データオブジェクトをシリアル形式で表すためのシリアル化手順が含まれています。 YAML情報の処理には、*表現、シリアル化、プレゼンテーション、解析*の3つの段階が含まれます。 それぞれについて詳しく説明します。
表現
YAMLは、 sequence、mapping 、 scalar の3種類のノードを使用してデータ構造を表します。
シーケンス
順序とは、順序付けられたエントリの数を指し、キーと値のペアの順序付けられていない関連付けをマップします。 PerlまたはPythonの配列リストに対応しています。
以下に示すコードは、シーケンス表現の例です-
product:
- sku : BL394D
quantity : 4
description : Football
price : 450.00
- sku : BL4438H
quantity : 1
description : Super Hoop
price : 2392.00
マッピング
一方、マッピングは辞書データ構造またはハッシュテーブルを表します。 同じための例は以下に記載されています-
batchLimit: 1000
threadCountLimit: 2
key: value
keyMapping: <What goes here?>
スカラー
スカラーは、文字列、整数、日付、アトミックデータ型の標準値を表します。 YAMLには、データ型構造を指定するノードも含まれていることに注意してください。 スカラーの詳細については、このチュートリアルの第6章を参照してください。
直列化
YAMLでは、人間にわかりやすいキーの順序とアンカー名を容易にするシリアル化プロセスが必要です。 シリアル化の結果は、YAMLシリアル化ツリーです。 YAMLデータの一連のイベント呼び出しを生成するために走査できます。
シリアル化の例を以下に示します-
consumer:
class: 'AppBundle\Entity\consumer'
attributes:
filters: ['customer.search', 'customer.order', 'customer.boolean']
collectionOperations:
get:
method: 'GET'
normalization_context:
groups: ['customer_list']
itemOperations:
get:
method: 'GET'
normalization_context:
groups: ['customer_get']
プレゼンテーション
YAMLシリアル化の最終出力はプレゼンテーションと呼ばれます。 これは、人間に優しい方法で文字ストリームを表します。 YAMLプロセッサには、ストリームの作成、インデントの処理、コンテンツのフォーマットに関するさまざまなプレゼンテーションの詳細が含まれています。 この完全なプロセスは、ユーザーの好みによって導かれます。
YAMLプレゼンテーションプロセスの例は、作成されたJSON値の結果です。 理解を深めるために、以下のコードを観察してください-
{
"consumer": {
"class": "AppBundle\\Entity\\consumer",
"attributes": {
"filters": [
"customer.search",
"customer.order",
"customer.boolean"
]
},
"collectionOperations": {
"get": {
"method": "GET",
"normalization_context": {
"groups": [
"customer_list"
]
}
}
},
"itemOperations": {
"get": {
"method": "GET",
"normalization_context": {
"groups": [
"customer_get"
]
}
}
}
}
}
構文解析
解析はプレゼンテーションの逆プロセスです。文字のストリームが含まれ、一連のイベントが作成されます。 シリアル化イベントの原因となるプレゼンテーションプロセスで導入された詳細を破棄します。 入力の形式が正しくないため、解析手順が失敗する可能性があります。 基本的には、YAMLが整形式かどうかを確認する手順です。
以下に記載されているYAMLの例を考えてください-
---
environment: production
classes:
nfs::server:
exports:
-/srv/share1
-/srv/share3
parameters:
paramter1
3つのハイフンを使用して、後で定義されるさまざまな属性を持つドキュメントの開始を表します。
YAML lintはYAMLのオンラインパーサーであり、YAML構造を解析して有効かどうかを確認するのに役立ちます。 YAML lintの公式リンクは以下のとおりです:http://www.yamllint.com/
以下に示すように解析の出力を見ることができます-