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 CHANGED
@@ -1,3 +1,3 @@
1
1
  [submodule "vendor/uglifyjs"]
2
2
  path = vendor/uglifyjs
3
- url = https://github.com/lautis/UglifyJS.git
3
+ url = https://github.com/mishoo/UglifyJS.git
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.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 names
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.0
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 variables names
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 : type,
380
- value : value,
381
- line : S.tokline,
382
- col : S.tokcol,
383
- pos : S.tokpos,
384
- nlb : S.newline_before
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 tok;
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_ = maybe_embed_tokens(function(in_statement) {
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] === name)
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, "label") },
1813
- "break": function(label) { if (label) reference(label) },
1814
- "continue": function(label) { if (label) reference(label) },
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
- var is_defun = this[0] == "defun", extra;
1901
- if (name) {
1902
- if (is_defun) name = get_mangled(name);
1903
- else {
1904
- extra = {};
1905
- if (!(scope.uses_eval || scope.uses_with))
1906
- name = extra[name] = scope.next_mangled();
1907
- else
1908
- extra[name] = name;
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) { return [ this[0], get_mangled(label), walk(stat) ] },
1954
- "break": function(label) { if (label) return [ this[0], get_mangled(label) ] },
1955
- "continue": function(label) { if (label) return [ this[0], get_mangled(label) ] },
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, scope;
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
- var is_defun = this[0] == "defun";
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", with_scope(this.scope, function(){
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([>/\t\n\f\r ])/gi, "<\\/script$1");
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" && ctor[1] == "Array" && !scope.has("Array")) {
3420
- if (args.length != 1) {
3421
- return [ "array", args ];
3422
- } else {
3423
- return walk([ "call", [ "name", "Array" ], args ]);
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" && expr[1] == "Array" && args.length != 1 && !scope.has("Array")) {
3433
- return [ "array", args ];
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() {
@@ -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.1.0"
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-11-15"
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.10"
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.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.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.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
- hash: 19
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
- date: 2011-11-15 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- type: :runtime
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
- version_requirements: *id002
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
- hash: 13
60
- segments:
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
- version_requirements: *id003
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
- hash: 23
75
- segments:
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
- version_requirements: *id004
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
- hash: 15
91
- segments:
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
- version_requirements: *id005
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
- hash: 3
107
- segments:
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
- version_requirements: *id006
113
- - !ruby/object:Gem::Dependency
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
- requirement: &id007 !ruby/object:Gem::Requirement
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
- hash: 17
121
- segments:
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
- name: rdoc
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
- hash: 3
168
- segments:
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ segments:
169
128
  - 0
170
- version: "0"
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
- hash: 3
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.10
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
-