由於上述問題的措辭,@ flyx's是最合適的答案,但是由於外部約束(請參閱my other question)我最終編寫了我自己的plugin以讓數據文件在文本上通過液體相互包含。
這個插件的目標是讓數據是:
- DRY - (不要重複自己),每個模型應該只能定義一次。
- 分組 - 所有相似的數據應該以相同的格式相鄰定義。
- 分隔 - 不同的數據應該在不同的地方定義。
@ flyx在這裏的解決方案失敗了目標#2和#3,要求在同一地點定義所有不同類型的數據並混合食品和成分的定義。
我建議的解決方案允許將一個數據文件包含到另一個數據文件中。這允許在不同的文件中定義不同的模型,但可以以任意順序從其他文件引用,就好像它們在相同的地方定義一樣。適用於這個問題,我的解決辦法是這樣的:
A.yml
{% include_relative_once _data/B.yml %}
a: &a
name: "Ay"
parents: []
children: [*b]
B.yml
{% include_relative_once _data/A.yml %}
b: &b
name: "Bee"
parents: [*a]
children: []
對於插件本身,看到這個gist