big speed improvement (observable when beautify = false)
who would have thought that str.charAt(str.length - 1) is not a constant, instant operation? seems to get slower and slower as the string grows. 0.6s vs. 3s
This commit is contained in:
@@ -68,22 +68,21 @@ function OutputStream(options) {
|
|||||||
return repeat_string(" ", options.indent_start + indentation - back * options.indent_level);
|
return repeat_string(" ", options.indent_start + indentation - back * options.indent_level);
|
||||||
};
|
};
|
||||||
|
|
||||||
function last_char() {
|
|
||||||
return OUTPUT.charAt(OUTPUT.length - 1);
|
|
||||||
};
|
|
||||||
|
|
||||||
/* -----[ beautification/minification ]----- */
|
/* -----[ beautification/minification ]----- */
|
||||||
|
|
||||||
var might_need_space = false;
|
var might_need_space = false;
|
||||||
var might_need_semicolon = false;
|
var might_need_semicolon = false;
|
||||||
var last = null;
|
var last = null;
|
||||||
|
|
||||||
|
function last_char() {
|
||||||
|
return last.charAt(last.length - 1);
|
||||||
|
};
|
||||||
|
|
||||||
function print(str) {
|
function print(str) {
|
||||||
last = str;
|
|
||||||
str = String(str);
|
str = String(str);
|
||||||
var ch = str.charAt(0);
|
var ch = str.charAt(0);
|
||||||
if (might_need_semicolon) {
|
if (might_need_semicolon) {
|
||||||
if (";}".indexOf(ch) < 0 && !/[;]$/.test(OUTPUT)) {
|
if (";}".indexOf(ch) < 0 && !/[;]$/.test(last)) {
|
||||||
OUTPUT += ";";
|
OUTPUT += ";";
|
||||||
current_col++;
|
current_col++;
|
||||||
current_pos++;
|
current_pos++;
|
||||||
@@ -96,7 +95,7 @@ function OutputStream(options) {
|
|||||||
if ((is_identifier_char(last_char())
|
if ((is_identifier_char(last_char())
|
||||||
&& (is_identifier_char(ch) || ch == "\\"))
|
&& (is_identifier_char(ch) || ch == "\\"))
|
||||||
||
|
||
|
||||||
(/[\+\-]$/.test(OUTPUT) && /^[\+\-]/.test(str)))
|
(/[\+\-]$/.test(last) && /^[\+\-]/.test(str)))
|
||||||
{
|
{
|
||||||
OUTPUT += " ";
|
OUTPUT += " ";
|
||||||
current_col++;
|
current_col++;
|
||||||
@@ -112,6 +111,7 @@ function OutputStream(options) {
|
|||||||
current_col += a[n - 1].length;
|
current_col += a[n - 1].length;
|
||||||
}
|
}
|
||||||
current_pos += str.length;
|
current_pos += str.length;
|
||||||
|
last = str;
|
||||||
OUTPUT += str;
|
OUTPUT += str;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -682,8 +682,9 @@ function OutputStream(options) {
|
|||||||
output.print("]");
|
output.print("]");
|
||||||
});
|
});
|
||||||
DEFPRINT(AST_UnaryPrefix, function(self, output){
|
DEFPRINT(AST_UnaryPrefix, function(self, output){
|
||||||
output.print(self.operator);
|
var op = self.operator;
|
||||||
if (is_alphanumeric_char(self.operator.charAt(0)))
|
output.print(op);
|
||||||
|
if (/^[a-z]/i.test(op))
|
||||||
output.space();
|
output.space();
|
||||||
self.expression.print(output);
|
self.expression.print(output);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user