YAML 语法基础
在本章中,你将了解YAML语法基础的以下几个方面:
- 产生参数
- 缩进空格
- 分隔空格
- 忽略行前缀
- 折叠行
让我们逐个详细了解每个方面。
产生参数
产生参数包括一组参数和允许的值的范围,这些参数在特定的产生上使用。以下是YAML中使用的产生参数:
缩进
它由字符 n 或 m 表示。字符流取决于其中包含的块的缩进级别。许多产生都对这些特性进行了参数化。
上下文
它由 c 表示。YAML支持两组上下文: 块样式 和 流样式 。
样式
它由 s 表示。标量内容可以以以下五种样式之一呈现: 纯文本、双引号和单引号流、字面块和折叠块 。
回收
它由 t 表示。块标量提供了许多机制,有助于修整块: 剪裁、裁剪和保持 。回收有助于格式化换行符串。它在块样式表示中使用。回收过程是通过指示符来控制的。指示符控制应该生成带有字符串换行符的输出。用 (-) 操作符删除换行符,用 (+) 操作符添加换行符。
下面是一个回收过程的示例:
strip: |- text↓ clip: | text↓ keep: |+ text↓
在解析指定的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"
版权声明:本页面内容旨在传播知识,为用户自行发布,若有侵权等问题请及时与本网联系,我们将第一时间处理。E-mail:284563525@qq.com