私はdoctestの著者です。JavaScriptとCoffeeScriptの場合はdoctestsです。私は、コメントを見つけるために正規表現ではなくJavaScriptパーサを使用することで、ライブラリのダーティを少なくしたいと考えています。私は次の操作を実行するためにEsprimaまたはAcornを使用したい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