uglifier 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of uglifier might be problematic. Click here for more details.
- data/.gitmodules +1 -1
- data/Gemfile +1 -1
- data/README.rdoc +1 -1
- data/VERSION +1 -1
- data/lib/uglifier.rb +3 -2
- data/lib/uglify.js +79 -60
- data/spec/uglifier_spec.rb +7 -0
- data/uglifier.gemspec +6 -6
- metadata +76 -122
data/.gitmodules
CHANGED
data/Gemfile
CHANGED
@@ -19,7 +19,7 @@ gem ENV["MULTI_JSON_ENGINE"], :group => :development if ENV["MULTI_JSON_ENGINE"]
|
|
19
19
|
|
20
20
|
group :development do
|
21
21
|
gem "rspec", "~> 2.7"
|
22
|
-
gem "bundler", "~> 1.0
|
22
|
+
gem "bundler", "~> 1.0"
|
23
23
|
gem "jeweler", "~> 1.6.0"
|
24
24
|
gem "rcov", ">= 0"
|
25
25
|
gem "rdoc", "~> 3.11"
|
data/README.rdoc
CHANGED
@@ -31,7 +31,7 @@ When initializing UglifyJS, you can tune the behavior of UglifyJS by passing opt
|
|
31
31
|
|
32
32
|
Available options and their defaults are
|
33
33
|
{
|
34
|
-
:mangle => true, # Mangle variables
|
34
|
+
:mangle => true, # Mangle variable and function names, use :variables to skip function mangling
|
35
35
|
:toplevel => false, # Mangle top-level variable names
|
36
36
|
:except => [], # Variable names to be excluded from mangling
|
37
37
|
:max_line_length => 32 * 1024, # Maximum line length
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0
|
data/lib/uglifier.rb
CHANGED
@@ -9,7 +9,7 @@ class Uglifier
|
|
9
9
|
|
10
10
|
# Default options for compilation
|
11
11
|
DEFAULTS = {
|
12
|
-
:mangle => true, # Mangle
|
12
|
+
:mangle => true, # Mangle variable and function names, use :vars to skip function mangling
|
13
13
|
:toplevel => false, # Mangle top-level variable names
|
14
14
|
:except => ["$super"], # Variable names to be excluded from mangling
|
15
15
|
:max_line_length => 32 * 1024, # Maximum line length
|
@@ -108,7 +108,8 @@ class Uglifier
|
|
108
108
|
{
|
109
109
|
"toplevel" => @options[:toplevel],
|
110
110
|
"defines" => {},
|
111
|
-
"except" => @options[:except]
|
111
|
+
"except" => @options[:except],
|
112
|
+
"no_functions" => @options[:mangle] == :vars
|
112
113
|
}
|
113
114
|
end
|
114
115
|
|
data/lib/uglify.js
CHANGED
@@ -304,9 +304,9 @@ function parse_js_number(num) {
|
|
304
304
|
|
305
305
|
function JS_Parse_Error(message, line, col, pos) {
|
306
306
|
this.message = message;
|
307
|
-
this.line = line;
|
308
|
-
this.col = col;
|
309
|
-
this.pos = pos;
|
307
|
+
this.line = line + 1;
|
308
|
+
this.col = col + 1;
|
309
|
+
this.pos = pos + 1;
|
310
310
|
this.stack = new Error().stack;
|
311
311
|
};
|
312
312
|
|
@@ -376,12 +376,13 @@ function tokenizer($TEXT) {
|
|
376
376
|
(type == "keyword" && HOP(KEYWORDS_BEFORE_EXPRESSION, value)) ||
|
377
377
|
(type == "punc" && HOP(PUNC_BEFORE_EXPRESSION, value)));
|
378
378
|
var ret = {
|
379
|
-
type
|
380
|
-
value
|
381
|
-
line
|
382
|
-
col
|
383
|
-
pos
|
384
|
-
|
379
|
+
type : type,
|
380
|
+
value : value,
|
381
|
+
line : S.tokline,
|
382
|
+
col : S.tokcol,
|
383
|
+
pos : S.tokpos,
|
384
|
+
endpos : S.pos,
|
385
|
+
nlb : S.newline_before
|
385
386
|
};
|
386
387
|
if (!is_comment) {
|
387
388
|
ret.comments_before = S.comments_before;
|
@@ -518,8 +519,7 @@ function tokenizer($TEXT) {
|
|
518
519
|
next();
|
519
520
|
return with_eof_error("Unterminated multiline comment", function(){
|
520
521
|
var i = find("*/", true),
|
521
|
-
text = S.text.substring(S.pos, i)
|
522
|
-
tok = token("comment2", text, true);
|
522
|
+
text = S.text.substring(S.pos, i);
|
523
523
|
S.pos = i + 2;
|
524
524
|
S.line += text.split("\n").length - 1;
|
525
525
|
S.newline_before = text.indexOf("\n") >= 0;
|
@@ -531,7 +531,7 @@ function tokenizer($TEXT) {
|
|
531
531
|
warn("*** UglifyJS DISCARDS ALL COMMENTS. This means your code might no longer work properly in Internet Explorer.");
|
532
532
|
}
|
533
533
|
|
534
|
-
return
|
534
|
+
return token("comment2", text, true);
|
535
535
|
});
|
536
536
|
};
|
537
537
|
|
@@ -982,7 +982,7 @@ function parse($TEXT, exigent_mode, embed_tokens) {
|
|
982
982
|
return as("for-in", init, lhs, obj, in_loop(statement));
|
983
983
|
};
|
984
984
|
|
985
|
-
var function_ =
|
985
|
+
var function_ = function(in_statement) {
|
986
986
|
var name = is("name") ? prog1(S.token.value, next) : null;
|
987
987
|
if (in_statement && !name)
|
988
988
|
unexpected();
|
@@ -1010,7 +1010,7 @@ function parse($TEXT, exigent_mode, embed_tokens) {
|
|
1010
1010
|
S.in_loop = loop;
|
1011
1011
|
return a;
|
1012
1012
|
})());
|
1013
|
-
}
|
1013
|
+
};
|
1014
1014
|
|
1015
1015
|
function if_() {
|
1016
1016
|
var cond = parenthesised(), body = statement(), belse;
|
@@ -1358,7 +1358,7 @@ function characters(str) {
|
|
1358
1358
|
|
1359
1359
|
function member(name, array) {
|
1360
1360
|
for (var i = array.length; --i >= 0;)
|
1361
|
-
if (array[i]
|
1361
|
+
if (array[i] == name)
|
1362
1362
|
return true;
|
1363
1363
|
return false;
|
1364
1364
|
};
|
@@ -1772,6 +1772,7 @@ function ast_add_scope(ast) {
|
|
1772
1772
|
|
1773
1773
|
function with_new_scope(cont) {
|
1774
1774
|
current_scope = new Scope(current_scope);
|
1775
|
+
current_scope.labels = new Scope();
|
1775
1776
|
var ret = current_scope.body = cont();
|
1776
1777
|
ret.scope = current_scope;
|
1777
1778
|
current_scope = current_scope.parent;
|
@@ -1804,14 +1805,19 @@ function ast_add_scope(ast) {
|
|
1804
1805
|
};
|
1805
1806
|
};
|
1806
1807
|
|
1808
|
+
function _breacont(label) {
|
1809
|
+
if (label)
|
1810
|
+
current_scope.labels.refs[label] = true;
|
1811
|
+
};
|
1812
|
+
|
1807
1813
|
return with_new_scope(function(){
|
1808
1814
|
// process AST
|
1809
1815
|
var ret = w.with_walkers({
|
1810
1816
|
"function": _lambda,
|
1811
1817
|
"defun": _lambda,
|
1812
|
-
"label": function(name, stat) { define(name
|
1813
|
-
"break":
|
1814
|
-
"continue":
|
1818
|
+
"label": function(name, stat) { current_scope.labels.define(name) },
|
1819
|
+
"break": _breacont,
|
1820
|
+
"continue": _breacont,
|
1815
1821
|
"with": function(expr, block) {
|
1816
1822
|
for (var s = current_scope; s; s = s.parent)
|
1817
1823
|
s.uses_with = true;
|
@@ -1897,15 +1903,18 @@ function ast_mangle(ast, options) {
|
|
1897
1903
|
};
|
1898
1904
|
|
1899
1905
|
function _lambda(name, args, body) {
|
1900
|
-
|
1901
|
-
|
1902
|
-
if (
|
1903
|
-
|
1904
|
-
|
1905
|
-
|
1906
|
-
|
1907
|
-
|
1908
|
-
|
1906
|
+
if (!options.no_functions) {
|
1907
|
+
var is_defun = this[0] == "defun", extra;
|
1908
|
+
if (name) {
|
1909
|
+
if (is_defun) name = get_mangled(name);
|
1910
|
+
else if (body.scope.references(name)) {
|
1911
|
+
extra = {};
|
1912
|
+
if (!(scope.uses_eval || scope.uses_with))
|
1913
|
+
name = extra[name] = scope.next_mangled();
|
1914
|
+
else
|
1915
|
+
extra[name] = name;
|
1916
|
+
}
|
1917
|
+
else name = null;
|
1909
1918
|
}
|
1910
1919
|
}
|
1911
1920
|
body = with_scope(body.scope, function(){
|
@@ -1936,6 +1945,10 @@ function ast_mangle(ast, options) {
|
|
1936
1945
|
}) ];
|
1937
1946
|
};
|
1938
1947
|
|
1948
|
+
function _breacont(label) {
|
1949
|
+
if (label) return [ this[0], scope.labels.get_mangled(label) ];
|
1950
|
+
};
|
1951
|
+
|
1939
1952
|
return w.with_walkers({
|
1940
1953
|
"function": _lambda,
|
1941
1954
|
"defun": function() {
|
@@ -1950,9 +1963,16 @@ function ast_mangle(ast, options) {
|
|
1950
1963
|
}
|
1951
1964
|
return ast;
|
1952
1965
|
},
|
1953
|
-
"label": function(label, stat) {
|
1954
|
-
|
1955
|
-
|
1966
|
+
"label": function(label, stat) {
|
1967
|
+
if (scope.labels.refs[label]) return [
|
1968
|
+
this[0],
|
1969
|
+
scope.labels.get_mangled(label, true),
|
1970
|
+
walk(stat)
|
1971
|
+
];
|
1972
|
+
return walk(stat);
|
1973
|
+
},
|
1974
|
+
"break": _breacont,
|
1975
|
+
"continue": _breacont,
|
1956
1976
|
"var": _vardefs,
|
1957
1977
|
"const": _vardefs,
|
1958
1978
|
"name": function(name) {
|
@@ -2366,7 +2386,7 @@ function ast_squeeze(ast, options) {
|
|
2366
2386
|
keep_comps : true
|
2367
2387
|
});
|
2368
2388
|
|
2369
|
-
var w = ast_walker(), walk = w.walk
|
2389
|
+
var w = ast_walker(), walk = w.walk;
|
2370
2390
|
|
2371
2391
|
function negate(c) {
|
2372
2392
|
var not_c = [ "unary-prefix", "!", c ];
|
@@ -2418,15 +2438,6 @@ function ast_squeeze(ast, options) {
|
|
2418
2438
|
}, make_real_conditional);
|
2419
2439
|
};
|
2420
2440
|
|
2421
|
-
function with_scope(s, cont) {
|
2422
|
-
var _scope = scope;
|
2423
|
-
scope = s;
|
2424
|
-
var ret = cont();
|
2425
|
-
ret.scope = s;
|
2426
|
-
scope = _scope;
|
2427
|
-
return ret;
|
2428
|
-
};
|
2429
|
-
|
2430
2441
|
function rmblock(block) {
|
2431
2442
|
if (block != null && block[0] == "block" && block[1]) {
|
2432
2443
|
if (block[1].length == 1)
|
@@ -2438,14 +2449,7 @@ function ast_squeeze(ast, options) {
|
|
2438
2449
|
};
|
2439
2450
|
|
2440
2451
|
function _lambda(name, args, body) {
|
2441
|
-
|
2442
|
-
body = with_scope(body.scope, function(){
|
2443
|
-
var ret = tighten(body, "lambda");
|
2444
|
-
if (!is_defun && name && !scope.references(name))
|
2445
|
-
name = null;
|
2446
|
-
return ret;
|
2447
|
-
});
|
2448
|
-
return [ this[0], name, args, body ];
|
2452
|
+
return [ this[0], name, args, tighten(body, "lambda") ];
|
2449
2453
|
};
|
2450
2454
|
|
2451
2455
|
// this function does a few things:
|
@@ -2659,9 +2663,7 @@ function ast_squeeze(ast, options) {
|
|
2659
2663
|
},
|
2660
2664
|
"if": make_if,
|
2661
2665
|
"toplevel": function(body) {
|
2662
|
-
return [ "toplevel",
|
2663
|
-
return tighten(body);
|
2664
|
-
}) ];
|
2666
|
+
return [ "toplevel", tighten(body) ];
|
2665
2667
|
},
|
2666
2668
|
"switch": function(expr, body) {
|
2667
2669
|
var last = body.length - 1;
|
@@ -2736,7 +2738,6 @@ function ast_squeeze(ast, options) {
|
|
2736
2738
|
}, function() {
|
2737
2739
|
for (var i = 0; i < 2; ++i) {
|
2738
2740
|
ast = prepare_ifs(ast);
|
2739
|
-
ast = ast_add_scope(ast);
|
2740
2741
|
ast = walk(ast);
|
2741
2742
|
}
|
2742
2743
|
return ast;
|
@@ -2808,7 +2809,7 @@ function gen_code(ast, options) {
|
|
2808
2809
|
function encode_string(str) {
|
2809
2810
|
var ret = make_string(str, options.ascii_only);
|
2810
2811
|
if (options.inline_script)
|
2811
|
-
ret = ret.replace(/<\x2fscript([
|
2812
|
+
ret = ret.replace(/<\x2fscript([>\/\t\n\f\r ])/gi, "<\\/script$1");
|
2812
2813
|
return ret;
|
2813
2814
|
};
|
2814
2815
|
|
@@ -3416,11 +3417,21 @@ function ast_squeeze_more(ast) {
|
|
3416
3417
|
"function": _lambda,
|
3417
3418
|
"defun": _lambda,
|
3418
3419
|
"new": function(ctor, args) {
|
3419
|
-
if (ctor[0] == "name"
|
3420
|
-
if (
|
3421
|
-
|
3422
|
-
|
3423
|
-
|
3420
|
+
if (ctor[0] == "name") {
|
3421
|
+
if (ctor[1] == "Array" && !scope.has("Array")) {
|
3422
|
+
if (args.length != 1) {
|
3423
|
+
return [ "array", args ];
|
3424
|
+
} else {
|
3425
|
+
return walk([ "call", [ "name", "Array" ], args ]);
|
3426
|
+
}
|
3427
|
+
} else if (ctor[1] == "Object" && !scope.has("Object")) {
|
3428
|
+
if (!args.length) {
|
3429
|
+
return [ "object", [] ];
|
3430
|
+
} else {
|
3431
|
+
return walk([ "call", [ "name", "Object" ], args ]);
|
3432
|
+
}
|
3433
|
+
} else if ((ctor[1] == "RegExp" || ctor[1] == "Function" || ctor[1] == "Error") && !scope.has(ctor[1])) {
|
3434
|
+
return walk([ "call", [ "name", ctor[1] ], args]);
|
3424
3435
|
}
|
3425
3436
|
}
|
3426
3437
|
},
|
@@ -3429,8 +3440,16 @@ function ast_squeeze_more(ast) {
|
|
3429
3440
|
// foo.toString() ==> foo+""
|
3430
3441
|
return [ "binary", "+", expr[1], [ "string", "" ]];
|
3431
3442
|
}
|
3432
|
-
if (expr[0] == "name"
|
3433
|
-
|
3443
|
+
if (expr[0] == "name") {
|
3444
|
+
if (expr[1] == "Array" && args.length != 1 && !scope.has("Array")) {
|
3445
|
+
return [ "array", args ];
|
3446
|
+
}
|
3447
|
+
if (expr[1] == "Object" && !args.length && !scope.has("Object")) {
|
3448
|
+
return [ "object", [] ];
|
3449
|
+
}
|
3450
|
+
if (expr[1] == "String" && !scope.has("String")) {
|
3451
|
+
return [ "binary", "+", args[0], [ "string", "" ]];
|
3452
|
+
}
|
3434
3453
|
}
|
3435
3454
|
}
|
3436
3455
|
}, function() {
|
data/spec/uglifier_spec.rb
CHANGED
@@ -82,6 +82,13 @@ describe "Uglifier" do
|
|
82
82
|
Uglifier.compile(code, :except => ["foo"], :toplevel => true).should include("var foo")
|
83
83
|
end
|
84
84
|
|
85
|
+
it "allows disabling of function name mangling" do
|
86
|
+
code = "function sample() {var bar = 1; function foo() { return bar; }}"
|
87
|
+
mangled = Uglifier.compile(code, :mangle => :vars)
|
88
|
+
mangled.should include("foo()")
|
89
|
+
mangled.should_not include("bar")
|
90
|
+
end
|
91
|
+
|
85
92
|
it "honors max line length" do
|
86
93
|
code = "var foo = 123;var bar = 123456"
|
87
94
|
Uglifier.compile(code, :max_line_length => 8).split("\n").length.should == 2
|
data/uglifier.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "uglifier"
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ville Lautanala"]
|
12
|
-
s.date = "2011-
|
12
|
+
s.date = "2011-12-15"
|
13
13
|
s.email = "lautis@gmail.com"
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE.txt",
|
@@ -35,7 +35,7 @@ Gem::Specification.new do |s|
|
|
35
35
|
]
|
36
36
|
s.homepage = "http://github.com/lautis/uglifier"
|
37
37
|
s.require_paths = ["lib"]
|
38
|
-
s.rubygems_version = "1.8.
|
38
|
+
s.rubygems_version = "1.8.11"
|
39
39
|
s.summary = "Ruby wrapper for UglifyJS JavaScript compressor"
|
40
40
|
|
41
41
|
if s.respond_to? :specification_version then
|
@@ -45,7 +45,7 @@ Gem::Specification.new do |s|
|
|
45
45
|
s.add_runtime_dependency(%q<execjs>, [">= 0.3.0"])
|
46
46
|
s.add_runtime_dependency(%q<multi_json>, [">= 1.0.2"])
|
47
47
|
s.add_development_dependency(%q<rspec>, ["~> 2.7"])
|
48
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.0
|
48
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0"])
|
49
49
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.0"])
|
50
50
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
51
51
|
s.add_development_dependency(%q<rdoc>, ["~> 3.11"])
|
@@ -53,7 +53,7 @@ Gem::Specification.new do |s|
|
|
53
53
|
s.add_dependency(%q<execjs>, [">= 0.3.0"])
|
54
54
|
s.add_dependency(%q<multi_json>, [">= 1.0.2"])
|
55
55
|
s.add_dependency(%q<rspec>, ["~> 2.7"])
|
56
|
-
s.add_dependency(%q<bundler>, ["~> 1.0
|
56
|
+
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
57
57
|
s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
|
58
58
|
s.add_dependency(%q<rcov>, [">= 0"])
|
59
59
|
s.add_dependency(%q<rdoc>, ["~> 3.11"])
|
@@ -62,7 +62,7 @@ Gem::Specification.new do |s|
|
|
62
62
|
s.add_dependency(%q<execjs>, [">= 0.3.0"])
|
63
63
|
s.add_dependency(%q<multi_json>, [">= 1.0.2"])
|
64
64
|
s.add_dependency(%q<rspec>, ["~> 2.7"])
|
65
|
-
s.add_dependency(%q<bundler>, ["~> 1.0
|
65
|
+
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
66
66
|
s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
|
67
67
|
s.add_dependency(%q<rcov>, [">= 0"])
|
68
68
|
s.add_dependency(%q<rdoc>, ["~> 3.11"])
|
metadata
CHANGED
@@ -1,140 +1,101 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: uglifier
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 1
|
9
|
-
- 0
|
10
|
-
version: 1.1.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Ville Lautanala
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
12
|
+
date: 2011-12-15 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: execjs
|
16
|
+
requirement: &70272465546860 !ruby/object:Gem::Requirement
|
23
17
|
none: false
|
24
|
-
requirements:
|
25
|
-
- -
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
hash: 19
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 3
|
31
|
-
- 0
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
32
21
|
version: 0.3.0
|
33
|
-
prerelease: false
|
34
|
-
name: execjs
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
22
|
type: :runtime
|
38
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
hash: 19
|
44
|
-
segments:
|
45
|
-
- 1
|
46
|
-
- 0
|
47
|
-
- 2
|
48
|
-
version: 1.0.2
|
49
23
|
prerelease: false
|
24
|
+
version_requirements: *70272465546860
|
25
|
+
- !ruby/object:Gem::Dependency
|
50
26
|
name: multi_json
|
51
|
-
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
type: :development
|
54
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
27
|
+
requirement: &70272465546300 !ruby/object:Gem::Requirement
|
55
28
|
none: false
|
56
|
-
requirements:
|
57
|
-
- -
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
|
61
|
-
- 2
|
62
|
-
- 7
|
63
|
-
version: "2.7"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.0.2
|
33
|
+
type: :runtime
|
64
34
|
prerelease: false
|
35
|
+
version_requirements: *70272465546300
|
36
|
+
- !ruby/object:Gem::Dependency
|
65
37
|
name: rspec
|
66
|
-
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
|
-
type: :development
|
69
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
38
|
+
requirement: &70272465545280 !ruby/object:Gem::Requirement
|
70
39
|
none: false
|
71
|
-
requirements:
|
40
|
+
requirements:
|
72
41
|
- - ~>
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
|
75
|
-
|
76
|
-
- 1
|
77
|
-
- 0
|
78
|
-
- 0
|
79
|
-
version: 1.0.0
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.7'
|
44
|
+
type: :development
|
80
45
|
prerelease: false
|
46
|
+
version_requirements: *70272465545280
|
47
|
+
- !ruby/object:Gem::Dependency
|
81
48
|
name: bundler
|
82
|
-
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
type: :development
|
85
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
49
|
+
requirement: &70272465544100 !ruby/object:Gem::Requirement
|
86
50
|
none: false
|
87
|
-
requirements:
|
51
|
+
requirements:
|
88
52
|
- - ~>
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
|
91
|
-
|
92
|
-
- 1
|
93
|
-
- 6
|
94
|
-
- 0
|
95
|
-
version: 1.6.0
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
type: :development
|
96
56
|
prerelease: false
|
57
|
+
version_requirements: *70272465544100
|
58
|
+
- !ruby/object:Gem::Dependency
|
97
59
|
name: jeweler
|
98
|
-
|
99
|
-
- !ruby/object:Gem::Dependency
|
100
|
-
type: :development
|
101
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
60
|
+
requirement: &70272465559500 !ruby/object:Gem::Requirement
|
102
61
|
none: false
|
103
|
-
requirements:
|
104
|
-
- -
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
|
107
|
-
|
108
|
-
- 0
|
109
|
-
version: "0"
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 1.6.0
|
66
|
+
type: :development
|
110
67
|
prerelease: false
|
68
|
+
version_requirements: *70272465559500
|
69
|
+
- !ruby/object:Gem::Dependency
|
111
70
|
name: rcov
|
112
|
-
|
113
|
-
|
71
|
+
requirement: &70272465558480 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
114
77
|
type: :development
|
115
|
-
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70272465558480
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rdoc
|
82
|
+
requirement: &70272465557800 !ruby/object:Gem::Requirement
|
116
83
|
none: false
|
117
|
-
requirements:
|
84
|
+
requirements:
|
118
85
|
- - ~>
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
|
121
|
-
|
122
|
-
- 3
|
123
|
-
- 11
|
124
|
-
version: "3.11"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '3.11'
|
88
|
+
type: :development
|
125
89
|
prerelease: false
|
126
|
-
|
127
|
-
version_requirements: *id007
|
90
|
+
version_requirements: *70272465557800
|
128
91
|
description:
|
129
92
|
email: lautis@gmail.com
|
130
93
|
executables: []
|
131
|
-
|
132
94
|
extensions: []
|
133
|
-
|
134
|
-
extra_rdoc_files:
|
95
|
+
extra_rdoc_files:
|
135
96
|
- LICENSE.txt
|
136
97
|
- README.rdoc
|
137
|
-
files:
|
98
|
+
files:
|
138
99
|
- .document
|
139
100
|
- .gitmodules
|
140
101
|
- .rspec
|
@@ -153,36 +114,29 @@ files:
|
|
153
114
|
- uglifier.gemspec
|
154
115
|
homepage: http://github.com/lautis/uglifier
|
155
116
|
licenses: []
|
156
|
-
|
157
117
|
post_install_message:
|
158
118
|
rdoc_options: []
|
159
|
-
|
160
|
-
require_paths:
|
119
|
+
require_paths:
|
161
120
|
- lib
|
162
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
121
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
163
122
|
none: false
|
164
|
-
requirements:
|
165
|
-
- -
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
|
168
|
-
segments:
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
segments:
|
169
128
|
- 0
|
170
|
-
|
171
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
+
hash: 4489573816621195848
|
130
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
131
|
none: false
|
173
|
-
requirements:
|
174
|
-
- -
|
175
|
-
- !ruby/object:Gem::Version
|
176
|
-
|
177
|
-
segments:
|
178
|
-
- 0
|
179
|
-
version: "0"
|
132
|
+
requirements:
|
133
|
+
- - ! '>='
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
180
136
|
requirements: []
|
181
|
-
|
182
137
|
rubyforge_project:
|
183
|
-
rubygems_version: 1.8.
|
138
|
+
rubygems_version: 1.8.11
|
184
139
|
signing_key:
|
185
140
|
specification_version: 3
|
186
141
|
summary: Ruby wrapper for UglifyJS JavaScript compressor
|
187
142
|
test_files: []
|
188
|
-
|