aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorGravatar rcoh <rcoh@mit.edu>2010-12-25 16:32:29 -0500
committerGravatar rcoh <rcoh@mit.edu>2010-12-25 16:32:29 -0500
commitb09a41f0891c041ad4fcecca59d03f52fe9ee9e8 (patch)
tree26cf710c89c3930c836de078277b9b761ed185b1 /util
parent1b84f44faacfe83d4f3603b4df913ed01bf79d09 (diff)
some testcode that should be in the testing branch, but w/e. A method to composite to xml trees,
and a unit test to test it.
Diffstat (limited to 'util')
-rw-r--r--util/Config.py46
1 files changed, 14 insertions, 32 deletions
diff --git a/util/Config.py b/util/Config.py
index 0349e3e..36ff104 100644
--- a/util/Config.py
+++ b/util/Config.py
@@ -1,4 +1,6 @@
-from xml.etree.ElementTree import ElementTree
+from xml.etree.ElementTree import *
+import xml
+import pdb
import util.Strings as Strings
classArgsMem = {}
CONFIG_PATH = 'config/'
@@ -17,20 +19,26 @@ def loadConfigFile(fileName): #TODO: error handling etc.
return config
#except:
return None
+def getElement(el):
+ if xml.etree.ElementTree.iselement(el):
+ return el
+ elif el.__class__ == ElementTree:
+ return el.getroot()
def compositeXMLTrees(parentTree, overridingTree):
#type checking -- convert ElementTrees to their root elements
+ parentTree = getElement(parentTree)
+ overridingTree = getElement(overridingTree)
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
+ overridingTree.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:
+ if len(intersectingElements) > 1:
print 'ABUSE!'
interEl = intersectingElements[0]
mode = 'Replace'
@@ -42,8 +50,8 @@ def compositeXMLTrees(parentTree, overridingTree):
if mode == 'Replace':
pass #we don't need to do anything
if mode == 'Merge':
- pass #TODO: code this
-
+ interEl = compositeXMLTrees(item, interEl)
+ return overridingTree
def findElementsByTag(tag, eList):
return [el for el in eList if el.tag == tag]
def fileToDict(fileName):
@@ -81,29 +89,3 @@ 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