]> git.0d.be Git - empathy.git/blob - tools/glib-errors-str-gen.py
Update Simplified Chinese help translation.
[empathy.git] / tools / glib-errors-str-gen.py
1 #!/usr/bin/python
2
3 import sys
4 import xml.dom.minidom
5
6 from libglibcodegen import NS_TP, get_docstring, xml_escape
7
8 class Generator(object):
9     def __init__(self, dom, basename):
10         self.dom = dom
11         self.errors = self.dom.getElementsByTagNameNS(NS_TP, 'errors')[0]
12         self.basename = basename
13
14         self.__header = []
15         self.__body = []
16         self.__docs = []
17
18     def h(self, s):
19         if isinstance(s, unicode):
20             s = s.encode('utf-8')
21         self.__header.append(s)
22
23     def b(self, s):
24         if isinstance(s, unicode):
25             s = s.encode('utf-8')
26         self.__body.append(s)
27
28     def d(self, s):
29         if isinstance(s, unicode):
30             s = s.encode('utf-8')
31         self.__docs.append(s)
32
33     def __call__(self):
34         errors = self.errors.getElementsByTagNameNS(NS_TP, 'error')
35
36         self.b('#include <telepathy-glib/errors.h>')
37         self.b('')
38         self.b('const gchar *')
39         self.b('tp_error_get_dbus_name (TpError error)')
40         self.b('{')
41         self.b('  switch (error)')
42         self.b('    {')
43
44         for error in errors:
45             ns = error.parentNode.getAttribute('namespace')
46             nick = error.getAttribute('name').replace(' ', '')
47             uc_nick = error.getAttribute('name').replace(' ', '_').replace('.', '_').upper()
48             name = 'TP_ERROR_STR_' + uc_nick
49             error_name = '%s.%s' % (ns, nick)
50
51             self.d('/**')
52             self.d(' * %s:' % name)
53             self.d(' *')
54             self.d(' * The D-Bus error name %s' % error_name)
55             self.d(' *')
56             self.d(' * %s' % xml_escape(get_docstring(error)))
57             self.d(' */')
58             self.d('')
59
60             self.h('#define %s "%s"' % (name, error_name))
61
62             self.b('      case TP_ERROR_%s:' % uc_nick)
63             self.b('        return %s;' % name)
64
65         self.b('      default:')
66         self.b('        g_return_val_if_reached (NULL);')
67         self.b('    }')
68         self.b('}')
69
70         # make both files end with a newline
71         self.h('')
72         self.b('')
73
74         open(self.basename + '.h', 'w').write('\n'.join(self.__header))
75         open(self.basename + '.c', 'w').write('\n'.join(self.__body))
76         open(self.basename + '-gtk-doc.h', 'w').write('\n'.join(self.__docs))
77
78 if __name__ == '__main__':
79     argv = sys.argv[1:]
80     basename = argv[0]
81
82     Generator(xml.dom.minidom.parse(argv[1]), basename)()