Import of working code base
Signed-off-by: martin f. krafft <madduck@madduck.net>
diff --git a/mergers/dict/recursive_update.py b/mergers/dict/recursive_update.py
new file mode 100644
index 0000000..ba94c1f
--- /dev/null
+++ b/mergers/dict/recursive_update.py
@@ -0,0 +1,25 @@
+#
+# -*- coding: utf-8 -*-
+#
+# This file is part of reclass (http://github.com/madduck/reclass)
+#
+# Copyright © 2007–13 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+from base import BaseDictMerger
+
+class DictRecursiveUpdate(BaseDictMerger):
+
+ def merge(self, first, second):
+ ret = first.copy()
+ for k,v in second.iteritems():
+ if k in ret:
+ if isinstance(ret[k], dict):
+ if isinstance(v, (list, tuple)):
+ v = dict(v)
+ ret[k] = self.merge(ret[k], v)
+ else:
+ ret[k] = v
+ else:
+ ret[k] = v
+ return ret