Parsing 覆盖YAML节点

Parsing 覆盖YAML节点,parsing,yaml,Parsing,Yaml,我有一个带有一些项目配置的YAML文件,我希望重用部分代码以使其易于维护。因此,我尝试使用锚点来实现这一点,但我希望覆盖前面的节点。可能吗 以下是我的例子: default: &default output: &default_output make_video: true take_screenshot: true browser: &default_browser type: :chrome wi

我有一个带有一些项目配置的YAML文件,我希望重用部分代码以使其易于维护。因此,我尝试使用锚点来实现这一点,但我希望覆盖前面的节点。可能吗

以下是我的例子:

default: &default
    output: &default_output
       make_video: true
       take_screenshot: true
    browser: &default_browser
       type: :chrome
       width: 1024
       height: 1280
    logger: &default_logger
       level: TRACE
       output_type: :file

chrome_browser: &chrome_browser
    <<: *default
    browser:
       type: :chrome
       user_agent: user_agent_string_for_chrome

firefox_browser: &firefox_browser
     <<: *default
     browser: 
         type: :firefox
         user_agent: user_agent_string_for_firefox

我得到了所有的配置吗?

至于你的第一个问题,这不符合你的要求,因为键
浏览器
(来自
默认值
)的值被替换为
浏览器
中定义的值。没有正在进行的树合并或类似操作

因此,对于第二个示例,您将得到:

output: 
   make_video: true
   take_screenshot: true
logger: 
   level: TRACE
   output_type: :file
browser:
   type: :chrome
   user_agent: user_agent_string_for_chrome
如果你把它扔回YAML,这可能也是缺乏的。当然,还有其他方法可以实现这样的目标,但是您必须帮助解析器实现这一目标

profile_yaml['staging.europe.chrome'] 
output: 
   make_video: true
   take_screenshot: true
logger: 
   level: TRACE
   output_type: :file
browser:
   type: :chrome
   user_agent: user_agent_string_for_chrome