YAML文件中的内联注释

时间:2017-06-16 07:43:22

标签: yaml

我使用以下linter来检查我的yml是否有效:http://www.yamllint.com/

我尝试过添加内联评论,但会将其删除。我在这里阅读了规范http://www.yaml.org/spec/1.2/spec.html#id2780069

我是否更正,以下内容实际上是有效的,并且删除评论后,linting网站是错误的?

cache: 
  paths: 
    - node_modules/ # some comment here

1 个答案:

答案 0 :(得分:6)

您的来源是正确的。如果你想保留评论来运行这样的检查,或者重新格式化保留评论,那么使用基于ruamel.yaml的小型Python程序,它可以保留你对往返的评论并规范化缩进(免责声明:我是ruamel.yaml)的作者:

import sys
from ruamel.yaml import round_trip_dump
from ruamel.yaml.util import load_yaml_guess_indent

with open(sys.argv[1]) as fp:
    data, ind, bsi = load_yaml_guess_indent(fp)
round_trip_dump(data, sys.stdout, indent=ind, block_seq_indent=bsi)

只需在命令行上提供输入文件作为参数。

这比所有基于Web的检查程序的优势在于,您可能的敏感数据无法“发布”。 它还优于yamllint.com和其他一些网站,它支持YAML 1.2。 yamllint.com仅支持YAML 1.1,如果您使用明确的YAML文档指令尝试它,您可以看到:

%YAML 1.2
--- 
a: 0o7
...

该网站抛出了不支持该版本的错误。哪个优于例如http://yaml-online-parser.appspot.com/确实(指令被忽略,解析为好像是YAML 1.1,八进制整数标量就好像它是一个字符串标量)或YAML的半成就实现http://beautifytools.com/yaml-validator.php(错误:无法解析) )