You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by fi...@apache.org on 2012/03/09 21:29:27 UTC
[1/2] git commit: adding require+define to cordova object,
removing from global scope by wrapping entire script in another
closure. tweaked browser test suite to work with new approach.
Updated Branches:
refs/heads/master e6539d054 -> 07b5166da
adding require+define to cordova object, removing from global scope by wrapping entire script in another closure. tweaked browser test suite to work with new approach.
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/commit/07b5166d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/tree/07b5166d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/diff/07b5166d
Branch: refs/heads/master
Commit: 07b5166da42811d12ca25a16e517406935685ebd
Parents: 56fa89f
Author: Fil Maj <ma...@gmail.com>
Authored: Thu Mar 8 17:45:44 2012 -0800
Committer: Fil Maj <ma...@gmail.com>
Committed: Fri Mar 9 12:28:14 2012 -0800
----------------------------------------------------------------------
Jakefile | 10 +++++-----
build/packager.js | 23 +++++++++++++++++++++--
lib/cordova.js | 2 ++
test/runner.js | 2 +-
test/suite.html | 2 ++
test/test.require.js | 9 +++++----
6 files changed, 36 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/07b5166d/Jakefile
----------------------------------------------------------------------
diff --git a/Jakefile b/Jakefile
index 6d2b9df..49266aa 100644
--- a/Jakefile
+++ b/Jakefile
@@ -22,11 +22,11 @@ task('build', ['clean'], function () {
fs = require('fs'),
packager = require("./build/packager");
- packager.bundle("blackberry");
- packager.bundle("playbook");
- packager.bundle("ios");
- packager.bundle("wp7");
- packager.bundle("android");
+ packager.write("blackberry");
+ packager.write("playbook");
+ packager.write("ios");
+ packager.write("wp7");
+ packager.write("android");
util.puts(fs.readFileSync("build/dalek", "utf-8"));
});
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/07b5166d/build/packager.js
----------------------------------------------------------------------
diff --git a/build/packager.js b/build/packager.js
index ce77fa2..b3933a7 100644
--- a/build/packager.js
+++ b/build/packager.js
@@ -24,6 +24,8 @@ function walk(dir, doRecursive) {
}
return results;
}
+
+// Simply inline includes the specified file(s) with an optional transform function.
function include(files, transform) {
files = files.map ? files : [files];
return files.map(function (file) {
@@ -37,6 +39,10 @@ function include(files, transform) {
}
}).join('\n');
}
+
+// Includes the specified file(s) with optional overriding id
+// Wraps the specified file(s) in a define statement which implicitly
+// creates a closure as well.
function drop(files, id) {
return include(files, function(file, path) {
var define_id = (typeof id != 'undefined' && id.length > 0 ? id : path.replace(/lib\//, "cordova/").replace(/\.js$/, ''));
@@ -96,19 +102,32 @@ module.exports = {
return "/*\n" + file + "\n*/\n";
});
+ // wrap the entire thing in one more closure
+ // closure closure closure
+ output += "(function() {\n";
+
//include modules
output += this.modules(platform);
- // HACK: this gets done in bootstrap.js anyways, once native side is ready + domcontentloaded is fired. Do we need it?
+ // HACK: this gets done in bootstrap.js anyways, once native side is ready + domcontentloaded is fired.
+ // TODO: Do we need it?
output += "window.cordova = require('cordova');\n";
//include bootstrap
output += include('lib/bootstrap.js');
- // TODO: we don't need platform-specific bootstrap.
+
+ // TODO/HACK: we don't need platform-specific bootstrap.
// those can go into the init function inside the platform/*.js
// files
output += include('lib/bootstrap/' + platform + '.js');
+ // closing the closure har har
+ output += "})();";
+
+ return output;
+ },
+ write: function (platform) {
+ var output = this.bundle(platform);
fs.writeFileSync(__dirname + "/../pkg/cordova." + platform + ".js", output);
}
};
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/07b5166d/lib/cordova.js
----------------------------------------------------------------------
diff --git a/lib/cordova.js b/lib/cordova.js
index 082f4c6..3d5b2a5 100644
--- a/lib/cordova.js
+++ b/lib/cordova.js
@@ -76,6 +76,8 @@ function createEvent(type, data) {
}
var cordova = {
+ define:define,
+ require:require,
/**
* Methods to add/remove your own addEventListener hijacking on document + window.
*/
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/07b5166d/test/runner.js
----------------------------------------------------------------------
diff --git a/test/runner.js b/test/runner.js
index dbdccf0..5e90067 100644
--- a/test/runner.js
+++ b/test/runner.js
@@ -87,7 +87,7 @@ module.exports = {
return '<script src="' + file.replace(/^.*test/, "test") +
'" type="text/javascript" charset="utf-8"></script>';
}).join('');
- modules = packager.modules('test');
+ modules = packager.bundle('test');
doc = html.replace(/<!-- TESTS -->/g, specs).replace(/"##MODULES##"/g, modules);
res.end(doc);
});
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/07b5166d/test/suite.html
----------------------------------------------------------------------
diff --git a/test/suite.html b/test/suite.html
index 1902040..ce4e392 100644
--- a/test/suite.html
+++ b/test/suite.html
@@ -35,6 +35,8 @@
<script type="text/javascript">
"##MODULES##"
+ var define = cordova.define;
+ var require = cordova.require;
</script>
<!-- TESTS -->
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/07b5166d/test/test.require.js
----------------------------------------------------------------------
diff --git a/test/test.require.js b/test/test.require.js
index b6e3ea8..b79dec4 100644
--- a/test/test.require.js
+++ b/test/test.require.js
@@ -1,7 +1,8 @@
-describe("require", function () {
- it("exists off of window", function () {
- expect(require).toBeDefined();
- expect(define).toBeDefined();
+describe("require + define", function () {
+ it("exist off of cordova", function () {
+ var cordova = require('cordova');
+ expect(cordova.require).toBeDefined();
+ expect(cordova.define).toBeDefined();
});
describe("when defining", function () {