有效范围的YAML配置

问题描述 投票:0回答:1

我有一个YAML文件,其中包含我的应用程序的一些配置。现在,有些配置需要及时更改。比如说

2020年的数值是:

tax:
    federal: 9
    provincial: 7

但对于2021年,我们需要的是:

tax:
    federal: 9.5
    provincial: 7.5

如果我只能通过时间来切换yml文件会很容易 但是yaml文件中包含了很多配置,这些配置会在不同的时间点发生变化 另外,我只分配了1个yml文件来配置我的应用程序,所以这不是一个真正的选择。

所以我的问题是,用YAML来表示这个问题的最简洁的方法是什么?

我能想到的唯一的方法是下面的,但我可以看到这将是非常混乱的。

tax:
    federal: [20200101-20201231]9;[20210101-20211231]9.5
    provincial:  [20200101-20201231]7;[20210101-20211231]7.5;
configuration yaml properties-file
1个回答
1
投票

你的语法是不合法的,你需要把它用引号括起来,解析为单标量,然后进行后处理。

我建议使用YAML的标签系统。你可以使用一个标签,比如 !datedep 来标记值,例如。

tax:
    federal: !datedep { [20200101, 20210101, 20220101]: [9, 7.5] }
    provincial: !datedep { [20200101, 20210101, 20220101]: [7, 7.5] }

我给一个YAML映射作为值,其中有一个键值对。key是一个日期列表,建立在日期之间的范围。value是一个值的列表,它应该被映射到日期之间的范围。

当加载YAML时,你必须为标签提供一个构造函数。!datedep. 如何工作取决于你的实现。构造函数应该根据当前日期选择合适的值。你可以使用YAML锚和别名来引用重复的日期范围,例如:。

tax:
    federal: !datedep { &y2021 [20200101, 20210101, 20220101]: [9, 7.5] }
    provincial: !datedep { *y2021 : [7, 7.5] }
© www.soinside.com 2019 - 2024. All rights reserved.