requirejs-rails 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +18 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/bin/r.js +175 -98
- data/lib/requirejs/rails/version.rb +1 -1
- data/test/requirejs-rails_test.rb +1 -1
- data/vendor/assets/javascripts/require.js +2 -11
- metadata +10 -10
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
# v0.5.1
|
2
|
+
|
3
|
+
- This is a quick turn to fix an issue that could trigger an Anonymous mismatched define() error from require.js and/or r.js.
|
4
|
+
|
5
|
+
The preferred way to use the helper tag is now with an argument, like
|
6
|
+
so:
|
7
|
+
|
8
|
+
```erb
|
9
|
+
<%= requirejs_include_tag "application" %>
|
10
|
+
```
|
11
|
+
|
12
|
+
This usage ensures that the above helper will correctly generate a
|
13
|
+
data-main attribute for the script tag. The requirejs_include_tag
|
14
|
+
helper still works without an argument, and won't generate data-main
|
15
|
+
in that case.
|
16
|
+
|
17
|
+
Thanks to Andrew de Andrade for the catch.
|
18
|
+
|
1
19
|
# v0.5.0
|
2
20
|
|
3
21
|
- Precompilation via `rake assets:precompile` is now implemented.
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -21,7 +21,7 @@ Integrates [RequireJS](http://requirejs.org/) into the Rails 3 Asset Pipeline.
|
|
21
21
|
<html>
|
22
22
|
<head>
|
23
23
|
<title>Frobnitz Online</title>
|
24
|
-
<%= stylesheet_link_tag
|
24
|
+
<%= stylesheet_link_tag "application" %>
|
25
25
|
<%= requirejs_include_tag "application" %>
|
26
26
|
<%= csrf_meta_tags %>
|
27
27
|
<meta charset="utf-8">
|
data/bin/r.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license r.js 1.0.
|
2
|
+
* @license r.js 1.0.3 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
|
3
3
|
* Available via the MIT or new BSD license.
|
4
4
|
* see: http://github.com/jrburke/requirejs for details
|
5
5
|
*/
|
@@ -20,7 +20,7 @@ var requirejs, require, define;
|
|
20
20
|
|
21
21
|
var fileName, env, fs, vm, path, exec, rhinoContext, dir, nodeRequire,
|
22
22
|
nodeDefine, exists, reqMain, loadedOptimizedLib,
|
23
|
-
version = '1.0.
|
23
|
+
version = '1.0.3',
|
24
24
|
jsSuffixRegExp = /\.js$/,
|
25
25
|
commandOption = '',
|
26
26
|
//Used by jslib/rhino/args.js
|
@@ -101,7 +101,7 @@ var requirejs, require, define;
|
|
101
101
|
}
|
102
102
|
|
103
103
|
/** vim: et:ts=4:sw=4:sts=4
|
104
|
-
* @license RequireJS 1.0.
|
104
|
+
* @license RequireJS 1.0.3 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
|
105
105
|
* Available via the MIT or new BSD license.
|
106
106
|
* see: http://github.com/jrburke/requirejs for details
|
107
107
|
*/
|
@@ -113,7 +113,7 @@ var requirejs, require, define;
|
|
113
113
|
|
114
114
|
(function () {
|
115
115
|
//Change this version number for each release.
|
116
|
-
var version = "1.0.
|
116
|
+
var version = "1.0.3",
|
117
117
|
commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,
|
118
118
|
cjsRequireRegExp = /require\(\s*["']([^'"\s]+)["']\s*\)/g,
|
119
119
|
currDirRegExp = /^\.\//,
|
@@ -1423,11 +1423,6 @@ var requirejs, require, define;
|
|
1423
1423
|
} : null]);
|
1424
1424
|
}
|
1425
1425
|
|
1426
|
-
//If a global jQuery is defined, check for it. Need to do it here
|
1427
|
-
//instead of main() since stock jQuery does not register as
|
1428
|
-
//a module via define.
|
1429
|
-
jQueryCheck();
|
1430
|
-
|
1431
1426
|
//Doing this scriptCount decrement branching because sync envs
|
1432
1427
|
//need to decrement after resume, otherwise it looks like
|
1433
1428
|
//loading is complete after the first dependency is fetched.
|
@@ -2041,10 +2036,6 @@ var requirejs, require, define;
|
|
2041
2036
|
//global queue, assign them to this context.
|
2042
2037
|
ctx.takeGlobalQueue();
|
2043
2038
|
|
2044
|
-
//Allow for jQuery to be loaded/already in the page, and if jQuery 1.4.3,
|
2045
|
-
//make sure to hold onto it for readyWait triggering.
|
2046
|
-
ctx.jQueryCheck();
|
2047
|
-
|
2048
2039
|
if (!ctx.scriptCount) {
|
2049
2040
|
ctx.resume();
|
2050
2041
|
}
|
@@ -2375,7 +2366,7 @@ define('node/file', ['fs', 'path'], function (fs, path) {
|
|
2375
2366
|
|
2376
2367
|
function mkDir(dir) {
|
2377
2368
|
if (!exists(dir)) {
|
2378
|
-
fs.mkdirSync(dir,
|
2369
|
+
fs.mkdirSync(dir, 511);
|
2379
2370
|
}
|
2380
2371
|
}
|
2381
2372
|
|
@@ -2536,6 +2527,13 @@ define('node/file', ['fs', 'path'], function (fs, path) {
|
|
2536
2527
|
return true; //Boolean
|
2537
2528
|
},
|
2538
2529
|
|
2530
|
+
/**
|
2531
|
+
* Renames a file. May fail if "to" already exists or is on another drive.
|
2532
|
+
*/
|
2533
|
+
renameFile: function (from, to) {
|
2534
|
+
return fs.renameSync(from, to);
|
2535
|
+
},
|
2536
|
+
|
2539
2537
|
/**
|
2540
2538
|
* Reads a *text* file.
|
2541
2539
|
*/
|
@@ -2772,6 +2770,13 @@ define('rhino/file', function () {
|
|
2772
2770
|
return true; //Boolean
|
2773
2771
|
},
|
2774
2772
|
|
2773
|
+
/**
|
2774
|
+
* Renames a file. May fail if "to" already exists or is on another drive.
|
2775
|
+
*/
|
2776
|
+
renameFile: function (from, to) {
|
2777
|
+
return (new java.io.File(from)).renameTo((new java.io.File(to)));
|
2778
|
+
},
|
2779
|
+
|
2775
2780
|
readFile: function (/*String*/path, /*String?*/encoding) {
|
2776
2781
|
//A file read function that can deal with BOMs
|
2777
2782
|
encoding = encoding || "utf-8";
|
@@ -3262,9 +3267,9 @@ function parse_js_number(num) {
|
|
3262
3267
|
|
3263
3268
|
function JS_Parse_Error(message, line, col, pos) {
|
3264
3269
|
this.message = message;
|
3265
|
-
this.line = line;
|
3266
|
-
this.col = col;
|
3267
|
-
this.pos = pos;
|
3270
|
+
this.line = line + 1;
|
3271
|
+
this.col = col + 1;
|
3272
|
+
this.pos = pos + 1;
|
3268
3273
|
this.stack = new Error().stack;
|
3269
3274
|
};
|
3270
3275
|
|
@@ -3334,12 +3339,13 @@ function tokenizer($TEXT) {
|
|
3334
3339
|
(type == "keyword" && HOP(KEYWORDS_BEFORE_EXPRESSION, value)) ||
|
3335
3340
|
(type == "punc" && HOP(PUNC_BEFORE_EXPRESSION, value)));
|
3336
3341
|
var ret = {
|
3337
|
-
type
|
3338
|
-
value
|
3339
|
-
line
|
3340
|
-
col
|
3341
|
-
pos
|
3342
|
-
|
3342
|
+
type : type,
|
3343
|
+
value : value,
|
3344
|
+
line : S.tokline,
|
3345
|
+
col : S.tokcol,
|
3346
|
+
pos : S.tokpos,
|
3347
|
+
endpos : S.pos,
|
3348
|
+
nlb : S.newline_before
|
3343
3349
|
};
|
3344
3350
|
if (!is_comment) {
|
3345
3351
|
ret.comments_before = S.comments_before;
|
@@ -3476,8 +3482,7 @@ function tokenizer($TEXT) {
|
|
3476
3482
|
next();
|
3477
3483
|
return with_eof_error("Unterminated multiline comment", function(){
|
3478
3484
|
var i = find("*/", true),
|
3479
|
-
text = S.text.substring(S.pos, i)
|
3480
|
-
tok = token("comment2", text, true);
|
3485
|
+
text = S.text.substring(S.pos, i);
|
3481
3486
|
S.pos = i + 2;
|
3482
3487
|
S.line += text.split("\n").length - 1;
|
3483
3488
|
S.newline_before = text.indexOf("\n") >= 0;
|
@@ -3489,7 +3494,7 @@ function tokenizer($TEXT) {
|
|
3489
3494
|
warn("*** UglifyJS DISCARDS ALL COMMENTS. This means your code might no longer work properly in Internet Explorer.");
|
3490
3495
|
}
|
3491
3496
|
|
3492
|
-
return
|
3497
|
+
return token("comment2", text, true);
|
3493
3498
|
});
|
3494
3499
|
};
|
3495
3500
|
|
@@ -3940,7 +3945,7 @@ function parse($TEXT, exigent_mode, embed_tokens) {
|
|
3940
3945
|
return as("for-in", init, lhs, obj, in_loop(statement));
|
3941
3946
|
};
|
3942
3947
|
|
3943
|
-
var function_ =
|
3948
|
+
var function_ = function(in_statement) {
|
3944
3949
|
var name = is("name") ? prog1(S.token.value, next) : null;
|
3945
3950
|
if (in_statement && !name)
|
3946
3951
|
unexpected();
|
@@ -3968,7 +3973,7 @@ function parse($TEXT, exigent_mode, embed_tokens) {
|
|
3968
3973
|
S.in_loop = loop;
|
3969
3974
|
return a;
|
3970
3975
|
})());
|
3971
|
-
}
|
3976
|
+
};
|
3972
3977
|
|
3973
3978
|
function if_() {
|
3974
3979
|
var cond = parenthesised(), body = statement(), belse;
|
@@ -4316,7 +4321,7 @@ function characters(str) {
|
|
4316
4321
|
|
4317
4322
|
function member(name, array) {
|
4318
4323
|
for (var i = array.length; --i >= 0;)
|
4319
|
-
if (array[i]
|
4324
|
+
if (array[i] == name)
|
4320
4325
|
return true;
|
4321
4326
|
return false;
|
4322
4327
|
};
|
@@ -4377,11 +4382,21 @@ function ast_squeeze_more(ast) {
|
|
4377
4382
|
"function": _lambda,
|
4378
4383
|
"defun": _lambda,
|
4379
4384
|
"new": function(ctor, args) {
|
4380
|
-
if (ctor[0] == "name"
|
4381
|
-
if (
|
4382
|
-
|
4383
|
-
|
4384
|
-
|
4385
|
+
if (ctor[0] == "name") {
|
4386
|
+
if (ctor[1] == "Array" && !scope.has("Array")) {
|
4387
|
+
if (args.length != 1) {
|
4388
|
+
return [ "array", args ];
|
4389
|
+
} else {
|
4390
|
+
return walk([ "call", [ "name", "Array" ], args ]);
|
4391
|
+
}
|
4392
|
+
} else if (ctor[1] == "Object" && !scope.has("Object")) {
|
4393
|
+
if (!args.length) {
|
4394
|
+
return [ "object", [] ];
|
4395
|
+
} else {
|
4396
|
+
return walk([ "call", [ "name", "Object" ], args ]);
|
4397
|
+
}
|
4398
|
+
} else if ((ctor[1] == "RegExp" || ctor[1] == "Function" || ctor[1] == "Error") && !scope.has(ctor[1])) {
|
4399
|
+
return walk([ "call", [ "name", ctor[1] ], args]);
|
4385
4400
|
}
|
4386
4401
|
}
|
4387
4402
|
},
|
@@ -4390,8 +4405,16 @@ function ast_squeeze_more(ast) {
|
|
4390
4405
|
// foo.toString() ==> foo+""
|
4391
4406
|
return [ "binary", "+", expr[1], [ "string", "" ]];
|
4392
4407
|
}
|
4393
|
-
if (expr[0] == "name"
|
4394
|
-
|
4408
|
+
if (expr[0] == "name") {
|
4409
|
+
if (expr[1] == "Array" && args.length != 1 && !scope.has("Array")) {
|
4410
|
+
return [ "array", args ];
|
4411
|
+
}
|
4412
|
+
if (expr[1] == "Object" && !args.length && !scope.has("Object")) {
|
4413
|
+
return [ "object", [] ];
|
4414
|
+
}
|
4415
|
+
if (expr[1] == "String" && !scope.has("String")) {
|
4416
|
+
return [ "binary", "+", args[0], [ "string", "" ]];
|
4417
|
+
}
|
4395
4418
|
}
|
4396
4419
|
}
|
4397
4420
|
}, function() {
|
@@ -4788,6 +4811,7 @@ function ast_add_scope(ast) {
|
|
4788
4811
|
|
4789
4812
|
function with_new_scope(cont) {
|
4790
4813
|
current_scope = new Scope(current_scope);
|
4814
|
+
current_scope.labels = new Scope();
|
4791
4815
|
var ret = current_scope.body = cont();
|
4792
4816
|
ret.scope = current_scope;
|
4793
4817
|
current_scope = current_scope.parent;
|
@@ -4820,14 +4844,19 @@ function ast_add_scope(ast) {
|
|
4820
4844
|
};
|
4821
4845
|
};
|
4822
4846
|
|
4847
|
+
function _breacont(label) {
|
4848
|
+
if (label)
|
4849
|
+
current_scope.labels.refs[label] = true;
|
4850
|
+
};
|
4851
|
+
|
4823
4852
|
return with_new_scope(function(){
|
4824
4853
|
// process AST
|
4825
4854
|
var ret = w.with_walkers({
|
4826
4855
|
"function": _lambda,
|
4827
4856
|
"defun": _lambda,
|
4828
|
-
"label": function(name, stat) { define(name
|
4829
|
-
"break":
|
4830
|
-
"continue":
|
4857
|
+
"label": function(name, stat) { current_scope.labels.define(name) },
|
4858
|
+
"break": _breacont,
|
4859
|
+
"continue": _breacont,
|
4831
4860
|
"with": function(expr, block) {
|
4832
4861
|
for (var s = current_scope; s; s = s.parent)
|
4833
4862
|
s.uses_with = true;
|
@@ -4913,15 +4942,18 @@ function ast_mangle(ast, options) {
|
|
4913
4942
|
};
|
4914
4943
|
|
4915
4944
|
function _lambda(name, args, body) {
|
4916
|
-
|
4917
|
-
|
4918
|
-
if (
|
4919
|
-
|
4920
|
-
|
4921
|
-
|
4922
|
-
|
4923
|
-
|
4924
|
-
|
4945
|
+
if (!options.no_functions) {
|
4946
|
+
var is_defun = this[0] == "defun", extra;
|
4947
|
+
if (name) {
|
4948
|
+
if (is_defun) name = get_mangled(name);
|
4949
|
+
else if (body.scope.references(name)) {
|
4950
|
+
extra = {};
|
4951
|
+
if (!(scope.uses_eval || scope.uses_with))
|
4952
|
+
name = extra[name] = scope.next_mangled();
|
4953
|
+
else
|
4954
|
+
extra[name] = name;
|
4955
|
+
}
|
4956
|
+
else name = null;
|
4925
4957
|
}
|
4926
4958
|
}
|
4927
4959
|
body = with_scope(body.scope, function(){
|
@@ -4952,6 +4984,10 @@ function ast_mangle(ast, options) {
|
|
4952
4984
|
}) ];
|
4953
4985
|
};
|
4954
4986
|
|
4987
|
+
function _breacont(label) {
|
4988
|
+
if (label) return [ this[0], scope.labels.get_mangled(label) ];
|
4989
|
+
};
|
4990
|
+
|
4955
4991
|
return w.with_walkers({
|
4956
4992
|
"function": _lambda,
|
4957
4993
|
"defun": function() {
|
@@ -4966,9 +5002,16 @@ function ast_mangle(ast, options) {
|
|
4966
5002
|
}
|
4967
5003
|
return ast;
|
4968
5004
|
},
|
4969
|
-
"label": function(label, stat) {
|
4970
|
-
|
4971
|
-
|
5005
|
+
"label": function(label, stat) {
|
5006
|
+
if (scope.labels.refs[label]) return [
|
5007
|
+
this[0],
|
5008
|
+
scope.labels.get_mangled(label, true),
|
5009
|
+
walk(stat)
|
5010
|
+
];
|
5011
|
+
return walk(stat);
|
5012
|
+
},
|
5013
|
+
"break": _breacont,
|
5014
|
+
"continue": _breacont,
|
4972
5015
|
"var": _vardefs,
|
4973
5016
|
"const": _vardefs,
|
4974
5017
|
"name": function(name) {
|
@@ -5382,7 +5425,7 @@ function ast_squeeze(ast, options) {
|
|
5382
5425
|
keep_comps : true
|
5383
5426
|
});
|
5384
5427
|
|
5385
|
-
var w = ast_walker(), walk = w.walk
|
5428
|
+
var w = ast_walker(), walk = w.walk;
|
5386
5429
|
|
5387
5430
|
function negate(c) {
|
5388
5431
|
var not_c = [ "unary-prefix", "!", c ];
|
@@ -5434,15 +5477,6 @@ function ast_squeeze(ast, options) {
|
|
5434
5477
|
}, make_real_conditional);
|
5435
5478
|
};
|
5436
5479
|
|
5437
|
-
function with_scope(s, cont) {
|
5438
|
-
var _scope = scope;
|
5439
|
-
scope = s;
|
5440
|
-
var ret = cont();
|
5441
|
-
ret.scope = s;
|
5442
|
-
scope = _scope;
|
5443
|
-
return ret;
|
5444
|
-
};
|
5445
|
-
|
5446
5480
|
function rmblock(block) {
|
5447
5481
|
if (block != null && block[0] == "block" && block[1]) {
|
5448
5482
|
if (block[1].length == 1)
|
@@ -5454,14 +5488,7 @@ function ast_squeeze(ast, options) {
|
|
5454
5488
|
};
|
5455
5489
|
|
5456
5490
|
function _lambda(name, args, body) {
|
5457
|
-
|
5458
|
-
body = with_scope(body.scope, function(){
|
5459
|
-
var ret = tighten(body, "lambda");
|
5460
|
-
if (!is_defun && name && !scope.references(name))
|
5461
|
-
name = null;
|
5462
|
-
return ret;
|
5463
|
-
});
|
5464
|
-
return [ this[0], name, args, body ];
|
5491
|
+
return [ this[0], name, args, tighten(body, "lambda") ];
|
5465
5492
|
};
|
5466
5493
|
|
5467
5494
|
// this function does a few things:
|
@@ -5675,9 +5702,7 @@ function ast_squeeze(ast, options) {
|
|
5675
5702
|
},
|
5676
5703
|
"if": make_if,
|
5677
5704
|
"toplevel": function(body) {
|
5678
|
-
return [ "toplevel",
|
5679
|
-
return tighten(body);
|
5680
|
-
}) ];
|
5705
|
+
return [ "toplevel", tighten(body) ];
|
5681
5706
|
},
|
5682
5707
|
"switch": function(expr, body) {
|
5683
5708
|
var last = body.length - 1;
|
@@ -5752,7 +5777,6 @@ function ast_squeeze(ast, options) {
|
|
5752
5777
|
}, function() {
|
5753
5778
|
for (var i = 0; i < 2; ++i) {
|
5754
5779
|
ast = prepare_ifs(ast);
|
5755
|
-
ast = ast_add_scope(ast);
|
5756
5780
|
ast = walk(ast);
|
5757
5781
|
}
|
5758
5782
|
return ast;
|
@@ -5824,7 +5848,7 @@ function gen_code(ast, options) {
|
|
5824
5848
|
function encode_string(str) {
|
5825
5849
|
var ret = make_string(str, options.ascii_only);
|
5826
5850
|
if (options.inline_script)
|
5827
|
-
ret = ret.replace(/<\x2fscript([
|
5851
|
+
ret = ret.replace(/<\x2fscript([>\/\t\n\f\r ])/gi, "<\\/script$1");
|
5828
5852
|
return ret;
|
5829
5853
|
};
|
5830
5854
|
|
@@ -6405,8 +6429,7 @@ exports.MAP = MAP;
|
|
6405
6429
|
// keep this last!
|
6406
6430
|
exports.ast_squeeze_more = require("./squeeze-more").ast_squeeze_more;
|
6407
6431
|
|
6408
|
-
});
|
6409
|
-
define('uglifyjs/index', ["require", "exports", "module", "./parse-js", "./process"], function(require, exports, module) {
|
6432
|
+
});define('uglifyjs/index', ["require", "exports", "module", "./parse-js", "./process"], function(require, exports, module) {
|
6410
6433
|
|
6411
6434
|
//convienence function(src, [options]);
|
6412
6435
|
function uglify(orig_code, options){
|
@@ -6648,6 +6671,15 @@ define('parse', ['uglifyjs/index'], function (uglify) {
|
|
6648
6671
|
if (result) {
|
6649
6672
|
result += '\n';
|
6650
6673
|
}
|
6674
|
+
|
6675
|
+
//If this is the main module for this file, combine any
|
6676
|
+
//"anonymous" dependencies (could come from a nested require
|
6677
|
+
//call) with this module.
|
6678
|
+
if (moduleCall.name === moduleName) {
|
6679
|
+
moduleCall.deps = moduleCall.deps.concat(moduleDeps);
|
6680
|
+
moduleDeps = [];
|
6681
|
+
}
|
6682
|
+
|
6651
6683
|
depString = moduleCall.deps.length ? '["' + moduleCall.deps.join('","') + '"]' : '[]';
|
6652
6684
|
result += 'define("' + moduleCall.name + '",' + depString + ');';
|
6653
6685
|
}
|
@@ -7047,7 +7079,9 @@ define('pragma', ['parse', 'logger'], function (parse, logger) {
|
|
7047
7079
|
apiDefRegExp: /var requirejs, require, define;/,
|
7048
7080
|
defineCheckRegExp: /typeof\s+define\s*===\s*["']function["']\s*&&\s*define\s*\.\s*amd/g,
|
7049
7081
|
defineJQueryRegExp: /typeof\s+define\s*===\s*["']function["']\s*&&\s*define\s*\.\s*amd\s*&&\s*define\s*\.\s*amd\s*\.\s*jQuery/g,
|
7082
|
+
defineHasRegExp: /typeof\s+define\s*==(=)?\s*['"]function['"]\s*&&\s*typeof\s+define\.amd\s*==(=)?\s*['"]object['"]\s*&&\s*define\.amd/g,
|
7050
7083
|
defineTernaryRegExp: /typeof\s+define\s*===\s*['"]function["']\s*&&\s*define\s*\.\s*amd\s*\?\s*define/,
|
7084
|
+
amdefineRegExp: /if\s*\(\s*typeof define\s*\!==\s*'function'\s*\)\s*\{\s*[^\{\}]+amdefine[^\{\}]+\}/g,
|
7051
7085
|
|
7052
7086
|
removeStrict: function (contents, config) {
|
7053
7087
|
return config.useStrict ? contents : contents.replace(pragma.useStrictRegExp, '');
|
@@ -7058,14 +7092,17 @@ define('pragma', ['parse', 'logger'], function (parse, logger) {
|
|
7058
7092
|
//Namespace require/define calls
|
7059
7093
|
fileContents = fileContents.replace(pragma.nsRegExp, '$1' + ns + '.$2(');
|
7060
7094
|
|
7061
|
-
|
7062
7095
|
//Namespace define ternary use:
|
7063
7096
|
fileContents = fileContents.replace(pragma.defineTernaryRegExp,
|
7064
7097
|
"typeof " + ns + ".define === 'function' && " + ns + ".define.amd ? " + ns + ".define");
|
7065
7098
|
|
7066
7099
|
//Namespace define jquery use:
|
7067
7100
|
fileContents = fileContents.replace(pragma.defineJQueryRegExp,
|
7068
|
-
"typeof " + ns + ".define === 'function' && " + ns + ".define.amd && " + ns + ".define.jQuery");
|
7101
|
+
"typeof " + ns + ".define === 'function' && " + ns + ".define.amd && " + ns + ".define.amd.jQuery");
|
7102
|
+
|
7103
|
+
//Namespace has.js define use:
|
7104
|
+
fileContents = fileContents.replace(pragma.defineHasRegExp,
|
7105
|
+
"typeof " + ns + ".define === 'function' && typeof " + ns + ".define.amd === 'object' && " + ns + ".define.amd");
|
7069
7106
|
|
7070
7107
|
//Namespace define checks.
|
7071
7108
|
//Do this one last, since it is a subset of the more specific
|
@@ -7238,6 +7275,9 @@ define('pragma', ['parse', 'logger'], function (parse, logger) {
|
|
7238
7275
|
}
|
7239
7276
|
}
|
7240
7277
|
|
7278
|
+
//Strip amdefine use for node-shared modules.
|
7279
|
+
fileContents = fileContents.replace(pragma.amdefineRegExp, '');
|
7280
|
+
|
7241
7281
|
//Do namespacing
|
7242
7282
|
if (onLifecycleName === 'OnSave' && config.namespace) {
|
7243
7283
|
fileContents = pragma.namespace(fileContents, config.namespace, onLifecycleName);
|
@@ -7533,14 +7573,16 @@ function (lang, logger, envOptimize, file, parse,
|
|
7533
7573
|
'" not found for this environment');
|
7534
7574
|
}
|
7535
7575
|
|
7536
|
-
|
7537
|
-
|
7538
|
-
|
7539
|
-
|
7540
|
-
|
7541
|
-
|
7542
|
-
comment.indexOf('
|
7543
|
-
|
7576
|
+
if (config.preserveLicenseComments) {
|
7577
|
+
//Pull out any license comments for prepending after optimization.
|
7578
|
+
optimize.licenseCommentRegExp.lastIndex = 0;
|
7579
|
+
while ((match = optimize.licenseCommentRegExp.exec(fileContents))) {
|
7580
|
+
comment = match[0];
|
7581
|
+
//Only keep the comments if they are license comments.
|
7582
|
+
if (comment.indexOf('@license') !== -1 ||
|
7583
|
+
comment.indexOf('/*!') === 0) {
|
7584
|
+
licenseContents += comment + '\n';
|
7585
|
+
}
|
7544
7586
|
}
|
7545
7587
|
}
|
7546
7588
|
|
@@ -7620,19 +7662,18 @@ function (lang, logger, envOptimize, file, parse,
|
|
7620
7662
|
uglify: function (fileName, fileContents, keepLines, config) {
|
7621
7663
|
var parser = uglify.parser,
|
7622
7664
|
processor = uglify.uglify,
|
7623
|
-
ast
|
7665
|
+
ast;
|
7624
7666
|
|
7625
7667
|
config = config || {};
|
7626
|
-
genCodeConfig = config.gen_codeOptions || keepLines;
|
7627
7668
|
|
7628
7669
|
logger.trace("Uglifying file: " + fileName);
|
7629
7670
|
|
7630
7671
|
try {
|
7631
|
-
ast = parser.parse(fileContents, config
|
7632
|
-
ast = processor.ast_mangle(ast, config
|
7633
|
-
ast = processor.ast_squeeze(ast, config
|
7672
|
+
ast = parser.parse(fileContents, config);
|
7673
|
+
ast = processor.ast_mangle(ast, config);
|
7674
|
+
ast = processor.ast_squeeze(ast, config);
|
7634
7675
|
|
7635
|
-
fileContents = processor.gen_code(ast,
|
7676
|
+
fileContents = processor.gen_code(ast, config);
|
7636
7677
|
} catch (e) {
|
7637
7678
|
logger.error('Cannot uglify file: ' + fileName + '. Skipping it. Error is:\n' + e.toString());
|
7638
7679
|
}
|
@@ -8107,6 +8148,7 @@ function (lang, logger, file, parse, optimize, pragma,
|
|
8107
8148
|
isBuild: true,
|
8108
8149
|
optimizeAllPluginResources: false,
|
8109
8150
|
findNestedDependencies: false,
|
8151
|
+
preserveLicenseComments: true,
|
8110
8152
|
//By default, all files/directories are copied, unless
|
8111
8153
|
//they match this regexp, by default just excludes .folders
|
8112
8154
|
dirExclusionRegExp: file.dirExclusionRegExp
|
@@ -8393,9 +8435,22 @@ function (lang, logger, file, parse, optimize, pragma,
|
|
8393
8435
|
|
8394
8436
|
//Flatten them and collect the build output for each module.
|
8395
8437
|
builtModule = build.flattenModule(module, module.layer, config);
|
8396
|
-
|
8438
|
+
|
8439
|
+
//Save it to a temp file for now, in case there are other layers that
|
8440
|
+
//contain optimized content that should not be included in later
|
8441
|
+
//layer optimizations. See issue #56.
|
8442
|
+
file.saveUtf8File(module._buildPath + '-temp', builtModule.text);
|
8397
8443
|
buildFileContents += builtModule.buildText;
|
8398
8444
|
});
|
8445
|
+
|
8446
|
+
//Now move the build layers to their final position.
|
8447
|
+
modules.forEach(function (module) {
|
8448
|
+
var finalPath = module._buildPath;
|
8449
|
+
if (file.exists(finalPath)) {
|
8450
|
+
file.deleteFile(finalPath);
|
8451
|
+
}
|
8452
|
+
file.renameFile(finalPath + '-temp', finalPath);
|
8453
|
+
});
|
8399
8454
|
}
|
8400
8455
|
|
8401
8456
|
//Do other optimizations.
|
@@ -8507,6 +8562,26 @@ function (lang, logger, file, parse, optimize, pragma,
|
|
8507
8562
|
result[prop][name] = value;
|
8508
8563
|
}
|
8509
8564
|
|
8565
|
+
//Used by convertArrayToObject to convert some things from prop.name=value
|
8566
|
+
//to a prop: { name: value}
|
8567
|
+
build.dotProps = [
|
8568
|
+
'paths.',
|
8569
|
+
'wrap.',
|
8570
|
+
'pragmas.',
|
8571
|
+
'pragmasOnSave.',
|
8572
|
+
'has.',
|
8573
|
+
'hasOnSave.',
|
8574
|
+
'wrap.',
|
8575
|
+
'uglify.',
|
8576
|
+
'closure.'
|
8577
|
+
];
|
8578
|
+
|
8579
|
+
build.hasDotPropMatch = function (prop) {
|
8580
|
+
return build.dotProps.some(function (dotProp) {
|
8581
|
+
return prop.indexOf(dotProp) === 0;
|
8582
|
+
});
|
8583
|
+
};
|
8584
|
+
|
8510
8585
|
/**
|
8511
8586
|
* Converts an array that has String members of "name=value"
|
8512
8587
|
* into an object, where the properties on the object are the names in the array.
|
@@ -8543,7 +8618,7 @@ function (lang, logger, file, parse, optimize, pragma,
|
|
8543
8618
|
value = value.split(",");
|
8544
8619
|
}
|
8545
8620
|
|
8546
|
-
if (
|
8621
|
+
if (build.hasDotPropMatch(prop)) {
|
8547
8622
|
stringDotToObj(result, prop.split('.')[0], prop, value);
|
8548
8623
|
} else {
|
8549
8624
|
result[prop] = value;
|
@@ -8736,9 +8811,9 @@ function (lang, logger, file, parse, optimize, pragma,
|
|
8736
8811
|
//Set file.fileExclusionRegExp if desired
|
8737
8812
|
if ('fileExclusionRegExp' in config) {
|
8738
8813
|
if (typeof config.fileExclusionRegExp === "string") {
|
8739
|
-
|
8814
|
+
file.exclusionRegExp = new RegExp(config.fileExclusionRegExp);
|
8740
8815
|
} else {
|
8741
|
-
|
8816
|
+
file.exclusionRegExp = config.fileExclusionRegExp;
|
8742
8817
|
}
|
8743
8818
|
} else if ('dirExclusionRegExp' in config) {
|
8744
8819
|
//Set file.dirExclusionRegExp if desired, this is the old
|
@@ -8978,7 +9053,9 @@ function (lang, logger, file, parse, optimize, pragma,
|
|
8978
9053
|
return match;
|
8979
9054
|
}
|
8980
9055
|
|
8981
|
-
if
|
9056
|
+
//Only mark this module as having a name if not a named module,
|
9057
|
+
//or if a named module and the name matches expectations.
|
9058
|
+
if (layer && (!namedModule || namedModule === moduleName)) {
|
8982
9059
|
layer.modulesWithNames[moduleName] = true;
|
8983
9060
|
}
|
8984
9061
|
|
@@ -9000,7 +9077,7 @@ function (lang, logger, file, parse, optimize, pragma,
|
|
9000
9077
|
}
|
9001
9078
|
}
|
9002
9079
|
|
9003
|
-
return start + namespace + "define('" + moduleName + "'," +
|
9080
|
+
return start + namespace + "define('" + (namedModule || moduleName) + "'," +
|
9004
9081
|
(deps ? ('[' + deps.toString() + '],') : '') +
|
9005
9082
|
(namedModule ? namedFuncStart.replace(build.leadingCommaRegExp, '') : suffix);
|
9006
9083
|
});
|
@@ -13,7 +13,7 @@ class RequirejsRailsTest < ActiveSupport::TestCase
|
|
13
13
|
test "require.js version" do
|
14
14
|
require_js = Pathname.new(__FILE__+'/../../vendor/assets/javascripts/require.js').cleanpath.read
|
15
15
|
context = ExecJS.compile(require_js)
|
16
|
-
assert_equal "1.0.
|
16
|
+
assert_equal "1.0.3", context.eval("require.version")
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/** vim: et:ts=4:sw=4:sts=4
|
2
|
-
* @license RequireJS 1.0.
|
2
|
+
* @license RequireJS 1.0.3 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
|
3
3
|
* Available via the MIT or new BSD license.
|
4
4
|
* see: http://github.com/jrburke/requirejs for details
|
5
5
|
*/
|
@@ -11,7 +11,7 @@
|
|
11
11
|
var requirejs, require, define;
|
12
12
|
(function () {
|
13
13
|
//Change this version number for each release.
|
14
|
-
var version = "1.0.
|
14
|
+
var version = "1.0.3",
|
15
15
|
commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,
|
16
16
|
cjsRequireRegExp = /require\(\s*["']([^'"\s]+)["']\s*\)/g,
|
17
17
|
currDirRegExp = /^\.\//,
|
@@ -1321,11 +1321,6 @@ var requirejs, require, define;
|
|
1321
1321
|
} : null]);
|
1322
1322
|
}
|
1323
1323
|
|
1324
|
-
//If a global jQuery is defined, check for it. Need to do it here
|
1325
|
-
//instead of main() since stock jQuery does not register as
|
1326
|
-
//a module via define.
|
1327
|
-
jQueryCheck();
|
1328
|
-
|
1329
1324
|
//Doing this scriptCount decrement branching because sync envs
|
1330
1325
|
//need to decrement after resume, otherwise it looks like
|
1331
1326
|
//loading is complete after the first dependency is fetched.
|
@@ -1939,10 +1934,6 @@ var requirejs, require, define;
|
|
1939
1934
|
//global queue, assign them to this context.
|
1940
1935
|
ctx.takeGlobalQueue();
|
1941
1936
|
|
1942
|
-
//Allow for jQuery to be loaded/already in the page, and if jQuery 1.4.3,
|
1943
|
-
//make sure to hold onto it for readyWait triggering.
|
1944
|
-
ctx.jQueryCheck();
|
1945
|
-
|
1946
1937
|
if (!ctx.scriptCount) {
|
1947
1938
|
ctx.resume();
|
1948
1939
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: requirejs-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-12-
|
12
|
+
date: 2011-12-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
16
|
-
requirement: &
|
16
|
+
requirement: &70284287973680 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.1.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70284287973680
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rails
|
27
|
-
requirement: &
|
27
|
+
requirement: &70284287973100 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 3.1.1
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70284287973100
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: sqlite3
|
38
|
-
requirement: &
|
38
|
+
requirement: &70284287972560 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70284287972560
|
47
47
|
description: This gem provides RequireJS support for your Rails 3 application.
|
48
48
|
email:
|
49
49
|
- whitley@bangpath.org
|
@@ -122,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
122
|
version: '0'
|
123
123
|
segments:
|
124
124
|
- 0
|
125
|
-
hash: -
|
125
|
+
hash: -2856611743431953633
|
126
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
@@ -131,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
131
|
version: '0'
|
132
132
|
segments:
|
133
133
|
- 0
|
134
|
-
hash: -
|
134
|
+
hash: -2856611743431953633
|
135
135
|
requirements:
|
136
136
|
- node.js is required for 'rake assets:precompile', used to run the r.js build
|
137
137
|
- If needed, jQuery should be v1.7 or greater (jquery-rails >= 1.0.17).
|