6

我习惯于在 C++ 和 Python 项目中使用Sphinx。我刚刚在Clojure中启动了一个项目,我想重新使用我的 Sphinx/reStructuredText 技能来记录我的 Clojure 代码。由于 Clojure 没有内置,因此我开始编写一个。

具有讽刺意味的是,Sphinx 的文档对编写扩展没有任何帮助。所以,从 Python 和 Javascript 的内置模式开始,我已经有了一些基本的元素。我可以使用以下指令为函数编写文档:

.. clj:ns:: clojure.core

.. clj:fn:: (filter f coll)

   :param f: predicate
   :param coll: collection

   Built-in!

但是,HTML 输出会生成 C/Python 样式的签名。前面的示例生成如下内容:

filter(f, coll)

    Parameters: * f - predicate
                * coll - collection

    Built-in!

我宁愿以 lisp-ish 形式获得签名:

(filter f coll)

    Parameters: * f - predicate
                * coll - collection

    Built-in!

生成签名的代码似乎一直到docutils.addnodes模块。如何让 Sphinx 使用 Sphinx 语法生成 HTML?可以用模板来完成,还是我需要破解整个构建器系统才能做到这一点?

4

1 回答 1

3

从当前版本 (1.0.7) 开始,更改签名的格式涉及扩展HTMLTranslatorSphinx ( sphinx/writers/html.py) 中的类。但是,在此级别没有特定于域的处理,Clojure 签名的更改也会影响其他域上的签名。

于 2011-04-20T21:32:43.700 回答