ruby YAML每个缩进有多少个空格?

mcdcgff0  于 2023-08-04  发布在  Ruby
关注(0)|答案(3)|浏览(147)

如果我在YAML中每个缩进级别使用一个空格、两个空格或四个空格,有什么区别吗?
每个结构类型的空格编号是否有任何特定规则??
例如4空间用于嵌套Map1空间每个列表项等??
我正在为elasticbeanstalk.ebextensions编写一个yaml配置文件,我真的很难正确地构造它。虽然我在YAML Validator中有有效的yaml,但弹性豆茎似乎理解了不同的结构。

hmae6n7t

hmae6n7t1#

YAML中没有要求缩进任何具体数量的空格。也不要求一致。例如,这是有效的YAML:

a:
 b:
     - c
     -  d
     - e
f:
    "ghi"

字符串
一些规则可能会令人感兴趣:

  • 流量(即以{[开头的所有内容)可以跨越多行,但必须缩进至少与周围当前块级别一样多的空格。
  • 块列表项 * 可以 *(但不需要)具有与周围块级别相同的缩进,因为-被认为是缩进的一部分:
a:    # top-level key
- b   # value of that key, which is a list
- c
c:    # next top-level key
 d    # non-list value which must be more indented


如果你使用的是linter,那可能需要定义一定数量的空格,但是YAML规范本身和符合YAML规范的实现并不需要。

ngynwnxp

ngynwnxp2#

V1.2的YAML规范只是说
在YAML块样式中,结构由缩进确定。一般来说,缩进定义为在一行的开始处有零个或多个空格字符。
为了保持可移植性,不能在缩进中使用制表符,因为不同的系统对制表符的处理是不同的。请注意,大多数现代编辑器都可以配置为按Tab键插入适当数量的空格。
缩进量是表示细节,不得用于传达内容信息。
因此,只要使用空格而不是制表符,您就可以根据自己的喜好设置缩进深度。有趣的是,IntelliJ默认使用2个空格。

rxztt3cl

rxztt3cl3#

复制自https://docs.saltproject.io/en/3000/topics/troubleshooting/yaml_idiosyncrasies.htmlhttps://archive.is/ZnwMb

缩进

YAML文件的建议语法是使用2个空格进行缩进,但YAML将遵循单个文件使用的任何缩进系统。缩进两个空格对于SLS文件非常有效,因为数据是统一的,没有深度嵌套。

嵌套词典

当字典嵌套在其他数据结构(特别是列表)中时,缩进逻辑有时会发生变化。可能发生这种情况的示例包括文件.managed state中的上下文和默认选项:

/etc/http/conf/http.conf:
  file:
    - managed
    - source: salt://apache/http.conf
    - user: root
    - group: root
    - mode: 644
    - template: jinja
    - context:
        custom_var: "override"
    - defaults:
        custom_var: "default value"
        other_var: 123

字符串
请注意,虽然缩进是每级两个空格,但对于context和defaults选项下的值,缩进是四个空格。如果只有两个空格用于缩进,那么这些键将被视为包含上下文键的同一字典的一部分,因此数据将无法正确加载。如果不希望使用双缩进,那么可以使用花括号声明深度嵌套的dict:

/etc/http/conf/http.conf:
  file:
    - managed
    - source: salt://apache/http.conf
    - user: root
    - group: root
    - mode: 644
    - template: jinja
    - context: {
      custom_var: "override" }
    - defaults: {
      custom_var: "default value",
      other_var: 123 }

相关问题