added option to keep some comments in the output
This commit is contained in:
@@ -58,6 +58,7 @@ function OutputStream(options) {
|
|||||||
beautify : false,
|
beautify : false,
|
||||||
source_map : null,
|
source_map : null,
|
||||||
bracketize : false,
|
bracketize : false,
|
||||||
|
comments : false
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
var indentation = 0;
|
var indentation = 0;
|
||||||
@@ -309,10 +310,12 @@ function OutputStream(options) {
|
|||||||
stream.push_node(self);
|
stream.push_node(self);
|
||||||
if (self.needs_parens(stream)) {
|
if (self.needs_parens(stream)) {
|
||||||
stream.with_parens(function(){
|
stream.with_parens(function(){
|
||||||
|
self.add_comments(stream);
|
||||||
self.add_source_map(stream);
|
self.add_source_map(stream);
|
||||||
generator(self, stream);
|
generator(self, stream);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
self.add_comments(stream);
|
||||||
self.add_source_map(stream);
|
self.add_source_map(stream);
|
||||||
generator(self, stream);
|
generator(self, stream);
|
||||||
}
|
}
|
||||||
@@ -326,12 +329,49 @@ function OutputStream(options) {
|
|||||||
return s.get();
|
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) {
|
function PARENS(nodetype, func) {
|
||||||
nodetype.DEFMETHOD("needs_parens", func);
|
nodetype.DEFMETHOD("needs_parens", func);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* -----[ PARENTHESES ]----- */
|
|
||||||
|
|
||||||
PARENS(AST_Node, function(){
|
PARENS(AST_Node, function(){
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user