是否可以在可折叠的Yaml文本块中向行添加额外的缩进而不会破坏折叠?

时间:2020-05-29 20:50:43

标签: yaml

考虑以下Yaml,它指定了两个空格的固定缩进:

yaml: >-2
  First line
  will fold.

  Second line
  should fold
  as well.

反序列化为:

{
  "yaml": "First line will fold.\nSecond line should fold as well."
}

结果文本按预期方式折叠。只有两行分开(换行符可以在“ fold。”和“ Second”两个词之间找到。)

现在,如果在“第二个”字之前添加了一些额外的空格,则折叠逻辑将中断。让我们假设这个额外的空间是文本本身的一部分,而不是Yaml缩进的一部分(因为后者已固定为两个空格):

yaml: >-2
  First line
  will fold.

       Second line
  should fold
  as well.

此反序列化为:

{
  "yaml": "First line will fold.\n\n     Second line\nshould fold as well."
}

现在,将生成三行单独的行,并且第一行包含两个连续的换行符,这是意外的。

是否可以在不破坏折叠逻辑的情况下向Yaml文本块添加一些额外的间距缩进(缩进是文本数据的一部分,而不是Yaml缩进的一部分)?

1 个答案:

答案 0 :(得分:1)

YAML表现as specified

保留折叠换行符以“缩进”和空白行

您可以改用带引号的标量,它也可以进行折行,但是处理缩进的方式不同:

yaml:
 "First line
  will fold.

  \     Second line
  should fold
  as well."

在这里,由于前导空格已被完全剥离,因此您可以避开应该满足的第一个空格。评估为

%YAML 1.2
--- 
!!map {
  ? !!str "yaml"
  : !!str "First line will fold.\n     Second line should fold as well."
}