Revision: 1003
http://svn.sourceforge.net/pygccxml/?rev=1003&view=rev
Author: roman_yakovenko
Date: 2007-04-19 02:44:45 -0700 (Thu, 19 Apr 2007)
Log Message:
-----------
small improvements to the code
Modified Paths:
--------------
pygccxml_dev/pygccxml/parser/etree_scanner.py
Modified: pygccxml_dev/pygccxml/parser/etree_scanner.py
===================================================================
--- pygccxml_dev/pygccxml/parser/etree_scanner.py 2007-04-19 08:51:24 UTC (rev 1002)
+++ pygccxml_dev/pygccxml/parser/etree_scanner.py 2007-04-19 09:44:45 UTC (rev 1003)
@@ -7,36 +7,27 @@
import xml.etree.cElementTree as ElementTree
class etree_saxifier_t(object):
- """Produces SAX events for an element and children."""
- def __init__(self, element_or_tree, content_handler):
- try:
- element = element_or_tree.getroot()
- except AttributeError:
- element = element_or_tree
- self._element = element
- self._content_handler = content_handler
+ def __init__(self, etree, handler):
+ self.__root_elem = etree.getroot()
+ self.__handler = handler
def saxify(self):
- self._content_handler.startDocument()
- self._recursive_saxify(self._element, {})
- self._content_handler.endDocument()
+ self.__handler.startDocument()
+ self.__recursive_saxify( self.__root_elem )
+ self.__handler.endDocument()
- def _recursive_saxify(self, element, prefixes):
- attrs = {}
- for attr in element.items():
- attrs[ attr[0] ] = attr[1]
-
- content_handler = self._content_handler
- content_handler.startElement( element.tag, attrs )
+ def __recursive_saxify(self, element ):
+ self.__handler.startElement( element.tag, element.attrib )
if element.text:
- content_handler.characters(element.text)
- for child in element:
- self._recursive_saxify(child, prefixes)
- content_handler.endElement( element.tag )
+ self.__handler.characters(element.text)
+
+ map( self.__recursive_saxify, element )
+
+ self.__handler.endElement( element.tag )
if element.tail:
- content_handler.characters(element.tail)
+ self.__handler.characters(element.tail)
class etree_scanner_t( scanner.scanner_t ):
def __init__(self, gccxml_file, decl_factory, *args ):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|