2012-02-15 5 views
6

ServiceStack contrassegna i percorsi di riposo per i servizi Web utilizzando gli attributi C#.Doxygen e aggiunta di un valore di un attributo alla documentazione di output

Per esempio

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

vorrei fare Doxygen comprendono valori dell'attributo RestService nell'output Doxygen per la classe Ciao. Non mi interessa troppo con una formattazione carina se la riga intera con parentesi è inclusa nel documento di output.

Qualche suggerimento?

Un trucco rapido e sporco sarebbe preferibile crei un'estensione Doxygen;)

Acclamazioni

Tymek

==== EDIT

Python versione (così funzionerà su Windows facilmente) di doxygen la risposta dell'utente sarebbe:

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

e la DOXYFILE avrebbe:

INPUT_FILTER   = "doxygenFilter.py" 

risposta

8

Si potrebbe fare un filtro di ingresso che converte una linea con

[RestService("/hello1")] 

a

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

come ad esempio mettendo seguente pezzo di magia perl in un file chiamato filter.pl:

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

e l'uso che con il tag INPUT_FILTER nella Doxyfile:

INPUT_FILTER   = "perl filter.pl"