【问题标题】:Is it possible to add extra indentation to a line in a foldable Yaml text block without breaking the folding?是否可以在可折叠的 Yaml 文本块中为一行添加额外的缩进而不破坏折叠?
【发布时间】:2020-05-29 20:50:43
【问题描述】:

考虑以下指定两个空格的固定缩进的 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】:

    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."
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      相关资源
      最近更新 更多