2011-11-14 20 views
7

Tôi muốn có thể phân tích cú pháp dựa trên sphinx trong Python để tiếp tục xử lý và kiểm tra. Một cái gì đó như:Phân tích cú pháp tệp .rst với chỉ thị Sphinx cụ thể theo lập trình

import sphinx 
p = sphinx.parse("/path/to/file.rst") 
do_something_with(p) 

Dường như một cái gì đó là có thể trong docutils sử dụng docutils.core.publish_file:

publish_file(open("/path/to/file.rst") 

Nhưng điều đó không biết gì về chỉ thị cụ thể nhân sư vv ...

Trả lời

8

Bạn có thể sử dụng Sphinx Extensions để xử lý tùy chỉnh trước khi viết cuối cùng. Có một dự án ví dụ bắt đầu rất tốt trong tài liệu thảo luận về các móc khác nhau cho phép bạn tùy biến Sphinx.

Tùy thuộc vào những gì bạn đang cố gắng làm, bạn có thể cần phải cung cấp chức năng do_something làm đối số gọi lại cho một trong các sự kiện này.

doctree-resolved(app, doctree, docname) 
html-page-context(app, pagename, templatename, context, doctree) 

Và sau đó bạn có thể kéo dài Sphinx như sau

def setup(app): 
    app.connect('doctree-resolved', do_something) 

Nếu ví dụ trong hướng dẫn Sphinx không đủ chi tiết, Doug Hellmann cũng có một blog post về việc tạo ra một kiểm tra chính tả cho Sphinx. Tôi tìm thấy nó là một tài liệu tham khảo hữu ích cho phần mở rộng Sphinx tôi đã phải viết một lúc trở lại.

Các vấn đề liên quan