gobject-introspection r190 - in trunk: . giscanner
- From: johan svn gnome org
- To: svn-commits-list gnome org
- Subject: gobject-introspection r190 - in trunk: . giscanner
- Date: Mon, 21 Apr 2008 15:12:47 +0100 (BST)
Author: johan
Date: Mon Apr 21 14:12:47 2008
New Revision: 190
URL: http://svn.gnome.org/viewvc/gobject-introspection?rev=190&view=rev
Log:
2008-04-21 Johan Dahlin <jdahlin async com br>
* giscanner/gidlwriter.py:
* giscanner/xmlwriter.py:
Add a simple api for writing tags which can be used
with the new 'with statement' in python 2.5
Modified:
trunk/ChangeLog
trunk/giscanner/gidlwriter.py
trunk/giscanner/xmlwriter.py
Modified: trunk/giscanner/gidlwriter.py
==============================================================================
--- trunk/giscanner/gidlwriter.py (original)
+++ trunk/giscanner/gidlwriter.py Mon Apr 21 14:12:47 2008
@@ -1,3 +1,5 @@
+from __future__ import with_statement
+
from giscanner.gobjecttreebuilder import (GLibEnum, GLibEnumMember, GLibFlags,
GLibObject)
from giscanner.treebuilder import Class, Enum, Function
@@ -10,15 +12,13 @@
self._write_api(namespace, nodes)
def _write_api(self, namespace, nodes):
- self.push_tag('api', [('version', '1.0')])
- self._write_namespace(namespace, nodes)
- self.pop_tag()
+ with self.tagcontext('api', [('version', '1.0')]):
+ self._write_namespace(namespace, nodes)
def _write_namespace(self, namespace, nodes):
- self.push_tag('namespace', [('name', namespace)])
- for node in nodes:
- self._write_node(node)
- self.pop_tag()
+ with self.tagcontext('namespace', [('name', namespace)]):
+ for node in nodes:
+ self._write_node(node)
def _write_node(self, node):
if isinstance(node, Function):
@@ -33,10 +33,9 @@
def _write_function(self, func, tag_name='function'):
attrs = [('name', func.name),
('symbol', func.symbol)]
- self.push_tag(tag_name, attrs)
- self._write_return_type(func.retval)
- self._write_parameters(func.parameters)
- self.pop_tag()
+ with self.tagcontext(tag_name, attrs):
+ self._write_return_type(func.retval)
+ self._write_parameters(func.parameters)
def _write_method(self, method):
self._write_function(method, tag_name='method')
@@ -49,10 +48,9 @@
def _write_parameters(self, parameters):
if not parameters:
return
- self.push_tag('parameters')
- for parameter in parameters:
- self._write_parameter(parameter)
- self.pop_tag()
+ with self.tagcontext('parameters'):
+ for parameter in parameters:
+ self._write_parameter(parameter)
def _write_parameter(self, parameter):
self.write_tag('parameter', [('name', parameter.name),
@@ -66,10 +64,9 @@
if isinstance(enum, GLibFlags):
tag_name = 'flags'
- self.push_tag(tag_name, attrs)
- for member in enum.members:
- self._write_member(member)
- self.pop_tag()
+ with self.tagcontext(tag_name, attrs):
+ for member in enum.members:
+ self._write_member(member)
def _write_member(self, member):
attrs = [('name', member.name),
@@ -83,7 +80,6 @@
('parent', class_.parent)]
if isinstance(class_, GLibObject):
attrs.append(('get-type', class_.get_type))
- self.push_tag('object', attrs)
- for method in class_.methods:
- self._write_method(method)
- self.pop_tag()
+ with self.tagcontext('object', attrs):
+ for method in class_.methods:
+ self._write_method(method)
Modified: trunk/giscanner/xmlwriter.py
==============================================================================
--- trunk/giscanner/xmlwriter.py (original)
+++ trunk/giscanner/xmlwriter.py Mon Apr 21 14:12:47 2008
@@ -1,3 +1,5 @@
+from contextlib import contextmanager
+
from cStringIO import StringIO
from xml.sax.saxutils import quoteattr
@@ -53,3 +55,12 @@
tag_name = self._tag_stack.pop()
self._close_tag(tag_name)
return tag_name
+
+ @contextmanager
+ def tagcontext(self, tag_name, attributes=None):
+ self.push_tag(tag_name, attributes)
+ try:
+ yield
+ finally:
+ self.pop_tag()
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]