added option to keep some comments in the output

This commit is contained in:
Mihai Bazon
2012-10-02 14:32:30 +03:00
parent 36be211e99
commit 2a5456260e

View File

@@ -58,6 +58,7 @@ function OutputStream(options) {
beautify : false,
source_map : null,
bracketize : false,
comments : false
}, true);
var indentation = 0;
@@ -309,10 +310,12 @@ function OutputStream(options) {
stream.push_node(self);
if (self.needs_parens(stream)) {
stream.with_parens(function(){
self.add_comments(stream);
self.add_source_map(stream);
generator(self, stream);
});
} else {
self.add_comments(stream);
self.add_source_map(stream);
generator(self, stream);
}
@@ -326,12 +329,49 @@ function OutputStream(options) {
return s.get();
});
/* -----[ comments ]----- */
AST_Node.DEFMETHOD("add_comments", function(output){
var c = output.option("comments"), self = this;
if (c) {
var start = self.start;
if (start && !start._comments_dumped) {
start._comments_dumped = true;
var comments = start.comments_before;
if (c.test) {
comments = comments.filter(function(comment){
return c.test(comment.value);
});
} else if (typeof c == "function") {
comments = comments.filter(function(comment){
return c(self, comment.value, comment.type);
});
}
comments.forEach(function(c){
if (c.type == "comment1") {
output.print("//" + c.value + "\n");
output.indent();
}
else if (c.type == "comment2") {
output.print("/*" + c.value + "*/");
if (start.nlb) {
output.print("\n");
output.indent();
} else {
output.space();
}
}
});
}
}
});
/* -----[ PARENTHESES ]----- */
function PARENS(nodetype, func) {
nodetype.DEFMETHOD("needs_parens", func);
};
/* -----[ PARENTHESES ]----- */
PARENS(AST_Node, function(){
return false;
});