Домен сфинкса для Clojure - PullRequest
6 голосов
/ 13 апреля 2011

Я привык работать с Sphinx для проектов C ++ и Python. Я только начал проект в 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 генерировать HTML, используя синтаксис Sphinx? Можно ли это сделать с помощью шаблона, или мне нужно взломать всю систему сборки, чтобы сделать это?

1 Ответ

3 голосов
/ 21 апреля 2011

Начиная с текущей версии (1.0.7), изменение формата подписи включает расширение класса HTMLTranslator в Sphinx (sphinx/writers/html.py). Однако на этом уровне нет специфичной для домена обработки, изменения в сигнатурах Clojure также повлияют на сигнатуры в других доменах.

...