Package Bio :: Module ParserSupport :: Class EventGenerator
[hide private]
[frames] | no frames]

Class EventGenerator

source code

xml.sax.handler.ContentHandler --+
                                 |
                                EventGenerator

Handler to generate events associated with a Martel parsed file.

This acts like a normal SAX handler, and accepts XML generated by Martel during parsing. These events are then converted into 'Biopython events', which can then be caught by a standard biopython consumer.

Note that Martel is now DEPRECATED.

Instance Methods [hide private]
 
__init__(self, consumer, interest_tags, callback_finalizer=None, exempt_tags=[])
Initialize to begin catching and firing off events.
source code
 
startElement(self, name, attrs)
Determine if we should collect characters from this tag.
source code
 
characters(self, content)
Extract the information if we are interested in it.
source code
 
endElement(self, name)
Send the information to the consumer.
source code
 
_make_callback(self, name)
Call the callback function with the info with the given name.
source code
 
endDocument(self)
Make sure all of our information has been passed.
source code

Inherited from xml.sax.handler.ContentHandler: endElementNS, endPrefixMapping, ignorableWhitespace, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElementNS, startPrefixMapping

Method Details [hide private]

__init__(self, consumer, interest_tags, callback_finalizer=None, exempt_tags=[])
(Constructor)

source code 

Initialize to begin catching and firing off events.

Arguments: o consumer - The consumer that we'll send Biopython events to.

o interest_tags - A listing of all the tags we are interested in.

o callback_finalizer - A function to deal with the collected information before passing it on to the consumer. By default the collected information is a list of all of the lines read for a particular tag -- if there are multiple tags in a row like:

<some_info>Spam<some_info> <some_info>More Spam<some_info>

In this case the list of information would be:

['Spam', 'More Spam']

This list of lines will be passed to the callback finalizer if it is present. Otherwise the consumer will be called with the list of content information.

o exempt_tags - A listing of particular tags that are exempt from being processed by the callback_finalizer. This allows you to use a finalizer to deal with most tags, but leave those you don't want touched.

Overrides: xml.sax.handler.ContentHandler.__init__

startElement(self, name, attrs)

source code 
Determine if we should collect characters from this tag.
Overrides: xml.sax.handler.ContentHandler.startElement

characters(self, content)

source code 
Extract the information if we are interested in it.
Overrides: xml.sax.handler.ContentHandler.characters

endElement(self, name)

source code 

Send the information to the consumer.

Once we've got the end element we've collected up all of the character information we need, and we need to send this on to the consumer to do something with it.

We have a delay of one tag on doing this, so that we can collect all of the info from multiple calls to the same element at once.

Overrides: xml.sax.handler.ContentHandler.endElement

endDocument(self)

source code 

Make sure all of our information has been passed.

This just flushes out any stored tags that need to be passed.

Overrides: xml.sax.handler.ContentHandler.endDocument