【发布时间】:2014-03-04 06:36:19
【问题描述】:
如何检查 YAML 文件,而无需将其上传到 http://yamllint.com?
例如,如果我有
people:
1:
:name: John Smith
:name: Jane Smith
如何让它警告我最后一个 :name 会覆盖第一个 :name?
我使用的是 Ruby 2.1 和 Ubuntu 12.04。
【问题讨论】:
如何检查 YAML 文件,而无需将其上传到 http://yamllint.com?
例如,如果我有
people:
1:
:name: John Smith
:name: Jane Smith
如何让它警告我最后一个 :name 会覆盖第一个 :name?
我使用的是 Ruby 2.1 和 Ubuntu 12.04。
【问题讨论】:
yamllint 命令行工具可以满足您的需求 想要:
sudo pip install yamllint
具体来说,它有一个规则key-duplicates 可以检测重复和键
互相重写:
$ yamllint test.yml
test.yml
1:1 warning missing document start "---" (document-start)
4:5 error duplication of key ":name" in mapping (key-duplicates)
(它还有许多其他规则可供您启用/禁用或调整。)
【讨论】:
这就是你所追求的吗?
require 'yaml'
def check_yaml(filename)
unless YAML.dump(YAML.load_file(filename)) == File.read(filename).gsub(/\s*#.*/, '')
raise 'problem'
end
end
check_yaml 'somefile.yml'
【讨论】:
#),它可能会起作用。
导入1.yaml然后导出到2.yaml和diff 1.yaml 2.yaml怎么样?
无法提供代码——这台机器上没有 nix utils,但你明白了。
【讨论】: