2012-04-05 11 views
15

Ho il seguente in conf.py:Come faccio ad emettere un valore di configurazione in un file .rst di Sphinx?

def setup(app): 
    app.add_config_value('base_url','http://localhost:2000', True) 

Come faccio ad avere questo nei miei file .rst? Ho scritto questo:

:base_url:/my_app/api/application/ 

ma stampa solo :base_url: invece che l'URL effettivo.

Come si ottiene il valore di configurazione effettivo da emettere?

+0

Quindi per il momento abbiamo fatto qualcosa di molto sfacciato. Abbiamo uno script che fa semplicemente un find -exec sui documenti generati, cambiando gli URL in questione. Funziona così, ma ... –

+0

possibile duplicato di [Sostituzioni all'interno di link in reST/Sfinge] (http://stackoverflow.com/questions/1227037/sostituzioni-inchiostro-links-in-rest-sphinx) – ideasman42

risposta

17

Per la sostituzione dei collegamenti extlinks va bene, per includere i valori di configurazione arbitrari come chiesto nella tua domanda è possibile utilizzare rst_epilog per sostituzioni (o rst_prolog per il testo, che dovrebbe essere aggiunto in cima ai vostri file .rst):

Nel vostro conf.py:

my_config_value = 42 
rst_epilog = '.. |my_conf_val| replace:: %d' % my_config_value 

Nella vostra fonte .rst:

Il mio valore di configurazione è | my_conf_val |!

nell'output:

mio valore di configurazione è 42!

+0

Ok grazie, questo ha possibilità. Un problema che ho notato con le estensioni è che non posso usarlo nel mezzo di un blocco di codice. Quindi restituisce solo ": api_url:" invece della sostituzione. Would ** rst_epilog ** gestirà meglio? –

+0

L'ho appena provato, ma non funziona nei blocchi di codice. Forse questo è un bug in docutils, in quanto la sfinge si basa su sostituzioni docutils qui (e penso che le estensioni a). – bmu

+0

Continuerò a hackerarlo. Grazie per la risposta. È più generale del mio, quindi ottieni il voto. –

3

Ah ah!

Date un'occhiata al modulo sphinx.ext.extlinks a http://sphinx.pocoo.org/ext/extlinks.html

Così ho codice nel mio conf.py che fa questo:

extlinks = {'api_url' : (settings.BASE_URL + '%s', settings.BASE_URL)} 

E nel mio file .rst, ho questo:

:api_url:`/myapp/api/application/` 

che produce il link ben formattata in quanto tale:

http://localhost:8000/myapp/api/application/ 
Problemi correlati