#MUDPyE - (M)ulti-(U)ser (D)imension (Py)thon (E)ngine #Copyright (C) 2005 Corey Staten #This program is free software; you can redistribute it and/or #modify it under the terms of the GNU General Public License #as published by the Free Software Foundation; either version 2 #of the License, or (at your option) any later version. #This program is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with this program; if not, write to the Free Software #Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #Send feedback/questions to MUDPyE@gmail.com import os import re def ReadPropertiesFile(mudWorld, fileName): propertyDict = {} fileName = os.path.normpath(fileName) openFile = file(fileName, 'r') while 1: line = openFile.readline() if line == "": break elif line.strip() == "": continue result = re.match(r"(.*?)=(.*)", line.strip()) if result == None: mudWorld.loggers["engine.fileloader"].warning("Invalid line in file %s." % (fileName)) continue propertyDict[result.group(1)] = result.group(2) openFile.close() return propertyDict def ReadTransitionFile(mudWorld, fileName): transitionDict = {} fileName = os.path.normpath(fileName) openFile = file(fileName, 'r') while 1: line = openFile.readline() if line == "": break elif line.strip() == "": continue result = re.match(r"from (.*?) to (.*)", line) if result == None: mudWorld.loggers["engine.fileloader"].warning("Invalid line in file [%s]." % (fileName)) continue transitionDict[result.group(1)] = result.group(2) openFile.close() return transitionDict def ReadIndexFile(mudWorld, fileName): indexList = [] objectDict = {} fileName = os.path.normpath(fileName) try: openFile = file(fileName, 'r') except IOError: mudWorld.loggers["engine.fileloader"].error("Non-existant index file [%s]." % fileName) return {} dirName = os.path.dirname(fileName) while 1: line = openFile.readline() if line == "": break elif line.strip() == "": continue result1 = re.match(r"index (.*)", line) result2 = re.match(r"object (.*?) (.*)", line) if result1 != None: indexList.append(os.path.join(dirName, result1.group(1))) elif result2 != None: objectDict[result2.group(1)] = os.path.join(dirName, result2.group(2)) else: mudWorld.loggers["engine.fileloader"].warning("Invalid line in file %s." % (fileName)) continue openFile.close() for indexName in indexList: objectDict.update(ReadIndexFile(mudWorld, indexName)) return objectDict