X-Git-Url: https://mudpy.org/gitweb?a=blobdiff_plain;f=lib%2Fmuff%2Fmuffvars.py;h=1abfe86acc87c02998c05aec136ab28bd35a483e;hb=da136e612520ef6a3a19d99563e44b6518f91e7e;hp=b7879cc2d4c9b033771e5ac48babbfaa6d6eac64;hpb=75eb080edddbffd4e6e0208aeff751b072da8288;p=mudpy.git diff --git a/lib/muff/muffvars.py b/lib/muff/muffvars.py index b7879cc..1abfe86 100644 --- a/lib/muff/muffvars.py +++ b/lib/muff/muffvars.py @@ -1,46 +1,74 @@ """Global variable objects for the MUFF Engine""" -# Copyright (c) 2005 mudpy, Jeremy Stanley -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# - Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# - Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. +# Copyright (c) 2005 mudpy, Jeremy Stanley , all rights reserved. +# Licensed per terms in the LICENSE file distributed with this software. +# persistent variables are stored in ini-style files supported by ConfigParser +import ConfigParser + +# need to be able to create the variable save file's directory +import os + +# hack to load all modules in the muff package import muff for module in muff.__all__: exec("import " + module) +# does the files:variable setting exist yet? +try: + if muffconf.get("files", "variable"): pass + +# if not, reload the muffconf module +except AttributeError: + reload(muffconf) + +# now we can safely load persistent variables from file +variable_file = muffconf.get("files", "variable") +variable_data = ConfigParser.SafeConfigParser() +variable_data.read(variable_file) + +# if there is no userlist, create an empty one try: if userlist: pass except NameError: userlist = [] +# if there is no listening socket, create an empty one try: if newsocket: pass except NameError: newsocket = None +# flag to raise when the world should be shut down terminate_world = False + +# flag to raise when all code modules, config and data should be reloaded reload_modules = False +# a dict of replacement macros +macros = { + "$(eol)": "\r\n", + "$(bld)": chr(27) + "[1m", + "$(nrm)": chr(27) + "[0m", + "$(blk)": chr(27) + "[30m", + "$(grn)": chr(27) + "[32m", + "$(red)": chr(27) + "[31m" + } + +def save(): + """Function to save persistent variables to a file.""" + + # try to open the variable file + try: + file_descriptor = file(variable_file, "w") + + # failing that, make the directory in which it resides first + except IOError: + os.makedirs(os.sep.join(variable_file.split(os.sep)[:-1])) + file_descriptor = file(variable_file, "w") + + # now write the data and close out the file + variable_data.write(file_descriptor) + file_descriptor.flush() + file_descriptor.close() +