YAML - 语法原语
在本章中,您将了解 YAML 语法原语的以下方面 −
- 生产参数
- 缩进空格
- 分隔空格
- 忽略的行前缀
- 行折叠
让我们详细了解每个方面。
生产参数
生产参数包括一组参数和特定生产中使用的允许值范围。以下生产参数列表在 YAML −
中使用。缩进
它用字符 n 或 m 表示,字符流取决于其中包含的块的缩进级别。许多产品已将这些功能参数化。
上下文
它用c表示。YAML 支持两组上下文:块样式和流样式。
样式
它用 s 表示。标量内容可以采用以下五种样式之一呈现:纯文本、双引号和单引号流、文字和折叠块。
Chomping
它用t表示。块标量提供了许多有助于修剪块的机制:剥离、剪辑和保留。Chomping 有助于格式化新行字符串。它用于块样式表示。Chomping 过程在指示器的帮助下发生。指示器控制应使用字符串换行符生成哪些输出。使用 (-) 运算符删除换行符,使用 (+) 运算符添加换行符。
下面显示了 chomping 过程的一个示例 −
strip: |- text↓ clip: | text↓ keep: |+ text↓
解析指定的 YAML 示例后的输出如下 −
缩进空格
在 YAML 字符流中,缩进定义为由零个或多个字符组成的换行符。需要牢记的最重要的一点是缩进不能包含任何制表符。缩进中的字符永远不应被视为节点内容信息的一部分。请观察以下代码以更好地理解 −
%YAML 1.1 --- !!map { ? !!str "Not indented" : !!map { ? !!str "By one space" : !!str "By four spaces ", ? !!str "Flow style" : !!seq [ !!str "By two", !!str "Still by two", !!str "Again by two", ] } }
缩进后可以看到的输出如下 −
{ "Not indented": { "By one space": "By four spaces ", "Flow style": [ "By two", "Still by two", "Again by two" ] } }
分隔符
YAML 使用空格字符来分隔标记。最重要的一点是 YAML 中的分隔符不应包含制表符。
以下代码显示了分隔符的用法 −
{ · first: · Sammy, · last: · Sosa · }The syntax shown above gives you the following output:
{ "\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 " }
块流实现的输出如下 −
{ "plain": "text lines", "quoted": "text lines", "block": "text\u00b7\u00aelines " }
折行
折行允许拆分长行以提高可读性。短行越多,可读性越好。折行是通过注意长行的原始语义来实现的。以下示例演示了折行 −
%YAML 1.1 --- !!str "specific\L\ trimmed \ as space"
您可以看到 JSON 格式的行折叠输出,如下所示 −
"specific\u2028trimmed as space"