Có reST Writer cho docutil.nodes cây? Tôi không thể tìm thấy một nhưng có lẽ tôi đang thiếu một cái gì đó hiển nhiên. Hoặc là nó tầm thường để viết một mình? Tôi muốn thực hiện các phép chuyển đổi reST-to-reST.Có một người viết lại?
Trả lời
Không có gì, và thật khó, nếu không thể thực hiện được, vượt quá đánh dấu ReST tầm thường.
Vai trò và chỉ thị ReST có thể thực thi mã tùy ý tại thời gian phân tích. Đặc biệt là một vai trò hoặc chỉ thị có thể tạo và chèn các nút của các loại tùy ý với nội dung tùy ý vào cây tài liệu. Do đó không có ánh xạ trực tiếp giữa một cây tài liệu và mã nguồn ReST và do đó không thể lấy mã nguồn gốc ReST - hoặc ít nhất là một cái gì đó đến gần - đối với một cây tài liệu tùy ý.
Ví dụ về thế giới thực là các chỉ thị khác nhau từ Sphinx, ví dụ: py:class
. Các chỉ thị này chèn các nút pending_xref
vào cây tài liệu được giải quyết thành các tham chiếu chéo thực tại một thời điểm sau đó. Tuy nhiên, không có chỉ thị đơn nào tương ứng với nút pending_xref
do đó không có nguồn ReST tương ứng trực tiếp với cây tài liệu chứa các nút như vậy.
Người ta có thể triển khai một nhà văn để đánh dấu đơn giản ReST tiêu chuẩn, tức là tiêu đề, đoạn văn, nhấn mạnh và các nội dung tương tự. Tôi không biết thực hiện bất kỳ nhưng đó là tầm thường để làm trên chính mình. Điều đó có thể hoặc có thể không đủ cho mục đích của bạn.
Nếu tài liệu của bạn có chứa vai trò, chỉ thị hoặc thay thế hoàn thành việc chuyển đổi ReST-to-ReST là không thể. Tuy nhiên, bạn có thể sắp xếp gian lận bằng cách hủy đăng ký tất cả các vai trò và chỉ thị trước, sau đó đăng ký một chức năng nắm bắt tất cả các vai trò và chỉ thị và bảo toàn chúng theo nghĩa đen trong cây tài liệu. Dựa trên một cây như vậy, bạn có thể khôi phục nguồn (hoặc ít nhất là gần với điều này). Tuy nhiên, các thay thế bị mất, bởi vì chúng được áp dụng ở giai đoạn đầu của phân tích cú pháp và không xuất hiện trong cây kết quả.
+1 Câu trả lời hay, cảm ơn. – ThomasH