requirejs-rails 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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).
|