Doxygen и добавьте значение атрибута в выходную документацию - PullRequest
8 голосов
/ 15 февраля 2012

ServiceStack отмечает пути покоя для веб-сервисов, используя атрибуты c #.

Например

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

Я бы хотел, чтобы Doxygen включал значения атрибута RestService в вывод doxygen для класса Hello. Меня не слишком волнует форматирование, если в выходной документ включена полная строка со скобками.

Есть предложения?

Быстрый и грязный трюк предпочтительнее написания расширения Doxygen;)

Приветствия

Tymek

==== EDIT

Версия Python (так будет легко работать на Windows) doxygen ответ пользователя будет:

#!/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()

и ДОКСИФИЛЬ будет иметь:

INPUT_FILTER           = "doxygenFilter.py"

1 Ответ

10 голосов
/ 16 февраля 2012

Вы можете создать входной фильтр, который преобразует строку с

[RestService("/hello1")]

в

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

, например, поместив следующий фрагмент магии perl в файл с именем filter.pl:

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

и используйте это с тегом INPUT_FILTER в Doxyfile:

INPUT_FILTER           = "perl filter.pl"
...