2012-09-21 22 views
13

Actualmente estoy documentando una API de descanso escrita en Python. Toda la documentación del proyecto se crea utilizando Sphinx, y para la API REST me gustaría crear algunas directivas especiales. Por ejemplo, digamos que tengo este recurso definido:Cómo crear directivas personalizadas en Sphinx

@resource("/user/<email>", method="GET") 
def user_details (email): 
    """ Returns detailed information about a user account. 

    :resource GET: /user/<email> 
    :query_param a_param: Some kind of query param. 
    """ 
    # Do stuff and return user details 

Así es básicamente como se ve la documentación actualmente. Me gustaría poder crear una directiva para Sphinx que formatee uno o más de esos :query_param ...: como lo hace con el :param: normal.

He encontrado cómo hacer papeles, pero solo funcionan en línea, no para bloques de datos.

¿Cómo debo proceder para hacer esto?

+1

Es posible que desee preguntarle a esto en el [grupo de Google Sphinx] (https://groups.google.com/forum/?fromgroups#!forum/sphinx-dev). Alguien podría ser más capaz de responder la pregunta. Off-hand, no estoy seguro de cómo se tratan los bloques de documentación. Ciertamente puede [crear extensiones en Sphinx/docutils] (http://sphinx.pocoo.org/extensions.html), pero no estoy seguro de cómo el análisis de docstring encaja en el modelo Sphinx/docutils. – jszakmeister

+0

La respuesta probablemente implique usar un [GroupedField] (https://bitbucket.org/birkenfeld/sphinx/src/1f3a2749df39/sphinx/util/docfields.py#cl-74) en su extensión. – jszakmeister

Respuesta

10

Sphinx puede ampliarse con directivas personalizadas a través de "Sphinx Extensions". Es decir, deberá implementar una extensión Sphinx que proporcione la directiva personalizada query_param y agregar esta extensión a su proyecto Sphinx.

La documentación de Sphinx proporciona a tutorial sobre la implementación de extensiones, en las que implementan una directiva personalizada.

Referencia:

http://sphinx.pocoo.org/extensions.html

http://sphinx-doc.org/extdev/index.html#dev-extensions

Cuestiones relacionadas