0

我希望通过某种 Alias 命令自动创建组层次结构。例如,我想要群组

  • 扩展方法
    • 字符串扩展
    • 流扩展
    • ...

使用 doxygen 注释创建,例如

/** Documentation for the method
 *  \extension{string} 
 */
public void ExtensionMethod(this string str){
   ... 
}

哪里\extension{string}会映射到类似的东西

\addtogroup stringExtensions string Extensions
\ingroup ExtnMethods

不幸的是,这意味着为该方法编写的所有文档都与该组相关联。

我最接近的是,如果你有类似的东西

/** \addtogroup stringExtensions string Extensions
 *  \ingroup ExtnMethods
 *  \@{
 *  \@}
 */

/** \ingroup stringExtensions
 *  Documentation for the method
 */ 
public void ExtensionMethod(this string str){
   ... 
}

它会起作用,但这需要2个单独的注释块,我找不到使用别名的任何方法。

我知道使用输入过滤器可能可以实现某些目标 - 但我希望可以实现更简单的目标。

4

1 回答 1

0

我使用 inputfilters 找到了一个比我最初设想的更简洁的答案 - 解析整个文件寻找\extension{...},用适当的\ingroup命令替换它,然后\addgroup在文件底部附加所需的命令。

然后可以将其作为输入过滤器运行

以下是执行此操作的 python 脚本。请注意,它不会检查它所替换的内容实际上是否在 doxygen 注释中,但对于我的目的来说已经足够了。

#!python

import sys, re


if(len(sys.argv) != 2):
    print "Need exactly one argument, the file to filter"
    exit(1)

extnFinder = re.compile("\\\\extension{(\w+)}")
extnTypes = set();

filename = sys.argv[1]

fileIn = open(filename, "r")

line = fileIn.readline()


def extnSub(matchobj):
    extnTypes.add(matchobj.group(1))
    return "\ingroup %(extn)sExtensions" % {'extn':matchobj.group(1)}


while line:    
    matches = extnFinder.findall(line)
    sys.stdout.write(re.sub(extnFinder,extnSub,line))
    line = fileIn.readline()

for extn in extnTypes:
    print "\n\n/**\\addtogroup %(extn)sExtensions %(extn)s Extensions\n\\ingroup ExtnMethods\n */\n" % {'extn':extn}
于 2013-03-19T09:52:44.063 回答