2012-09-21 7 views
13

Attualmente sto documentando un'API di riposo scritta in Python. Tutta la documentazione del progetto viene creata utilizzando Sphinx e per l'API REST vorrei creare alcune direttive speciali. Ad esempio, supponiamo di avere questa risorsa definita:Come creare direttive personalizzate in Sfinge

@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 

Questo è fondamentalmente come appare la documentazione attualmente. Mi piacerebbe essere in grado di creare una direttiva per Sphinx che formatta uno o più di quelli :query_param ...: proprio come fa con il normale :param:.

Ho trovato come creare ruoli, ma funzionano solo in linea, non per blocchi di dati.

Come devo fare questo?

+1

Si consiglia di chiedere questo sul [Sfinge Google Group] (https://groups.google.com/forum/?fromgroups#!forum/sfinge-dev). Qualcuno potrebbe essere più capace di rispondere alla domanda. Fuori mano, non sono sicuro di come vengono trattati i blocchi di documentazione. Puoi certamente [creare estensioni in Sphinx/docutils] (http://sphinx.pocoo.org/extensions.html), ma non sono sicuro di come il parsing di docstring si inserisca nel modello di Sphinx/docutils. – jszakmeister

+0

Probabilmente la risposta implica l'utilizzo di [GroupedField] (https://bitbucket.org/birkenfeld/sphinx/src/1f3a2749df39/sphinx/util/docfields.py#cl-74) nell'estensione. – jszakmeister

risposta

10

La Sfinge può essere estesa con le direttive personalizzate tramite "Sphinx Extensions". Cioè, dovrai implementare un'estensione Sfinge che fornisca la direttiva personalizzata query_param e aggiungere questa estensione al tuo progetto Sphinx.

La documentazione di Sphinx fornisce a tutorial sulle estensioni di implementazione, in cui implementano effettivamente una direttiva personalizzata.

Riferimento:

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

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