2012-02-15 19 views
6

ServiceStack đánh dấu đường dẫn còn lại cho các dịch vụ web bằng cách sử dụng các thuộc tính C#.Doxygen và thêm giá trị của thuộc tính vào tài liệu đầu ra

Ví dụ

[RestService("/hello1")] 
[RestService("/hello2")] 
public class Hello 

Tôi muốn thực hiện Doxygen bao gồm giá trị của các thuộc tính RestService trong đầu ra doxygen cho lớp Hello. Tôi không quan tâm quá nhiều với formattin khá nếu dòng đầy đủ với dấu ngoặc đơn được bao gồm trong tài liệu đầu ra.

Mọi đề xuất?

Một thủ thuật nhanh chóng và bẩn sẽ là một lợi thế để viết một phần mở rộng Doxygen;)

Cheers

Tymek

==== EDIT

phiên bản

Các Python (như vậy sẽ làm việc trên Windows dễ dàng) của doxygen câu trả lời của người dùng sẽ là:

#!/usr/bin/env python 
import sys 
import re 

if (len(sys.argv) < 2): 
    print "No input file" 
else: 
    f = open(sys.argv[1]) 
    line = f.readline() 
    while line: 
     re1 = re.compile("\[RestService\(\"(.*)\",.*\"(.*)\"\)]") 
     re1.search(line) 
     sys.stdout.write(re1.sub(r"/** \\b RestService: \2 \1\\n */\n", line)) 
     #sys.stdout.write(line) 
     line = f.readline() 
    f.close() 

và DOXYFILE sẽ có:

INPUT_FILTER   = "doxygenFilter.py" 

Trả lời

8

Bạn có thể làm một bộ lọc đầu vào có thể chuyển đổi một phù hợp với

[RestService("/hello1")] 

để

/** \b RestService: "/hello1"\n */ 

như ví dụ bằng cách đặt mảnh sau ma thuật perl trong một tệp có tên là filter.pl:

open(F, "<", $ARGV[0]); 
while(<F>) { /^\s*\[RestService\((.*)\)\]\s*$/ ? 
      print "/** \\b RestService: $1\\n */\n" : print $_; } 

và sử dụng rằng với INPUT_FILTER thẻ trong Doxyfile:

INPUT_FILTER   = "perl filter.pl"