Compare commits

...

5 Commits

Author SHA1 Message Date
Mihai Bazon
f652372c9a v2.3.5 2013-05-19 14:25:05 +03:00
Mihai Bazon
ad1fc3b71a Fix package.json (use repository instead of repositories) 2013-05-19 14:24:33 +03:00
Mihai Bazon
2b40a5ac62 v2.3.4 2013-05-15 13:27:40 +03:00
Mihai Bazon
ca3388cf5a Add --expr, an option to parse a single expression (suitable for JSON) 2013-05-15 13:27:23 +03:00
Mihai Bazon
caa8896a8a Only compress code in new Function if all arguments are strings. 2013-05-14 18:36:31 +03:00
5 changed files with 25 additions and 9 deletions

View File

@@ -23,6 +23,7 @@ mangling you need to use `-c` and `-m`.\
.describe("source-map-url", "The path to the source map to be added in //@ sourceMappingURL. Defaults to the value passed with --source-map.")
.describe("in-source-map", "Input source map, useful if you're compressing JS that was generated from some other original code.")
.describe("screw-ie8", "Pass this flag if you don't care about full compliance with Internet Explorer 6-8 quirks (by default UglifyJS will try to be IE-proof).")
.describe("expr", "Parse a single expression, rather than a program (for parsing JSON)")
.describe("p", "Skip prefix for original filenames that appear in source maps. \
For example -p 3 will drop 3 directories from file names and ensure they are relative paths.")
.describe("o", "Output file (default STDOUT).")
@@ -76,6 +77,8 @@ You need to pass an argument to this option to specify the name that your module
.string("e")
.string("comments")
.string("wrap")
.boolean("expr")
.boolean("screw-ie8")
.boolean("export-all")
.boolean("self")
@@ -242,8 +245,9 @@ async.eachLimit(files, 1, function (file, cb) {
}
else {
TOPLEVEL = UglifyJS.parse(code, {
filename: file,
toplevel: TOPLEVEL
filename : file,
toplevel : TOPLEVEL,
expression : ARGS.expr,
});
};
});

View File

@@ -1590,7 +1590,7 @@ merge(Compressor.prototype, {
right: make_node(AST_String, self, { value: "" })
});
case "Function":
if (self.args[self.args.length - 1] instanceof AST_String) {
if (all(self.args, function(x){ return x instanceof AST_String })) {
// quite a corner-case, but we can handle it:
// https://github.com/mishoo/UglifyJS2/issues/203
// if the code argument is a constant, then we can minify it.

View File

@@ -588,9 +588,10 @@ var ATOMIC_START_TOKEN = array_to_hash([ "atom", "num", "string", "regexp", "nam
function parse($TEXT, options) {
options = defaults(options, {
strict : false,
filename : null,
toplevel : null
strict : false,
filename : null,
toplevel : null,
expression : false
});
var S = {
@@ -1386,6 +1387,10 @@ function parse($TEXT, options) {
return ret;
};
if (options.expression) {
return expression(true);
}
return (function(){
var start = S.token;
var body = [];

View File

@@ -245,6 +245,13 @@ function makePredicate(words) {
return new Function("str", f);
};
function all(array, predicate) {
for (var i = array.length; --i >= 0;)
if (!predicate(array[i]))
return false;
return true;
};
function Dictionary() {
this._values = Object.create(null);
this._size = 0;

View File

@@ -3,17 +3,17 @@
"description": "JavaScript parser, mangler/compressor and beautifier toolkit",
"homepage": "http://lisperator.net/uglifyjs",
"main": "tools/node.js",
"version": "2.3.3",
"version": "2.3.5",
"engines": { "node" : ">=0.4.0" },
"maintainers": [{
"name": "Mihai Bazon",
"email": "mihai.bazon@gmail.com",
"web": "http://lisperator.net/"
}],
"repositories": [{
"repository": {
"type": "git",
"url": "https://github.com/mishoo/UglifyJS2.git"
}],
},
"dependencies": {
"async" : "~0.2.6",
"source-map" : "~0.1.7",