2011-04-12 82 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簽名的更改也會影響其他域上的簽名。