2011-04-12 25 views
6

我习惯于使用Sphinx来处理C++和Python项目。我刚刚在Clojure开始了一个项目,我想重新使用我的Sphinx/reStructuredText技能来记录我的Clojure代码。由于Clojure没有内置的domain,我开始写一个。具有讽刺意味的是,Sphinx的文档对写作扩展没有任何帮助。所以,从Python和Javascript的内置模式开始,我已经有了一些基本元素的工作。我可以使用下面的指令功能编写文档:Clojure的狮身人面像域名

.. 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上下的形式更愿意得到的签名:

(filter f coll) 

    Parameters: * f - predicate 
       * coll - collection 

    Built-in! 

生成签名似乎代码走一路降至docutils.addnodes模块。我如何让Sphinx使用Sphinx语法生成HTML?它可以用模板来完成,还是我需要通过整个生成器系统进行破解?

+0

您是否在sphinx-contrib中检查Erlang域? – omasanori 2011-04-18 01:13:05

+0

是的,我做到了。没有提及如何格式化结果签名。渲染在Sphinx('sphinx.builders.html.py','class HTMLTranslator')中做得很深。看起来您需要编写自己的HTML构建器来呈现输出。现在,我将如何在同一个项目中记录多种语言? – 2011-04-20 21:24:01

+0

你有没有得到它的工作?我正在尝试使用狮身人面像将一个clojure项目与现有项目集成,但尚未找到clojure的狮身人面像域。 – user1009908 2014-08-03 16:46:20

回答

3

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