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 () {