代码之家  ›  专栏  ›  技术社区  ›  Tobi

将doxygen样式注释转换为html的javascript代码段

  •  3
  • Tobi  · 技术社区  · 15 年前

    关于 this question 我想知道是否有人知道将单个doxygen注释转换为HTML的javascript代码段/库?

    例如,

    /** 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标签类似。

    我找到了 this 已经,如果我必须自己实现它,这似乎是一个很好的起点,但可能我错过了一个完整的项目:—)

    所以,欢迎提出建议!

    2 回复  |  直到 6 年前
        1
  •  0
  •   albert    6 年前

    利用现有的工具/代码库 部分 你想要的是你最好的赌注。解析并不是一个简单的问题,特别是在代码中查找doxygen注释,特别是在处理多种语言的情况下。快速搜索并没有发现任何非常明显的项目,但是如果您愿意在需要时创建自己的项目,我建议从doxygen代码库本身开始。它是开源的,可通过 SVN direct download . 请记住,DoXEGEN是用C++编写的,但是如果你可以遵循解析器的动作(也许只针对特定的语言),它可以节省大量的工作并防止丢失的拐角情况等等。这取决于你希望你的解决方案是多么的坚固,如果你只使用它,或者你可以最终支持它。祝你好运!

        2
  •  0
  •   Keith Becker    6 年前

     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));