From b09a41f0891c041ad4fcecca59d03f52fe9ee9e8 Mon Sep 17 00:00:00 2001 From: rcoh Date: Sat, 25 Dec 2010 16:32:29 -0500 Subject: 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. --- util/Config.py | 46 ++++++++++++++-------------------------------- 1 file changed, 14 insertions(+), 32 deletions(-) (limited to 'util') 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 -- cgit v1.2.3