import repository from arizona
[raven.git] / lib / arizona-lib / arizonaxml.py
1 #!/usr/bin/env python
2
3 """
4 <Program Name>
5    arizonaxml.py
6
7 <Author>
8    Justin Cappos
9
10 <Purpose>
11    arizona_xml parser
12 """
13
14 import sys
15 import os
16 import string
17 import re
18 import arizonareport
19 import xml.sax.saxutils
20 import xml.parsers.expat
21
22
23
24 class XMLError(ValueError):
25    "XML syntax error"
26
27
28
29
30
31 class ShadowedAttribute(AttributeError):
32    "Class's attribute shadows superclass's attribute of same name"
33
34
35
36
37
38 def CreateAttr(obj, attr, value):
39    """
40    <Purpose>
41       TODO fix comment
42    """
43    if hasattr(obj, attr):
44       # The programmer used a variable name that is already used
45       raise ShadowedAttribute, attr
46    setattr(obj, attr, value)
47
48
49
50
51
52 class XMLApplication:
53
54    def __init__(self):
55        pass
56
57    def parse(self, filename=None, contents=None):
58        p = xml.parsers.expat.ParserCreate()
59        p.StartElementHandler = self.handle_start_tag
60        p.EndElementHandler = self.handle_end_tag
61        p.CharacterDataHandler = self.handle_data_wrapper
62        if filename:
63            f = open(filename)
64            p.ParseFile(f)
65            f.close()
66        else:
67            p.Parse(contents)
68
69    def handle_data_wrapper(self, data):
70        self.handle_data(data, 0, len(data))
71
72    def handle_start_tag(self, tag, attrs):
73        pass
74
75    def handle_data(self, data, start, end):
76        pass
77
78    def handle_end_tag(self, tag):
79        pass
80
81
82
83
84
85 def XMLParse(app, dtd, filename):
86    """
87    <Purpose>
88       Creates the parser for the trustedpackages file and parses it.
89       Returns a dictionary of group members.
90
91    TODO finish comment
92    """
93    app.parse(filename=filename)
94
95    return app
96
97
98
99
100 def escape(string):
101    """
102    <Purpose>
103       TODO fix comment
104    """
105    return xml.sax.saxutils.escape(string)
106
107
108
109
110
111 def unescape(string):
112    """
113    <Purpose>
114       TODO fix comment
115    """
116    return xml.sax.saxutils.unescape(string)