You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by st...@apache.org on 2013/05/14 23:13:02 UTC

[23/38] js commit: Rewriting require to allow for relative paths within a module

Rewriting require to allow for relative paths within a module

Reviewed by Bryan Higgins <bh...@blackberry.com>


Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/8b06f297
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/8b06f297
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/8b06f297

Branch: refs/heads/3.0.0
Commit: 8b06f297fd415835dc0dfa729e96e7ce4fc074ad
Parents: b205fd1
Author: Jeffrey Heifetz <jh...@blackberry.com>
Authored: Mon Apr 8 15:58:13 2013 -0400
Committer: Bryan Higgins <bh...@blackberry.com>
Committed: Fri May 3 09:50:04 2013 -0400

----------------------------------------------------------------------
 lib/scripts/require.js |   21 ++++++++++++++++-----
 test/test.require.js   |    2 +-
 2 files changed, 17 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/8b06f297/lib/scripts/require.js
----------------------------------------------------------------------
diff --git a/lib/scripts/require.js b/lib/scripts/require.js
index 5dbc905..93f8d16 100644
--- a/lib/scripts/require.js
+++ b/lib/scripts/require.js
@@ -23,17 +23,28 @@ var require,
     define;
 
 (function () {
-    var modules = {};
+    var modules = {},
     // Stack of moduleIds currently being built.
-    var requireStack = [];
+        requireStack = [],
     // Map of module ID -> index into requireStack of modules currently being built.
-    var inProgressModules = {};
+        inProgressModules = {},
+        SEPERATOR = ".";
+
+
 
     function build(module) {
-        var factory = module.factory;
+        var factory = module.factory,
+            localRequire = function (id) {
+                var resultantId = id;
+                //Its a relative path, so lop off the last portion and add the id (minus "./")
+                if (id.charAt(0) === ".") {
+                    resultantId = module.id.slice(0, module.id.lastIndexOf(SEPERATOR)) + SEPERATOR + id.slice(2);
+                }
+                return require(resultantId);
+            };
         module.exports = {};
         delete module.factory;
-        factory(require, module.exports, module);
+        factory(localRequire, module.exports, module);
         return module.exports;
     }
 

http://git-wip-us.apache.org/repos/asf/cordova-js/blob/8b06f297/test/test.require.js
----------------------------------------------------------------------
diff --git a/test/test.require.js b/test/test.require.js
index 7734e41..19d179d 100644
--- a/test/test.require.js
+++ b/test/test.require.js
@@ -93,7 +93,7 @@ describe("require + define", function () {
             define("dino", factory);
             require("dino");
 
-            expect(factory).toHaveBeenCalledWith(require,
+            expect(factory).toHaveBeenCalledWith(jasmine.any(Function),
                 {}, {
                     id: "dino",
                     exports: {}