2012-04-04 27 views
9

Tôi đã có một dự án mà tôi đã ghi lại bằng epydoc. Bây giờ tôi đang cố gắng chuyển sang nhân sư. Tôi đã định dạng tất cả các tài liệu của mình cho epydocs, bằng cách sử dụng B {}, L {} vv để bolding, liên kết và tương tự, và sử dụng @param, @return, @raise vv để giải thích đầu vào, đầu ra, ngoại lệ và các lượt thích.Cách tự động để chuyển từ định dạng chuỗi tài liệu của epydoc sang định dạng chuỗi tài liệu nhân sư?

Vì vậy, bây giờ tôi đang chuyển sang nhân sư, nó mất tất cả các tính năng này. Có cách nào tự động để chuyển đổi docstrings định dạng cho epydocs để docstrings định dạng cho nhân sư?

+2

Xem http://stackoverflow.com/questions/2477909/replacing-python -docstr. Một điều ước rằng người dùng tomaz đã cung cấp thêm một số chi tiết về công cụ chuyển đổi của mình. Có lẽ đó là cùng một anh chàng ở đây: http://www.mail-archive.com/[email protected]/msg03159.html. – mzjn

Trả lời

6

Để mở rộng câu trả lời của Kevin Horn, tài liệu có thể được dịch nhanh chóng trong trình xử lý sự kiện được kích hoạt bởi sự kiện autodoc-process-docstring.

Dưới đây là một minh chứng nhỏ (hãy thử bằng cách thêm mã vào conf.py). Nó thay thế các ký tự @ trong một số phổ biến Epytext fields với :, được sử dụng trong Sphinx fields tương ứng.

import re 

re_field = re.compile('@(param|type|rtype|return)') 

def fix_docstring(app, what, name, obj, options, lines): 
    for i in xrange(len(lines)): 
     lines[i] = re_field.sub(r':\1', lines[i]) 

def setup(app): 
    app.connect('autodoc-process-docstring', fix_docstring) 
+1

Cập nhật: phần mở rộng ** sphinx-epytext ** cung cấp hỗ trợ Epytext cơ bản. Xem https://pypi.python.org/pypi/sphinx-epytext. – mzjn

1

Về lý thuyết, bạn có thể viết phần mở rộng Sphinx sẽ bắt bất kỳ sự kiện nào được kích hoạt khi một chuỗi tài liệu được đọc (source_read, có thể?) Và dịch các tài liệu khi đang di chuyển.

tôi nói về mặt lý thuyết bởi vì:

  1. tôi đã có nghĩa là để viết một điều như vậy trong một thời gian rất dài, nhưng đã không được quản lý để có được xung quanh để nó được nêu ra.
  2. Dịch các nội dung như thế này luôn khó hơn.

Bạn cũng có thể thử thay thế tất cả các tài liệu trong mã của mình bằng trình dịch tương tự bên ngoài Sphinx, có thể sử dụng mô-đun ast hoặc tương tự.

5

Pyment là công cụ có thể chuyển đổi tài liệu Python và tạo bộ xương thiếu. Nó có thể quản lý Google, Epydoc (javadoc phong cách), Numpydoc, reStructuredText (nghỉ ngơi, Sphinx mặc định) các định dạng docstring.

Nó chấp nhận một tệp hoặc một thư mục (khám phá cũng các thư mục con). Đối với mỗi tệp, nó sẽ nhận dạng từng định dạng docstring và chuyển đổi nó thành định dạng mong muốn. Cuối cùng, một bản vá sẽ được tạo để áp dụng cho tệp.

Để chuyển đổi dự án của bạn:

  • cài đặt Pyment

Loại như sau (bạn có thể sử dụng một virtualenv):

$ git clone https://github.com/dadadel/pyment.git 
$ cd pyment 
$ python setup.py install 
  • chuyển đổi từ Epydoc để Nhân sư

Bạn có thể chuyển đổi dự án của bạn sang định dạng Sphinx (phần còn lại), là định dạng đầu ra mặc định, bằng cách thực hiện:

$ pyment /my/folder/project 
+0

Tôi đã chụp ảnh này, nhưng các bản vá được tạo không bao gồm chuỗi '__doc__' và đánh dấu Epydoc như' B {Một số văn bản in đậm} 'vẫn còn trong tệp .patch. Điều đó có được mong đợi không? – Epu

+1

@Epu ý của bạn là "không bao gồm chuỗi __doc__"? Liên quan đến Pyment nó tập trung vào các thẻ không phải là đánh dấu không giống nhau. Nhưng bạn có thể mở một vấn đề để quản lý nó. – daouzli

+0

Ah, vì vậy các trường từ mục 2.6 của http://epydoc.sourceforge.net/epytext.html sẽ được chuyển đổi, nhưng không phải bất kỳ nội dung nào (từ phần 3 đến 3.4)? – Epu

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