YAML語法原語
在本章中,將瞭解YAML中語法原語的以下幾個方面 -
- 生產參數
- 縮進空間
- 分離空間
- 忽略的行前綴
- 摺疊線
下面來詳細地瞭解每個方面。
1. 生產參數
生產參數包括一組參數以及在特定生產中使用的允許值範圍。 YAML中使用以下生產參數列表 -
縮進
它由字符n
或m
表示字符流取決於其中包含的塊的縮進級別。 許多生產都參數化了這些功能。
上下文
它由c
表示,YAML支持兩組上下文:塊樣式和流樣式。
樣式
它由s
表示。 標量內容可以以五種樣式之一呈現:普通,雙引號和單引號流,字面和摺疊塊。
Chomping
它用t
表示。 塊標量提供了許多有助於修剪塊的機制:剝離,剪輯和保留。 Chomping
有助於格式化新的線串。 它使用塊樣式表示。 Chomping
過程在指標的幫助下發生。 指標控制使用字符串換行符生成的輸出。 使用( -
)運算符刪除換行符,並使用(+
)運算符添加換行符。
Chomping
過程的一個例子如下所示 -
strip: |-
text↓
clip: |
text↓
keep: |+
text↓
解析指定的YAML示例後的輸出如下 -
2. 縮進空間
在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"
]
}
}
3. 分離空間
YAML使用空格字符分隔標記。 最重要的注意事項是YAML中的分隔不應包含製表符。
以下單獨的代碼顯示了分隔空間的用法 -
{ · first: · Sammy, · last: · Sosa · }
上面顯示的語法將輸出:
{
"\u00b7 last": "\u00b7 Sosa \u00b7",
"\u00b7 first": "\u00b7 Sammy"
}
4. 忽略行前綴
空前綴始終包含縮進,具體取決於標量類型,該標量類型還包括前導空格。 普通標量不應包含任何製表符。 另一方面,引用的標量可能包含製表符。 塊標量完全取決於縮進。
以下示例以系統方式顯示忽略行前綴 -
%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"
}
5. 摺疊線
摺疊線允許打破長線以便於閱讀。更多的短線意味着更好的可讀性。 通過注意長行的原始語義來實現行摺疊。 以下示例演示摺疊線 -
%YAML 1.1
--- !!str
"specific\L\
trimmed\n\n\n\
as space"
可以看到JSON格式的摺疊輸出如下 -
"specific\u2028trimmed\n\n\nas space"