2012-09-21 18 views
13

Tôi hiện đang ghi lại một API còn lại được viết bằng Python. Tất cả tài liệu của dự án được tạo ra bằng cách sử dụng Sphinx, và cho REST API tôi muốn tạo ra một số chỉ thị đặc biệt. Ví dụ: giả sử tôi có tài nguyên này được xác định:Cách tạo chỉ thị tùy chỉnh trong 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 

Về cơ bản, tài liệu đó trông như thế nào. Tôi muốn có thể tạo ra một chỉ thị cho Sphinx định dạng một hoặc nhiều trong số :query_param ...: giống như nó với :param: thông thường.

Tôi đã tìm thấy cách tạo vai trò, nhưng chúng chỉ hoạt động nội tuyến chứ không phải cho các khối dữ liệu.

Làm thế nào tôi nên thực hiện việc này?

+1

Bạn có thể muốn hỏi này trên [Google Group Sphinx] (https://groups.google.com/forum/?fromgroups#!forum/sphinx-dev). Ai đó có thể có nhiều khả năng trả lời câu hỏi hơn. Off-hand, tôi không chắc chắn cách xử lý các khối tài liệu. Bạn chắc chắn có thể [tạo phần mở rộng trong Sphinx/docutils] (http://sphinx.pocoo.org/extensions.html), nhưng tôi không chắc chắn cách phân tích cú pháp docstring phù hợp với mô hình Sphinx/docutils. – jszakmeister

+0

Câu trả lời có thể liên quan đến việc sử dụng [GroupedField] (https://bitbucket.org/birkenfeld/sphinx/src/1f3a2749df39/sphinx/util/docfields.py#cl-74) trong phần mở rộng của bạn. – jszakmeister

Trả lời

10

Nhân sư có thể được mở rộng với chỉ thị tùy chỉnh qua "Sphinx Extensions". Tức là, bạn sẽ cần phải triển khai một phần mở rộng Sphinx cung cấp chỉ thị tùy chỉnh query_param và thêm phần mở rộng này vào dự án Sphinx của bạn.

Tài liệu nhân sư cung cấp a tutorial về việc triển khai tiện ích, trong đó chúng thực hiện chỉ thị tùy chỉnh thực sự.

tham khảo:

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

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