我正在尝试从 JavaScript 文件中提取代码注释块。我正在制作一个轻量级的代码文档。
一个例子是:
/** @Method: setSize
* @Description: setSize DESCRIPTION
* @param: setSize PARAMETER
*/
Run Code Online (Sandbox Code Playgroud)
我需要像这样拉出评论设置,最好是放到一个数组中。
我已经做到了这一点,但意识到它可能无法处理新行标签等:
\/\*\*(.*?)\*\/
Run Code Online (Sandbox Code Playgroud)
(好吧,这看起来很简单,但我正在绕圈子试图让它工作。)
根据您想继续使用提取的文档块做什么,可以想到多种方法。如果您只需要没有进一步引用的文档块,String.match() 可能就足够了。否则,您可能需要块的索引。
正如其他人已经指出的那样,javascript 的 RegEx 机器非常强大。如果您习惯了 PCRE,这感觉就像双手被绑在背后工作一样。[\s\S](space-character, non-space-character) 相当于 dotAll - 也捕获换行符。
这应该让你开始:
var string = 'var foo = "bar";'
+ '\n\n'
+ '/** @Method: setSize'
+ '\n * @Description: setSize DESCRIPTION'
+ '\n * @param: setSize PARAMETER'
+ '\n */'
+ '\n'
+ 'function setSize(setSize) { return true; }'
+ '\n\n'
+ '/** @Method: foo'
+ '\n * @Description: foo DESCRIPTION'
+ '\n * @param: bar PARAMETER'
+ '\n */'
+ '\n'
+ 'function foo(bar) { return true; }';
var docblock = /\/\*{2}([\s\S]+?)\*\//g,
trim = function(string){
return string.replace(/^\s+|\s+$/g, '');
},
split = function(string) {
return string.split(/[\r\n]\s*\*\s+/);
};
// extract all doc-blocks
console.log(string.match(docblock));
// extract all doc-blocks with access to character-index
var match;
while (match = docblock.exec(string)) {
console.log(
match.index + " characters from the beginning, found: ",
trim(match[1]),
split(match[1])
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1917 次 |
| 最近记录: |