aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorGravatar rcoh <rcoh@mit.edu>2010-12-25 13:51:25 -0500
committerGravatar rcoh <rcoh@mit.edu>2010-12-25 13:51:25 -0500
commit2113f5363022e4ccb2b14d0a7ebd6765de820411 (patch)
tree4f1115f16e2ce688257eca712c6b85ea2b9d5868 /util
parent758a0222c2cd3db6a0dd05fe4f5afc362b58ada1 (diff)
Early stages of support for config inheritance. MIGHT NOT WORK! Sorry. -RCOH
Diffstat (limited to 'util')
-rw-r--r--util/Config.py26
-rw-r--r--util/Strings.py1
2 files changed, 27 insertions, 0 deletions
diff --git a/util/Config.py b/util/Config.py
index 55da1b4..746350d 100644
--- a/util/Config.py
+++ b/util/Config.py
@@ -51,3 +51,29 @@ def generateArgDict(parentNode, recurse=False):
if len(args.keys()) == 1 and recurse:
return args[args.keys()[0]]
return args
+def compositeXMLTrees(parentTree, overridingTree):
+ #type checking -- convert ElementTrees to their root elements
+ parentItems = parentTree.getchildren()
+ overrideItems = overridingTree.getchildren()
+ #first, lets figure out what tags we have in the override tree:
+ tagCollection = [el.tag for el in overrideItems] #we can speed this up with a dict if necessary
+ overrideRoot = overridingTree.getroot()
+ for item in parentItems:
+ if not item.tag in tagCollection: #no override
+ overrideRoot.insert(-1, item) #insert the new item at the end
+ else:
+ #do we merge or replace?
+ intersectingElements = findElementsByTag(item.tag, overrideItems)
+ if len(intersectingItems) > 1:
+ print 'ABUSE!'
+ interEl = intersectingElements[0]
+ mode = 'Replace'
+ if Strings.OVERRIDE_BEHAVIOR in interEl.attrib:
+ mode = interEl.attrib[Strings.OVERRIDE_BEHAVIOR]
+ if mode != 'Replace' and mode != 'Merge':
+ print 'Bad Mode. Replacing'
+ mode = 'Replace'
+ if mode = 'Replace':
+ pass #we don't need to do anything
+ if mode = 'Merge':
+ pass #TODO: code this
diff --git a/util/Strings.py b/util/Strings.py
index 1331db4..d58202d 100644
--- a/util/Strings.py
+++ b/util/Strings.py
@@ -1 +1,2 @@
LOCATION = 'Location'
+OVERRIDE_BEHAVIOR = 'OverrideBehavior'