summaryrefslogtreecommitdiff
path: root/giscanner/gdumpparser.py
diff options
context:
space:
mode:
authorJohan Dahlin <johan@gnome.org>2010-09-02 11:07:01 -0300
committerJohan Dahlin <johan@gnome.org>2010-09-02 12:37:54 -0300
commit5c25cabe5aa0385c224d519eedfd1df9e7e42187 (patch)
tree65a2bca8ceee20a9d0fa8dce27a30c0ee5eb1985 /giscanner/gdumpparser.py
parent0b0a3cc7705ca797bc8315ba0815644bef5d30fb (diff)
downloadgobject-introspection-5c25cabe5aa0385c224d519eedfd1df9e7e42187.tar.gz
[scanner] Simplify strip_identifer/strip_symbol
The strip_* functions are problematic since they have a fatal switch which determines if the message should kill the scanner. Change the api to make it easier to extend with other logging categories and move over the callsites to use the new message module
Diffstat (limited to 'giscanner/gdumpparser.py')
-rw-r--r--giscanner/gdumpparser.py45
1 files changed, 29 insertions, 16 deletions
diff --git a/giscanner/gdumpparser.py b/giscanner/gdumpparser.py
index 7f1d2290..d93a4645 100644
--- a/giscanner/gdumpparser.py
+++ b/giscanner/gdumpparser.py
@@ -27,6 +27,8 @@ from xml.etree.cElementTree import parse
from . import ast
from . import glibast
+from . import message
+from .transformer import TransformerException
# GParamFlags
G_PARAM_READABLE = 1 << 0
@@ -254,7 +256,10 @@ blob containing data gleaned from GObject's primitive introspection."""
klass = (glibast.GLibFlags if node.tag == 'flags' else glibast.GLibEnum)
type_name = node.attrib['name']
- enum_name = self._transformer.strip_identifier_or_warn(type_name, fatal=True)
+ try:
+ enum_name = self._transformer.strip_identifier(type_name)
+ except TransformerException, e:
+ message.fatal(e)
node = klass(enum_name, type_name, members, node.attrib['get-type'])
self._namespace.append(node, replace=True)
@@ -275,11 +280,12 @@ blob containing data gleaned from GObject's primitive introspection."""
return
is_abstract = bool(xmlnode.attrib.get('abstract', False))
(get_type, c_symbol_prefix) = self._split_type_and_symbol_prefix(xmlnode)
- node = glibast.GLibObject(
- self._transformer.strip_identifier_or_warn(type_name, fatal=True),
- None,
- type_name,
- get_type, c_symbol_prefix, is_abstract)
+ try:
+ object_name = self._transformer.strip_identifier(type_name)
+ except TransformerException, e:
+ message.fatal(e)
+ node = glibast.GLibObject(object_name, None, type_name,
+ get_type, c_symbol_prefix, is_abstract)
self._parse_parents(xmlnode, node)
self._introspect_properties(node, xmlnode)
self._introspect_signals(node, xmlnode)
@@ -291,10 +297,12 @@ blob containing data gleaned from GObject's primitive introspection."""
def _introspect_interface(self, xmlnode):
type_name = xmlnode.attrib['name']
(get_type, c_symbol_prefix) = self._split_type_and_symbol_prefix(xmlnode)
- node = glibast.GLibInterface(
- self._transformer.strip_identifier_or_warn(type_name, fatal=True),
- None,
- type_name, get_type, c_symbol_prefix)
+ try:
+ interface_name = self._transformer.strip_identifier(type_name)
+ except TransformerException, e:
+ message.fatal(e)
+ node = glibast.GLibInterface(interface_name, None, type_name,
+ get_type, c_symbol_prefix)
self._introspect_properties(node, xmlnode)
self._introspect_signals(node, xmlnode)
for child in xmlnode.findall('prerequisite'):
@@ -379,11 +387,13 @@ blob containing data gleaned from GObject's primitive introspection."""
type_name = xmlnode.attrib['name']
is_abstract = bool(xmlnode.attrib.get('abstract', False))
(get_type, c_symbol_prefix) = self._split_type_and_symbol_prefix(xmlnode)
- node = glibast.GLibObject(
- self._transformer.strip_identifier_or_warn(type_name, fatal=True),
- None,
- type_name,
- get_type, c_symbol_prefix, is_abstract)
+ try:
+ fundamental_name = self._transformer.strip_identifier(type_name)
+ except TransformerException, e:
+ message.fatal(e)
+
+ node = glibast.GLibObject(fundamental_name, None, type_name,
+ get_type, c_symbol_prefix, is_abstract)
self._parse_parents(xmlnode, node)
node.fundamental = True
self._introspect_implemented_interfaces(node, xmlnode)
@@ -404,7 +414,10 @@ blob containing data gleaned from GObject's primitive introspection."""
field.writable = False
def _pair_boxed_type(self, boxed):
- name = self._transformer.strip_identifier_or_warn(boxed.type_name, fatal=True)
+ try:
+ name = self._transformer.strip_identifier(boxed.type_name)
+ except TransformerException, e:
+ message.fatal(e)
pair_node = self._namespace.get(name)
if not pair_node:
boxed_item = glibast.GLibBoxedOther(name, boxed.type_name,