X-Git-Url: https://mudpy.org/gitweb?a=blobdiff_plain;f=lib%2Fmudpy%2Fdata.py;h=9c167f5469d32b8cf2b5fb9a4d7caca8ee61bdc3;hb=c107f5282c9c7356103a5556a7173aa35a5805ec;hp=8386842c4d3ace3b97b9e6e54e662184b52902cb;hpb=7e78772b5ba2efbb84710db0ecd540c9b745217a;p=mudpy.git diff --git a/lib/mudpy/data.py b/lib/mudpy/data.py index 8386842..9c167f5 100644 --- a/lib/mudpy/data.py +++ b/lib/mudpy/data.py @@ -1,6 +1,6 @@ """Data interface functions for the mudpy engine.""" -# Copyright (c) 2004-2015 Jeremy Stanley . Permission +# Copyright (c) 2004-2016 Jeremy Stanley . Permission # to use, copy, modify, and distribute this software is granted under # terms provided in the LICENSE file distributed with this software. @@ -14,7 +14,7 @@ import yaml class DataFile: - """A file containing universe elements.""" + """A file containing universe elements and their facets.""" def __init__(self, filename, universe): self.filename = filename @@ -23,7 +23,7 @@ class DataFile: self.load() def load(self): - """Read a file and create elements accordingly.""" + """Read a file, create elements and poplulate facets accordingly.""" self.modified = False try: self.data = yaml.safe_load(open(self.filename)) @@ -84,9 +84,21 @@ class DataFile: includes.append(item) if item not in self.universe.private_files: self.universe.private_files.append(item) - for element in self.data: - if element != "__control__": - mudpy.misc.Element(element, 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( @@ -252,7 +264,7 @@ def find_file( else: search_path = search_path[:] - # if there's no default path, use the last element of the search path + # if there's no default path, use the last component of the search path if not default_dir: default_dir = search_path[-1]