我是doctest的作者,快速和髒doctests爲JavaScript和CoffeeScript。我想通過使用JavaScript解析器而不是正則表達式來定位註釋,從而減少庫的髒問題。替換JavaScript中的評論AST與從評論的內容派生的子樹
- 創建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
來獲得評論,但我不知道如何更新樹。
你試過[JSShaper](https://github.com/olov/jsshaper)嗎? –
我不知道那個項目。看起來很有希望。 – davidchambers