annotate Config.py @ 10:09b39021c4af

Make filename an attribute of file.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Wed, 14 Nov 2012 21:44:53 +0100
parents 3a56cd936c59
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
1 #!/usr/bin/env python -O
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
2
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
3 import xml.dom.minidom, sys, re
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
4
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
5 class Config:
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
6 def __init__(self, path):
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
7 self.document = xml.dom.minidom.parse(path)
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
8
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
9 @staticmethod
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
10 def getOption(node, option, match):
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
11 for potentialMatch in node.childNodes:
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
12 if potentialMatch.nodeName == "option":
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
13 if potentialMatch.hasAttribute('match'):
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
14 matchstr = potentialMatch.getAttribute('match')
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
15 try:
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
16 prog = re.compile(matchstr)
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
17 except:
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
18 raise xml.dom.SyntaxErr(matchstr
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
19 +
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
20 " is not a valid value for attribute match")
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
21 if prog.match(match):
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
22 res = Config.getOption(potentialMatch, option, match)
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
23 if not res:
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
24 res = potentialMatch.getAttribute('cxxflags')
10
09b39021c4af Make filename an attribute of file.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
25 return res
2
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
26 return None
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
27
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
28 def getCxxflags(self, name):
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
29 value = self.getOption(self.document.childNodes[0], 'Cxxflags', name)
4
3a56cd936c59 Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
30 if value == None:
2
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
31 raise xml.dom.NotFoundErr()
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
32 return value
4
3a56cd936c59 Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
33
3a56cd936c59 Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
34 def getFiles(self):
3a56cd936c59 Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
35 retVal = []
3a56cd936c59 Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
36 for elem in self.document.getElementsByTagName('file'):
10
09b39021c4af Make filename an attribute of file.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
37 if elem.hasAttribute('name'):
09b39021c4af Make filename an attribute of file.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
38 retVal.append(elem.getAttribute('name'))
09b39021c4af Make filename an attribute of file.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
39 else:
09b39021c4af Make filename an attribute of file.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
40 raise xml.dom.SyntaxErr("<file> must have a name attribute")
09b39021c4af Make filename an attribute of file.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 4
diff changeset
41
4
3a56cd936c59 Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 3
diff changeset
42 return retVal