diff options
author | Mike Hommey <glandium@debian.org> | 2010-03-18 07:40:32 +0100 |
---|---|---|
committer | Mike Hommey <glandium@debian.org> | 2010-03-18 07:40:32 +0100 |
commit | eb5d521a2df72fa829a7f8196b957c696e7ccc58 (patch) | |
tree | 224599e18a48f87e82aa8a32456563277c68ae58 /python/generator.py | |
parent | 8a10e02b2f4971d3fdacab7dc7baecced34056fb (diff) | |
download | libxml2-eb5d521a2df72fa829a7f8196b957c696e7ccc58.tar.gz |
Import upstream version 2.7.7upstream/2.7.7.dfsg
Diffstat (limited to 'python/generator.py')
-rwxr-xr-x | python/generator.py | 74 |
1 files changed, 12 insertions, 62 deletions
diff --git a/python/generator.py b/python/generator.py index 92a3440..9e1fdaa 100755 --- a/python/generator.py +++ b/python/generator.py @@ -24,77 +24,27 @@ else: # ####################################################################### import os -import xmllib -try: - import sgmlop -except ImportError: - sgmlop = None # accelerator not available +import xml.sax debug = 0 -if sgmlop: - class FastParser: - """sgmlop based XML parser. this is typically 15x faster - than SlowParser...""" - - def __init__(self, target): - - # setup callbacks - self.finish_starttag = target.start - self.finish_endtag = target.end - self.handle_data = target.data - - # activate parser - self.parser = sgmlop.XMLParser() - self.parser.register(self) - self.feed = self.parser.feed - self.entity = { - "amp": "&", "gt": ">", "lt": "<", - "apos": "'", "quot": '"' - } - - def close(self): - try: - self.parser.close() - finally: - self.parser = self.feed = None # nuke circular reference - - def handle_entityref(self, entity): - # <string> entity - try: - self.handle_data(self.entity[entity]) - except KeyError: - self.handle_data("&%s;" % entity) +def getparser(): + # Attach parser to an unmarshalling object. return both objects. + target = docParser() + parser = xml.sax.make_parser() + parser.setContentHandler(target) + return parser, target -else: - FastParser = None - - -class SlowParser(xmllib.XMLParser): - """slow but safe standard parser, based on the XML parser in - Python's standard library.""" - - def __init__(self, target): - self.unknown_starttag = target.start - self.handle_data = target.data - self.unknown_endtag = target.end - xmllib.XMLParser.__init__(self) - -def getparser(target = None): - # get the fastest available parser, and attach it to an - # unmarshalling object. return both objects. - if target is None: - target = docParser() - if FastParser: - return FastParser(target), target - return SlowParser(target), target - -class docParser: +class docParser(xml.sax.handler.ContentHandler): def __init__(self): self._methodname = None self._data = [] self.in_function = 0 + self.startElement = self.start + self.endElement = self.end + self.characters = self.data + def close(self): if debug: print "close" |