我是doctest,一个用于JavaScript和CoffeeScript的快速而简单的doctests工具的作者。我想通过使用JavaScript解析器而不是正则表达式来定位注释,使该库更加简洁。
我想使用Esprima或Acorn来完成以下任务:
我不知道怎么做。Acorn提供了一个walker,它需要一个节点类型和一个函数,并遍历树,在遇到指定类型的节点时调用该函数。这看起来很有希望,但不适用于注释。
使用Esprima,我可以使用
我想使用Esprima或Acorn来完成以下任务:
- 创建AST
- 遍历树,并对于每个注释节点:
- 从注释节点的文本中创建AST
- 使用这个子树替换主树中的注释节点
!function() {
// > toUsername("Jesper Nøhr")
// "jespernhr"
var toUsername = function(text) {
return ('' + text).replace(/\W/g, '').toLowerCase()
}
}()
输出:
!function() {
doctest.input(function() {
return toUsername("Jesper Nøhr")
});
doctest.output(4, function() {
return "jespernhr"
});
var toUsername = function(text) {
return ('' + text).replace(/\W/g, '').toLowerCase()
}
}()
我不知道怎么做。Acorn提供了一个walker,它需要一个节点类型和一个函数,并遍历树,在遇到指定类型的节点时调用该函数。这看起来很有希望,但不适用于注释。
使用Esprima,我可以使用
esprima.parse(input, {comment: true, loc: true}).comments
获取注释,但我不确定如何更新树。