2012-04-05 24 views
15

Tôi đã có những điều sau đây trong conf.py:Làm cách nào để xuất một giá trị cấu hình trong tệp .rst Nhân sư?

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

Làm thế nào để có được điều này vào các tập tin .rst của tôi? Tôi đã viết điều này:

:base_url:/my_app/api/application/ 

Nhưng nó chỉ in :base_url: thay vì URL thực tế.

Làm cách nào để nhận được giá trị cấu hình thực tế được phát ra?

+0

Vì vậy, hiện tại chúng tôi đã làm điều gì đó rất kludgy. Chúng tôi có một tập lệnh đơn giản thực hiện tìm kiếm -exec sed trên các tài liệu được tạo, thay đổi các URL được đề cập. Vì vậy, nó hoạt động, nhưng ... –

+0

có thể trùng lặp của [Thay thế bên trong liên kết trong reST/Sphinx] (http://stackoverflow.com/questions/1227037/substitutions-inside-links-in-rest-sphinx) – ideasman42

Trả lời

17

Đối với việc thay thế liên kết extlinks là tốt, cho bao gồm cả giá trị cấu hình tùy ý như hỏi trong câu hỏi của bạn, bạn có thể sử dụng rst_epilog cho thay thế (hoặc rst_prolog cho văn bản, mà nên được bổ sung trên đầu trang của file .rst của bạn):

Trong conf.py của bạn:

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

Trong nguồn .rst của bạn:

Giá trị cấu hình của tôi là | my_conf_val |!

Trong đầu ra của bạn:

giá trị cấu hình của tôi là 42!

+0

Ok cảm ơn, điều này có khả năng. Một vấn đề tôi đã nhận thấy với các extlinks là tôi không thể sử dụng nó ở giữa một khối mã. Sau đó nó chỉ xuất ra ": api_url:" thay vì thay thế. Sẽ ** rst_epilog ** xử lý tốt hơn? –

+0

Tôi vừa thử nó, nhưng nó không hoạt động trong các khối mã. Có lẽ đây là một lỗi trong docutils, như sphinx dựa vào docutils thay thế ở đây (và tôi nghĩ rằng extlinks to). – bmu

+0

Tôi sẽ tiếp tục hack nó. Cảm ơn câu trả lời. Nó tổng quát hơn tôi nên bạn có được phiếu bầu. –

3

Ah hah!

Hãy nhìn vào các sphinx.ext.extlinks mô-đun ở http://sphinx.pocoo.org/ext/extlinks.html

Vì vậy, tôi có mã trong conf.py tôi thực hiện điều này:

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

Và trong tập tin .rst của tôi, tôi có điều này:

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

trong đó sản xuất các liên kết độc đáo được định dạng như vậy:

http://localhost:8000/myapp/api/application/ 
Các vấn đề liên quan