如何将.edn文件作为另一个“父” .edn文件的子集,例如.xml文件中的“包含路径”元素?

时间:2019-02-06 13:37:26

标签: clojure edn

如何将.edn文件的内容作为另一个.edn文件的子集包含,类似于XML中的“包含路径”元素?

更具体地说,extensable data notation (EDN)是否可以通过类似于XML中“包含路径”元素的路径来“包含”文件。

我有一个相当大的XML格式的键绑定项目,该项目通过将每个部分分成可以轻松跳转到a parent file made up "include path" elements并可以操作的文件而变得更加易于导航且不那么笨拙。这允许通过注释一行来关闭/打开我的代码的离散部分,并让我通过向上或向下冒泡来更改顺序。     此后,该项目已从XML迁移到EDN格式I,使用one enormous .edn file令我感到沮丧。我花了很多时间在缩进,代码折叠,书签...上,但这就像试图读一本印在长羊皮纸上的书一样。

我应该提到程序(Goku)使用.edn文件来生成甚至更大且笨拙的JSON文件。不知道这对最佳解决方案是否有影响。谢谢。

Old XML "parent" file with "include path" elements

New enormous EDN file with sections attempted to be broken up with indentation, code folding, colored comments, bookmarks and formatting

我查找了“包括EDN格式的文件”,但这也许确实是Clojure的问题。我不是一个经验丰富的程序员,所以不确定我是否应该真正阅读Clojure文档,因为据我了解,edn是Clojure语言的子集

查看图像以获取代码https://imgur.com/gallery/apjmtWf

理想情况下,我希望有一个主父文件,其中包含许多较小的文件“包含”,以便于导航。

2 个答案:

答案 0 :(得分:3)

XML不包含任何内容。只是数据而已。在运行时,包含会发生在XML处理器(例如XSL)中。

对于EDN正是这样。如果您想包含一个对象,只需沿[:include "this file also"]讲几句话,然后遍历数据结构并将所有包含替换为真实数据。

答案 1 :(得分:0)

您可能会发现JUXT的aero库很有用。它添加了一些自定义标签文字,以方便使用EDN文件进行配置。其中之一是#include,听起来像它可以满足您的需求。