annotate Config.py @ 3:f65c2d63ab66

Rename Options to Config
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Sun, 16 Sep 2012 21:31:41 +0200
parents Options.py@10f1d7de9bc3
children 3a56cd936c59
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')
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
25 return res
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)
10f1d7de9bc3 New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
30 if not value:
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