Фрагмент Javascript для преобразования комментариев в стиле Doxygen в HTML - PullRequest
3 голосов
/ 07 июня 2009

Что касается этого вопроса , мне было интересно, знает ли кто-нибудь фрагмент кода / библиотеку javascript для преобразования одного комментария doxygen в HTML?

Например,

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

будет преобразовано во что-то вроде:

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

Аналогично для всех других тегов doxygen, связанных с форматированием.

Я уже нашел этот , что, кажется, является хорошей отправной точкой, если мне придется реализовать его самостоятельно, но, возможно, я пропускаю полный проект: -)

Итак, предложения приветствуются!

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

 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));
0 голосов
/ 14 июня 2009

Использование существующего инструмента / кодовой базы, которая делает по крайней мере часть того, что вы хотите, является вашей лучшей ставкой. Синтаксический анализ - непростая проблема, особенно поиск комментариев в коде, особенно если вы работаете с несколькими языками. Быстрый поиск не привел к появлению каких-либо ужасно очевидных проектов, но если вы хотите создать свой собственный в случае необходимости, я бы предложил начать с самой базы кода doxygen. Это с открытым исходным кодом, и доступны через SVN или прямая загрузка . Имейте в виду, что doxygen написан на C ++, но если вы сможете следить за действиями синтаксического анализатора (возможно, только для определенного языка), это может сэкономить вам массу работы и предотвратить пропущенные угловые случаи и т. Д. Все зависит от того, насколько надежным вы хотите решение будет, и если это будет только вы используете его, или если вы можете в конечном итоге поддержать его для других. Удачи!

...