Ваш синтаксис является незаконным, вам нужно будет заключить его в кавычки, проанализировать его как единый скаляр и обработать его.
Я предлагаю использовать систему тегов YAML: вы используете тег вроде !datedep
для обозначения значений, например:
tax:
federal: !datedep { [20200101, 20210101, 20220101]: [9, 7.5] }
provincial: !datedep { [20200101, 20210101, 20220101]: [7, 7.5] }
Я даю в качестве значения отображение YAML с одной парой ключ-значение. Ключ - это список дат, выстраивая промежутки между ними. Значение - это список значений, которые должны быть сопоставлены с диапазонами между датами.
При загрузке YAML вы должны предоставить конструктор для тега !datedep
. Как это работает, зависит от вашей реализации. Конструктор должен выбрать соответствующее значение на основе текущей даты. Вы можете использовать якоря и псевдонимы YAML для ссылки на повторяющиеся диапазоны дат, например:
tax:
federal: !datedep { &y2021 [20200101, 20210101, 20220101]: [9, 7.5] }
provincial: !datedep { *y2021 : [7, 7.5] }