Tôi là tác giả của doctest, nhanh chóng và bẩn doctests cho JavaScript và CoffeeScript. Tôi muốn làm cho thư viện ít bẩn hơn bằng cách sử dụng trình phân tích cú pháp JavaScript thay vì cụm từ thông dụng để định vị nhận xét.Thay thế nhận xét trong JavaScript AST bằng subtree bắt nguồn từ nội dung của nhận xét
Tôi muốn sử dụng Esprima hoặc Acorn phải làm như sau:
- Tạo một AST
- Walk cây, và cho mỗi nút bình luận:
- Tạo một AST từ bình luận văn bản của nút
- Thay thế nút nhận xét trong cây chính bằng cây con này
Input:
!function() {
// > toUsername("Jesper Nøhr")
// "jespernhr"
var toUsername = function(text) {
return ('' + text).replace(/\W/g, '').toLowerCase()
}
}()
Output:
!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()
}
}()
Tôi không biết làm thế nào để làm điều này. Acorn cung cấp một số walker có kiểu nút và một hàm, và đi vào cây gọi hàm này mỗi khi một nút của kiểu xác định được gặp phải. Điều này có vẻ đầy hứa hẹn nhưng không áp dụng cho nhận xét.
Với Esprima tôi có thể sử dụng esprima.parse(input, {comment: true, loc: true}).comments
để nhận các nhận xét, nhưng tôi không biết cách cập nhật cây.
Bạn đã thử [JSShaper] (https://github.com/olov/jsshaper) chưa? –
Tôi không biết về dự án đó. Có vẻ đầy hứa hẹn. – davidchambers