You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2013/01/21 19:01:39 UTC

[4/10] js commit: [all] Tweaks to builder.js

[all] Tweaks to builder.js

- Export clobber and recursiveMerge functions
- Eliminated a dead-code branch (never have !clobber && merge)
- Fix the case where sub-objects could not be merged as new properties


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

Branch: refs/heads/master
Commit: 1e4e198a7b202b4bc79f46748fbe46de6009aa38
Parents: 54c0553
Author: Andrew Grieve <ag...@chromium.org>
Authored: Wed Jan 16 16:24:26 2013 -0500
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Wed Jan 16 16:33:47 2013 -0500

----------------------------------------------------------------------
 lib/common/builder.js |   17 +++++++----------
 1 files changed, 7 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/1e4e198a/lib/common/builder.js
----------------------------------------------------------------------
diff --git a/lib/common/builder.js b/lib/common/builder.js
index 2eac76a..38760d7 100644
--- a/lib/common/builder.js
+++ b/lib/common/builder.js
@@ -72,10 +72,6 @@ function include(parent, objects, clobber, merge) {
             // Overwrite if not currently defined.
             if (typeof parent[key] == 'undefined') {
               assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);
-            } else if (merge && typeof obj.path !== 'undefined') {
-              // If merging, merge parent onto result
-              recursiveMerge(result, parent[key]);
-              parent[key] = result;
             } else {
               // Set result to what already exists, so we can build children into it if they exist.
               result = parent[key];
@@ -101,19 +97,18 @@ function include(parent, objects, clobber, merge) {
 function recursiveMerge(target, src) {
     for (var prop in src) {
         if (src.hasOwnProperty(prop)) {
-            if (typeof target.prototype !== 'undefined' && target.prototype.constructor === target) {
+            if (target.prototype && target.prototype.constructor === target) {
                 // If the target object is a constructor override off prototype.
-                target.prototype[prop] = src[prop];
+                clobber(target.prototype, prop, src[prop]);
             } else {
-                if (typeof src[prop] === 'object') {
-                    target[prop] = recursiveMerge(target[prop], src[prop]);
+                if (typeof src[prop] === 'object' && typeof target[prop] === 'object') {
+                    recursiveMerge(target[prop], src[prop]);
                 } else {
                     clobber(target, prop, src[prop]);
                 }
             }
         }
     }
-    return target;
 }
 
 module.exports = {
@@ -125,5 +120,7 @@ module.exports = {
     },
     buildIntoAndMerge: function(objects, target) {
         include(target, objects, true, true);
-    }
+    },
+    recursiveMerge: recursiveMerge,
+    clobber: clobber
 };