Implement new style element support
[mudpy.git] / lib / mudpy / data.py
index 97032e2..9c167f5 100644 (file)
@@ -84,9 +84,21 @@ class DataFile:
                         includes.append(item)
                     if item not in self.universe.private_files:
                         self.universe.private_files.append(item)
-        for node in self.data:
-            if node != "__control__":
-                mudpy.misc.Element(node, self.universe, self.filename)
+        for node in list(self.data):
+            if node == "__control__":
+                continue
+            facet_pos = node.rfind(".") + 1
+            if not facet_pos:
+                mudpy.misc.Element(node, self.universe, self.filename,
+                                   old_style=True)
+            else:
+                prefix = node[:facet_pos].strip(".")
+                try:
+                    element = self.universe.contents[prefix]
+                except KeyError:
+                    element = mudpy.misc.Element(prefix, self.universe,
+                        self.filename)
+                element.set(node[facet_pos:], self.data[node])
         for include_file in includes:
             if not os.path.isabs(include_file):
                 include_file = find_file(