Repository: cordova-windows
Updated Branches:
  refs/heads/4.3.x 7f9b79c58 -> 8224a6ea3


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/8224a6ea/node_modules/cordova-common/src/util/xml-helpers.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/util/xml-helpers.js 
b/node_modules/cordova-common/src/util/xml-helpers.js
index 8b02989..fc84128 100644
--- a/node_modules/cordova-common/src/util/xml-helpers.js
+++ b/node_modules/cordova-common/src/util/xml-helpers.js
@@ -209,6 +209,9 @@ function mergeXml(src, dest, platform, clobber) {
     if (src.text && (clobber || !dest.text)) {
         dest.text = src.text;
     }
+    //Handle children
+    src.getchildren().forEach(mergeChild);
+
     //Handle platform
     if (platform) {
         src.findall('platform[@name="' + platform + '"]').forEach(function 
(platformElement) {
@@ -216,8 +219,8 @@ function mergeXml(src, dest, platform, clobber) {
         });
     }
 
-    //Handle children
-    src.getchildren().forEach(mergeChild);
+    //Handle duplicate preference tags (by name attribute)
+    removeDuplicatePreferences(dest);
 
     function mergeChild (srcChild) {
         var srcTag = srcChild.tag,
@@ -254,6 +257,26 @@ function mergeXml(src, dest, platform, clobber) {
             dest.append(destChild);
         }
     }
+    
+    function removeDuplicatePreferences(xml) {
+        // reduce preference tags to a hashtable to remove dupes
+        var prefHash = 
xml.findall('preference[@name][@value]').reduce(function(previousValue, 
currentValue) {
+            previousValue[ currentValue.attrib.name ] = 
currentValue.attrib.value;
+            return previousValue;
+        }, {});
+        
+        // remove all preferences
+        xml.findall('preference[@name][@value]').forEach(function(pref) {
+            xml.remove(pref);
+        });
+        
+        // write new preferences
+        Object.keys(prefHash).forEach(function(key, index) {
+            var element = et.SubElement(xml, 'preference');
+            element.set('name', key);
+            element.set('value', this[key]);
+        }, prefHash);
+    }
 }
 
 // Expose for testing.

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/8224a6ea/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index bd2c860..aa3e5e3 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
         "jshint": "jshint bin && jshint template && jshint spec"
     },
     "dependencies": {
-        "cordova-common": "^1.0.0",
+        "cordova-common": "^1.1.1",
         "elementtree": "^0.1.6",
         "node-uuid": "^1.4.3",
         "nopt": "^3.0.4",
@@ -48,4 +48,4 @@
     ],
     "author": "Apache Software Foundation",
     "license": "Apache-2.0"
-}
\ No newline at end of file
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cordova.apache.org
For additional commands, e-mail: commits-h...@cordova.apache.org

Reply via email to