Pergunta

Em relação a esta questão , I queria saber se alguém sabe um trecho de código javascript / biblioteca para converter um único comentário doxygen para HTML?

Por exemplo,

/** This is a comment block
 *
 * \b bold text
 * \i italic text
 */

seria convertido para algo como:

<p>This is a comment block</p>
<p><b>bold</b> text</p>
<p><i>italic</i> text</p>

Semelhante para todas as outras tags de formatação relacionadas de doxygen.

Eu encontrei já esta , o que parece ser uma boa partida ponto, se eu tenho que implementar isso sozinho, mas possivelmente eu estou faltando um projeto completo: -)

Assim, sugestões bem-vindos!

Foi útil?

Solução

Aproveitando uma ferramenta / base de código existente que faz, pelo menos, parte do que você quer é a sua melhor aposta. Análise não é um problema fácil, especialmente encontrar comentários doxygen em código, especialmente se você está lidando com vários idiomas. Uma busca rápida não apareceu nenhum projeto terrivelmente óbvio, mas se você está disposto a criar o seu próprio caso de necessidade, eu sugiro começar com o doxygen codebase si. É open-source, e disponível via SVN ou download direto . Tenha em mente que doxygen é escrito em C ++, mas se você pode acompanhar as ações do analisador (talvez apenas para um idioma específico) poderia conservá-lo toneladas de trabalho e evitar faltando casos de canto, etc. Tudo depende de quão robusta você quer que seu solução para ser, e se ele vai ser só você usá-lo, ou se você pode acabar apoiando-lo para os outros. Boa sorte!

Outras dicas

 function commentToTag(comment) {
 
 var header = null;
 var commentHtml = '';
 
 comment.split('\n').forEach(function (i) {
 		var array = i.split(' ');
    do {
 				var index = array.indexOf('');
				if (index !== -1) array.splice(index, 1);
 				index = array.indexOf('');
    } while (index !== -1);
    do {
 				var index = array.indexOf('*');
				if (index !== -1) array.splice(index, 1);
 				index = array.indexOf('*');
    } while (index !== -1);
    do {
 				var index = array.indexOf('/**');
				if (index !== -1) array.splice(index, 3);
 				index = array.indexOf('/**');
    } while (index !== -1);
    do {
 				var index = array.indexOf('*/');
				if (index !== -1) array.splice(index, 2);
 				index = array.indexOf('*/');
    } while (index !== -1);
    if (array.length === 0) return;
    if (header === null) {
    		header = "<p>" + array.join(' ') + "</p>\n";
        return;
    }
    const tag = array.splice(0, 1);
    commentHtml += "<p><"+tag + ">"+array.splice(0,1)+"</" +tag+ ">" + array.join(' ') + '</p>\n';
    
    
 });
 return header + commentHtml;
 
 }
 
 var comment = `/** This is a comment block
 *
 * \i bold text
 * \i italic text
 */`;
 console.log(commentToTag(comment));

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top