2012-02-15 9 views
6

ServiceStack marca rutas de descanso para servicios web utilizando atributos C#.Doxygen y agregue un valor de un atributo a la documentación de salida

Por ejemplo

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

me gustaría hacer Doxygen incluyen valores del atributo RestService en la salida doxygen para la clase Hola. No me preocupa demasiado el formato bonito si la línea completa con corchetes está incluida en el documento de salida.

¿Alguna sugerencia?

Un truco rápido y sucio sería una preferible escribir una extensión Doxygen;)

Saludos

Tymek

==== EDITAR

versión

El Python (por lo que va a funcionar en Windows fácilmente) de doxygen la respuesta del usuario sería:

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

y la DOXYFILE tendría:

INPUT_FILTER   = "doxygenFilter.py" 

Respuesta

8

Usted podría hacer un filtro de entrada que convierte una línea con

[RestService("/hello1")] 

a

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

como por ejemplo poniendo siguiente fragmento de perl magic en un archivo llamado filter.pl:

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

y el uso que con la etiqueta INPUT_FILTER en el Doxyfile:

INPUT_FILTER   = "perl filter.pl" 
Cuestiones relacionadas