Allow sequences maximum length to be user configurable.
This commit is contained in:
@@ -291,7 +291,12 @@ you can pass a comma-separated list of options. Options are in the form
|
|||||||
`foo=bar`, or just `foo` (the latter implies a boolean option that you want
|
`foo=bar`, or just `foo` (the latter implies a boolean option that you want
|
||||||
to set `true`; it's effectively a shortcut for `foo=true`).
|
to set `true`; it's effectively a shortcut for `foo=true`).
|
||||||
|
|
||||||
- `sequences` -- join consecutive simple statements using the comma operator
|
- `sequences` (default: true) -- join consecutive simple statements using the
|
||||||
|
comma operator. May be set to a positive integer to specify the maximum number
|
||||||
|
of consecutive comma sequences that will be generated. If this option is set to
|
||||||
|
`true` then the default sequences limit is `2000`. Set option to `false` or `0`
|
||||||
|
to disable. On rare occasions the default sequences limit leads to very slow
|
||||||
|
compress times in which case a value of `20` or less is recommended.
|
||||||
|
|
||||||
- `properties` -- rewrite property access using the dot notation, for
|
- `properties` -- rewrite property access using the dot notation, for
|
||||||
example `foo["bar"] → foo.bar`
|
example `foo["bar"] → foo.bar`
|
||||||
|
|||||||
@@ -79,6 +79,8 @@ function Compressor(options, false_by_default) {
|
|||||||
global_defs : {},
|
global_defs : {},
|
||||||
passes : 1,
|
passes : 1,
|
||||||
}, true);
|
}, true);
|
||||||
|
var sequences = this.options["sequences"];
|
||||||
|
this.sequences_limit = sequences == 1 ? 2000 : sequences | 0;
|
||||||
this.warnings_produced = {};
|
this.warnings_produced = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -266,7 +268,7 @@ merge(Compressor.prototype, {
|
|||||||
if (compressor.option("if_return")) {
|
if (compressor.option("if_return")) {
|
||||||
statements = handle_if_return(statements, compressor);
|
statements = handle_if_return(statements, compressor);
|
||||||
}
|
}
|
||||||
if (compressor.option("sequences")) {
|
if (compressor.sequences_limit > 0) {
|
||||||
statements = sequencesize(statements, compressor);
|
statements = sequencesize(statements, compressor);
|
||||||
}
|
}
|
||||||
if (compressor.option("join_vars")) {
|
if (compressor.option("join_vars")) {
|
||||||
@@ -721,7 +723,7 @@ merge(Compressor.prototype, {
|
|||||||
seq = [];
|
seq = [];
|
||||||
};
|
};
|
||||||
statements.forEach(function(stat){
|
statements.forEach(function(stat){
|
||||||
if (stat instanceof AST_SimpleStatement && seqLength(seq) < 2000) {
|
if (stat instanceof AST_SimpleStatement && seqLength(seq) < compressor.sequences_limit) {
|
||||||
seq.push(stat.body);
|
seq.push(stat.body);
|
||||||
} else {
|
} else {
|
||||||
push_seq();
|
push_seq();
|
||||||
|
|||||||
Reference in New Issue
Block a user