Mercurial > codeOptimizer
diff Options.py @ 2:10f1d7de9bc3
New module for reading configurations.
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Sun, 16 Sep 2012 21:29:22 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Options.py Sun Sep 16 21:29:22 2012 +0200 @@ -0,0 +1,32 @@ +#!/usr/bin/env python -O + +import xml.dom.minidom, sys, re + +class Config: + def __init__(self, path): + self.document = xml.dom.minidom.parse(path) + + @staticmethod + def getOption(node, option, match): + for potentialMatch in node.childNodes: + if potentialMatch.nodeName == "option": + if potentialMatch.hasAttribute('match'): + matchstr = potentialMatch.getAttribute('match') + try: + prog = re.compile(matchstr) + except: + raise xml.dom.SyntaxErr(matchstr + + + " is not a valid value for attribute match") + if prog.match(match): + res = Config.getOption(potentialMatch, option, match) + if not res: + res = potentialMatch.getAttribute('cxxflags') + return res + return None + + def getCxxflags(self, name): + value = self.getOption(self.document.childNodes[0], 'Cxxflags', name) + if not value: + raise xml.dom.NotFoundErr() + return value
