我正在为Clojurescript webapp生成Codox文档。这是我用来演示我的问题的示例函数:
(defn breadcrumbs
"Render Breadcrumbs"
[app owner]
(om/component
(let [crumbs (:breadcrumbs app)]
(dom/div #js {:id "breadcrumbs"}
(when (> (count crumbs) 0)
(apply dom/ol #js {:className "breadcrumb os-border-default"}
(om/build-all breadcrumb crumbs)))))))
问题是使用om / component会导致Codox生成另外四个"隐藏"函数(可能是这些是IRender,IDidUpdate等可以为组件定义的函数......但我不确定)。在文档中,这些函数如下所示:
- > t6127 ( - > t6127 crumb breadcrumb meta6128)
- > t6130 ( - > t6130 crumb breadcrumb meta6131)
- > t6133 ( - > t6133所有者应用程序breadcrumbs meta6134)
- > t6136 ( - > t6136所有者应用程序breadcrumbs meta6137)
这个不需要的文档极大地混淆了最终产品。我知道可以通过" ^:no-doc"跳过个别功能。但似乎没有办法在这里使用它。
有没有其他人经历过这个并且知道如何摆脱混乱?
答案 0 :(得分:1)
Codox目前在ClojureScript中遇到reify
问题,由om/component
在内部使用。
David Nolen建议通过分析仪在当前版本的ClojureScript中提供区分这些临时值的信息,但我还没有找到它,没有人能够指着我。有关详细信息,请参阅Codox项目页面上的问题#72。
答案 1 :(得分:0)
om/component
是一个非常简单的macro,只为render
生成IRender
。看起来Codox为breadcumb
(前两个)提供了两个函数,为breadcumbs
提供了两个函数。一个可能是你想要的那个,另一个来自render
。您可以像这样编写组件:
(defn breadcrumbs
"Render Breadcrumbs"
[app owner]
(reify
om/IRender
(render ^:no-doc [_]
(let [crumbs (:breadcrumbs app)]
(dom/div #js {:id "breadcrumbs"}
(when (> (count crumbs) 0)
(apply dom/ol #js {:className "breadcrumb os-border- default"}
(om/build-all breadcrumb crumbs)))))))
或编写自己的no-doc-component
宏:
(defmacro no-doc-component
[& body]
`(reify
om.core/IRender
(~(vary-meta 'render assoc :no-doc true) [this#]
~@body)))
免责声明:虽然我已经尝试过宏,但我没有尝试使用Codox。
答案 2 :(得分:0)
weevejester在0.8.11版本中解决了这个问题。
他还将ClojureScript分析器配置为不分析依赖关系,这允许我为我的Om项目生成文档。它还应该减少:exclude配置中的命名空间数量。我的减少到了0。