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

问题描述 投票:0回答:1

考虑以下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缩进的一部分?

yaml
1个回答
0
投票

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."
}
© www.soinside.com 2019 - 2024. All rights reserved.