X-Git-Url: https://mudpy.org/gitweb?p=mudpy.git;a=blobdiff_plain;f=lib%2Fmuff%2Fmuffuniv.py;h=9fd98508e27a9f89a3a362f58f08c1b5fb663111;hp=91a4ca57d08cd19c6df39d35ea995d1d5fe5f41d;hb=724736a86ae223448f90a6d3a15adacd035feaa5;hpb=da136e612520ef6a3a19d99563e44b6518f91e7e diff --git a/lib/muff/muffuniv.py b/lib/muff/muffuniv.py index 91a4ca5..9fd9850 100644 --- a/lib/muff/muffuniv.py +++ b/lib/muff/muffuniv.py @@ -17,8 +17,16 @@ class Element: def __init__(self, key, origin, universe): """Default values for the in-memory element variables.""" self.key = key + if not origin.startswith(os.sep): + origin = os.getcwd() + os.sep + origin self.origin = origin universe.contents[key] = self + if key.find(":"): + category = key.split(":", 1) + if category[0] in universe.categories: + exec("universe." + category[0] + "s[category[1]] = self") + if not origin in universe.files.keys(): + DataFile(origin, universe) if not universe.files[origin].data.has_section(key): universe.files[origin].data.add_section(key) def facets(self): @@ -32,10 +40,16 @@ class Element: return universe.files[self.origin].data.get(self.key, facet) except: return None + def getint(self, facet): + """Convenience method to coerce return values as type int.""" + value = self.get(facet) + if not value: value = 0 + elif type(value) is str: value = value.rstrip("L") + return int(value) def set(self, facet, value): """Set values.""" if facet in universe.files[self.origin].data.options(self.key): - universe.files[self.origin].data.set(self.key, facet, value) + universe.files[self.origin].data.set(self.key, facet, repr(value)) else: self.facet = value def rec(self, facet, value): """Add initial values to the record.""" @@ -70,11 +84,14 @@ class DataFile: class Universe: """The universe.""" def __init__(self): - filename = muffconf.get("files", "data") - if not filename.startswith(os.sep): filename = os.getcwd() + os.sep + filename self.contents = {} self.files = {} - DataFile(filename, self) + self.categories = [ "account", "actor", "command", "internal", "item", "menu", "room" ] + for item in self.categories: exec("self." + item + "s = {}") + for item in [ "avatars", "commands", "internals", "universe" ]: + filename = muffconf.get("files", item) + if not filename.startswith(os.sep): filename = os.getcwd() + os.sep + filename + DataFile(filename, self) def save(self): for key in self.files.keys(): self.files[key].save() @@ -82,7 +99,7 @@ def element_exists(key): return key in universe.contents.keys() # reload the muffconf module if the files:data setting does not exist try: - if muffconf.get("files", "data"): pass + if muffconf.has_section("files"): pass except AttributeError: reload(muffconf)