Mercurial > codeOptimizer
annotate 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 |
| 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 |
