-í
½¾M<c      sÕ     d  Z    d k l Z  d k Z d k Z d k Z  d k l Z l Z  d k	 Z	 d k
 Z
   y ! d k l Z Wn& " e j
 o # d k l Z n X& d f  d „  ƒ  YZ Y d f  d „  ƒ  YZ d S(	   sœ  implement Martel parsers

The classes in this module are used by other Martel modules and not
typically by external users.

There are two major parsers, 'Parser' and 'RecordParser.'  The first
is the standard one, which parses the file as one string in memory
then generates the SAX events.  The other reads a record at a time
using a RecordReader and generates events after each read.  The
generated event callbacks are identical.

At some level, both parsers use "_do_callback" to convert mxTextTools
tags into SAX events.

XXX finish this documentation

XXX need a better way to get closer to the likely error position when
parsing.

XXX need to implement Locator

(   s
   generatorsN(   s   handlers   saxutils(   s   StringIOs   IterRecordsc     sP   & t  Z ' d „  Z - d „  Z 3 e d „ Z 8 e d „ Z ; e d „ Z RS(   Nc   s7   ' ( | |  _  ) | |  _ * | |  _ + | |  _ d  S(   N(   s   record_parsers   selfs   make_readers   reader_argss
   marker_tag(   s   selfs   record_parsers   make_readers   reader_argss
   marker_tag(    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   __init__' s   c   s8   - . t  |  i i ƒ  / |  i 0 |  i 1 |  i ƒ Sd  S(   N(   s   IterRecordss   selfs   record_parsers   copys   make_readers   reader_argss
   marker_tag(   s   self(    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   copy- s   		c   sH   3 4 t  i | ƒ } 5 | i ƒ  p
 | i ƒ  } 6 |  i | | ƒ Sd  S(   N(	   s   saxutilss   prepare_input_sources   sources   getCharacterStreams   getByteStreams   files   selfs   iterateFiles   cont_handler(   s   selfs   sources   cont_handlers   file(    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   iterate3 s   c   s    8 9 |  i t | ƒ | ƒ Sd  S(   N(   s   selfs   iterateFiles   StringIOs   ss   cont_handler(   s   selfs   ss   cont_handler(    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   iterateString8 s   c   #s¦  ; < d |  _ = | t j o > d  k } ? | i ƒ  } n @ |  i i | ƒ B |  i | |  i	 Œ } C xë C d oà D y E | i ƒ  } Wn. F t i j
 o G t i |  i ƒ ‚ n XH | t j o I Pn J |  i t | ƒ |  _ K y L |  i i | ƒ Wn1 M t i j
 o } N | |  i 7} O ‚  n XQ | VR |  i |  _ qo WT | i ƒ  \ } } U | p | i d ƒ o V t i |  i ƒ ‚ n d  S(   Ni    i   (   s   selfs   start_positions   cont_handlers   Nones   LAXs   record_parsers   setContentHandlers   make_readers   fileobjs   reader_argss   readers   nexts   recs   RecordReaders   ReaderErrors   Parsers   ParserPositionExceptions   lens   end_positions   parseStrings   excs	   remainders	   lookaheads   read(   s   selfs   fileobjs   cont_handlers	   lookaheads   LAXs   readers   recs   exc(    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   iterateFile; s2    
(   s   __name__s
   __module__s   __init__s   copys   Nones   iterates   iterateStrings   iterateFile(    (    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   IterRecords& s
   	s   IterHeaderFooterc     sP   Y t  Z Z d „  Z m d „  Z | e d „ Z ‚ e d „ Z … e d „ Z RS(   Nc   s   Z _ | |  _  ` | |  _ a | |  _ c | |  _ d | |  _ e | |  _ g | |  _ h | |  _ i |	 |  _	 k |
 |  _
 d  S(   N(   s   header_parsers   selfs   make_header_readers   header_argss   record_parsers   make_record_readers   record_argss   footer_parsers   make_footer_readers   footer_argss
   marker_tag(   s   selfs   header_parsers   make_header_readers   header_argss   record_parsers   make_record_readers   record_argss   footer_parsers   make_footer_readers   footer_argss
   marker_tag(    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   __init__Z s   c   s´   m n |  i } o | t j	 o p | i ƒ  } n q |  i i ƒ  } r |  i } s | t j	 o t | i ƒ  } n v t | |  i t x | |  i	 t
 y | |  i t z |  i ƒ
 Sd  S(   N(   s   selfs   header_parsers   Nones   copys   record_parsers   footer_parsers   IterHeaderFooters   make_header_readers   header_argss   make_record_readers   record_argss   make_footer_readers   footer_argss
   marker_tag(   s   selfs   header_parsers   footer_parsers   record_parser(    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   copym s   c   sK   | } ~ t  i | ƒ }  | i ƒ  p
 | i ƒ  } € |  i | | ƒ Sd S(   s"   parse using the URL or file handleN(	   s   saxutilss   prepare_input_sources   sources   getCharacterStreams   getByteStreams   files   selfs   iterateFiles   cont_handler(   s   selfs   sources   cont_handlers   file(    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   iterate| s   c   s    ‚ ƒ |  i t | ƒ | ƒ Sd  S(   N(   s   selfs   iterateFiles   StringIOs   ss   cont_handler(   s   selfs   ss   cont_handler(    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   iterateString‚ s   c   #sÊ  … † d |  _ |  _ ‡ | t j o ˆ d  k } ‰ | i ƒ  } n Š |  i i | ƒ Œ d }  |  i	 t j	 o¿ ‘ |  i
 | |  i h  | d <Ž } “ y ” | i ƒ  } Wn. • t i j
 o – t i |  i ƒ ‚ n X— |  i t | ƒ |  _ ˜ |  i	 i | ƒ ™ |  i |  _ š | i ƒ  \ } } n œ |  i | |  i h  | d <Ž } Ÿ |  i oü   xë   d oà ¡ y ¢ | i ƒ  } Wn. £ t i j
 o ¤ t i |  i ƒ ‚ n X¥ | t j o ¦ Pn § |  i t | ƒ |  _ ¨ y © |  i i | ƒ Wn1 ª t i j
 o } « | |  i 7} ¬ ‚  n X­ | V® |  i |  _ qkW¯ d  Sn ² x² d o³ y ´ | i ƒ  } Wn2 µ t i j
 o  · | i ƒ  \ } } ¸ Pn Xº | o ¼ | i ƒ  \ } } ½ Pn ¿ y À |  i i | ƒ Wn? Á t i j
 o- Ã | i ƒ  \ } } Ä | | } Å Pn XÆ |  i t | ƒ |  _ Ç | VÈ |  i |  _ qgWË |  i | |  i h  | d <Ž } Í y Î | i ƒ  } Wn. Ï t i j
 o Ð t i |  i ƒ ‚ n XÒ | t j o Ô t i |  i ƒ ‚ n Ö y × |  i i | ƒ Wn1 Ø t i j
 o } Ù | |  i 7} Ú ‚  n XÛ |  i t | ƒ |  _ Ü |  i |  _ Þ | i ƒ  \ } } ß | p | i d ƒ o à t i |  i ƒ ‚ n d  S(   Ni    s    s	   lookaheadi   (    s   selfs   start_positions   end_positions   cont_handlers   Nones   LAXs   record_parsers   setContentHandlers	   lookaheads   header_parsers   make_header_readers   fileobjs   header_argss   readers   nexts   recs   RecordReaders   ReaderErrors   Parsers   ParserPositionExceptions   lens   parseStrings	   remainders   make_record_readers   record_argss   footer_parsers   excs   ParserExceptions   make_footer_readers   footer_argss   reads   ParserIncompleteException(   s   selfs   fileobjs   cont_handlers	   lookaheads   LAXs   readers   recs   exc(    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   iterateFile… sŽ   	$$ 
 
		$(   s   __name__s
   __module__s   __init__s   copys   Nones   iterates   iterateStrings   iterateFile(    (    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   IterHeaderFooterY s
   	(   s   __doc__s
   __future__s
   generatorss   urllibs	   tracebacks   syss   xml.saxs   handlers   saxutilss   Parsers   RecordReaders	   cStringIOs   StringIOs   ImportErrors   IterRecordss   IterHeaderFooter(   s   IterRecordss	   tracebacks   StringIOs   Parsers   RecordReaders   syss   handlers
   generatorss   urllibs   saxutilss   IterHeaderFooter(    (    s;   /mit/seven/lib/python2.2/site-packages/Martel/IterParser.pys   ? s   3