Clojurescript - Om组件的Codox文档

时间:2015-03-02 16:11:41

标签: clojure documentation clojurescript

我正在为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"跳过个别功能。但似乎没有办法在这里使用它。

有没有其他人经历过这个并且知道如何摆脱混乱?

3 个答案:

答案 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。