diff options
author | Johan Dahlin <johan@src.gnome.org> | 2008-04-22 11:28:48 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2008-04-22 11:28:48 +0000 |
commit | b0e24fefbb99e095a1c7f8cd53e6a7a2e32ef9db (patch) | |
tree | 83e5c9291bd4c709dd82515fdca90df65042bd0d /giscanner | |
parent | 3a5923b2342edc018d94defc2cb13ed1b0ef0cc4 (diff) | |
download | gobject-introspection-b0e24fefbb99e095a1c7f8cd53e6a7a2e32ef9db.tar.gz |
cleanup namespace stripping
svn path=/trunk/; revision=211
Diffstat (limited to 'giscanner')
-rw-r--r-- | giscanner/gobjecttreebuilder.py | 54 |
1 files changed, 26 insertions, 28 deletions
diff --git a/giscanner/gobjecttreebuilder.py b/giscanner/gobjecttreebuilder.py index 7b8004a2..320ddcf2 100644 --- a/giscanner/gobjecttreebuilder.py +++ b/giscanner/gobjecttreebuilder.py @@ -127,23 +127,21 @@ class GObjectTreeBuilder(object): def _register_internal_type(self, type_name, node): self._type_names[type_name] = (None, node) - def _strip_namespace(self, node): - prefix = self._namespace_name.lower() - if isinstance(node, Function): - # gtk_init_check -> init_check - prefix += '_' - name = node.name.lower() - elif isinstance(node, (Interface, Class, Struct, Enum)): - # GtkButton -> Button - # GtkTreeModel -> TreeModel - # etc - name = node.name.lower() - else: - raise NotImplementedError(node) + def _strip_namespace_func(self, name): + orig_name = name + prefix = self._namespace_name.lower() + '_' + name = name.lower() + if name.startswith(prefix): + name = orig_name[len(prefix):] + return name + def _strip_namespace_object(self, name): + orig_name = name + prefix = self._namespace_name.lower() + name = name.lower() if name.startswith(prefix): - old = node.name - node.name = node.name[len(prefix):] + name = orig_name[len(prefix):] + return name def _resolve_type_name(self, type_name): item = self._type_names.get(type_name) @@ -172,7 +170,7 @@ class GObjectTreeBuilder(object): print 'Unhandled node:', node def _parse_enum(self, enum): - self._strip_namespace(enum) + enum.name = self._strip_namespace_object(enum.name) self._add_attribute(enum) def _parse_function(self, func): @@ -186,7 +184,7 @@ class GObjectTreeBuilder(object): self._parse_parameters(func.parameters) func.retval.type = self._resolve_param_type(func.retval.type) - self._strip_namespace(func) + func.name = self._strip_namespace_func(func.name) self._add_attribute(func) def _parse_parameters(self, parameters): @@ -292,26 +290,26 @@ class GObjectTreeBuilder(object): klass = (GLibFlags if ftype_id == cgobject.TYPE_FLAGS else GLibEnum) type_name = cgobject.type_name(type_id) - cenum = klass(type_name, members, type_name, symbol) - self._strip_namespace(cenum) - self._add_attribute(cenum, replace=True) - self._register_internal_type(type_name, cenum) + node = klass(self._strip_namespace_object(type_name), + members, type_name, symbol) + self._add_attribute(node, replace=True) + self._register_internal_type(type_name, node) def _introspect_object(self, type_id, symbol): type_name = cgobject.type_name(type_id) parent_type_name = cgobject.type_name(cgobject.type_parent(type_id)) - parent_name = self._resolve_type_name(parent_type_name) - node = GLibObject(type_name, parent_name, type_name, symbol) + node = GLibObject(self._strip_namespace_object(type_name), + self._resolve_type_name(parent_type_name), + type_name, symbol) self._introspect_properties(node, type_id) - self._strip_namespace(node) self._add_attribute(node) self._remove_attribute(type_name) self._register_internal_type(type_name, node) def _introspect_interface(self, type_id, symbol): type_name = cgobject.type_name(type_id) - node = GLibInterface(type_name, type_name, symbol) - self._strip_namespace(node) + node = GLibInterface(self._strip_namespace_object(type_name), + type_name, symbol) self._introspect_properties(node, type_id) self._add_attribute(node) self._remove_attribute(type_name) @@ -319,8 +317,8 @@ class GObjectTreeBuilder(object): def _introspect_boxed(self, type_id, symbol): type_name = cgobject.type_name(type_id) - node = GLibBoxed(type_name, type_name, symbol) - self._strip_namespace(node) + node = GLibBoxed(self._strip_namespace_object(type_name), + type_name, symbol) self._add_attribute(node) self._remove_attribute(type_name) self._register_internal_type(type_name, node) |