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