0

Allow global defaults to be specified

This commit is contained in:
Andrew Chin
2011-12-31 20:59:02 -05:00
parent 06dd78dc89
commit fed7ae0157
4 changed files with 26 additions and 10 deletions

View File

@@ -225,6 +225,9 @@ class MultiWorldParser(object):
try:
execfile(self.settings_file, glob, glob)
# delete the builtins, we don't need it
del glob['__builtins__']
except NameError, ex:
import traceback
traceback.print_exc()
@@ -240,18 +243,25 @@ class MultiWorldParser(object):
self.render = glob['render']
self.custom_rendermodes = glob['custom_rendermodes']
#import pprint
#pprint.pprint(glob, indent=2)
# anything that's not 'render' or 'custom_rendermode' is a default
del glob['render']
del glob['custom_rendermodes']
self.defaults = glob
import pprint
pprint.pprint(glob, indent=2)
def validate(self):
for worldname in self.render:
world = self.render[worldname]
world.update(self.defaults)
for key in world:
if key not in settingsDefinition.render:
print "Warning: %r is not a known setting"
print "Warning: %r is not a known setting" % key
next
definition = settingsDefinition.render[key]

View File

@@ -15,8 +15,8 @@ from settingsValidators import *
render = {
"path": dict(required=True, validator=validatePath),
"rendermodes": dict(required=False, validator=validateRenderMode),
"world_path": dict(required=True, validator=validatePath),
"rendermode": dict(required=False, validator=validateRenderMode),
"north-direction": dict(required=False, validator=validateNorthDirection),
"render-range": dict(required=False, validator=validateRenderRange),
"force-render": dict(required=False, validator=bool),

View File

@@ -1,5 +1,11 @@
world_path="test/data/settings/test_world"
rendermode = "normal"
render["world"] = {
"path": "test/data/settings/test_world",
"rendermodes": ["normal"],
"rendermode": "normal",
"north-direction": ["upper-left"],
}
render["otherworld"] = {
"rendermode": "foo"
}

View File

@@ -1,5 +1,5 @@
render["world"] = {
"path": "test/data/settings/test_world",
"rendermodes": ["bad_rendermode"],
"world_path": "test/data/settings/test_world",
"rendermode": "bad_rendermode",
"north-direction": ["upper-left"],
}