ó
è¾bc           @   s]  d  Z  d d l m Z e d d d ƒ[ d d l Z d d l Z d d g Z e j d	 ƒ Z e j d
 ƒ Z e j d ƒ Z	 e j d ƒ Z
 e j d ƒ Z e j d ƒ Z e j d ƒ Z e j d ƒ Z e j d ƒ Z e j d ƒ Z e j d ƒ Z d e f d „  ƒ  YZ d e j f d „  ƒ  YZ d e f d „  ƒ  YZ e d „ Z e d k rYe ƒ  n  d S(   s;   A parser for SGML, using the derived class as a static DTD.iÿÿÿÿ(   t   warnpy3ks1   the sgmllib module has been removed in Python 3.0t
   stackleveli   Nt
   SGMLParsert   SGMLParseErrors   [&<]sN   &([a-zA-Z][a-zA-Z0-9]*|#[0-9]*)?|<([a-zA-Z][^<>]*|/([a-zA-Z][^<>]*)?|![^<>]*)?s%   &([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]s   &#([0-9]+)[^0-9]s
   <[>a-zA-Z]s   <[a-zA-Z][-.a-zA-Z0-9]*/s"   <([a-zA-Z][-.a-zA-Z0-9]*)/([^/]*)/t   >s   [<>]s   [a-zA-Z][-_.a-zA-Z0-9]*se   \s*([a-zA-Z_][-:.a-zA-Z_0-9]*)(\s*=\s*(\'[^\']*\'|"[^"]*"|[][\-a-zA-Z0-9./,:;+*%?!&$\(\)_#=~\'"@]*))?c           B   s   e  Z d  Z RS(   s&   Exception raised for all parse errors.(   t   __name__t
   __module__t   __doc__(    (    (    s   /usr/lib/python2.7/sgmllib.pyR   ,   s   c           B   si  e  Z e j d  ƒ Z d d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z i d d 6d d 6d d 6d d  6d! d" 6Z d# „  Z d$ „  Z d% „  Z d& „  Z  d' „  Z! d( „  Z" d) „  Z# d* „  Z$ d+ „  Z% d, „  Z& RS(-   s+   &(?:([a-zA-Z][-.a-zA-Z0-9]*)|#([0-9]+))(;?)i    c         C   s   | |  _  |  j ƒ  d S(   s#   Initialize and reset this instance.N(   t   verboset   reset(   t   selfR   (    (    s   /usr/lib/python2.7/sgmllib.pyt   __init__B   s    	c         C   sJ   d |  _ d |  _ g  |  _ d |  _ d |  _ d |  _ t j j	 |  ƒ d S(   s0   Reset this instance. Loses all unprocessed data.t    s   ???i    N(
   t   Nonet   _SGMLParser__starttag_textt   rawdatat   stackt   lasttagt
   nomoretagst   literalt
   markupbaset
   ParserBaseR	   (   R
   (    (    s   /usr/lib/python2.7/sgmllib.pyR	   G   s    						c         C   s   d |  _  |  _ d S(   sY   Enter literal mode (CDATA) till EOF.

        Intended for derived classes only.
        i   N(   R   R   (   R
   (    (    s   /usr/lib/python2.7/sgmllib.pyt   setnomoretagsQ   s    c         G   s   d |  _  d S(   sP   Enter literal mode (CDATA).

        Intended for derived classes only.
        i   N(   R   (   R
   t   args(    (    s   /usr/lib/python2.7/sgmllib.pyt
   setliteralX   s    c         C   s!   |  j  | |  _  |  j d ƒ d S(   sã   Feed some data to the parser.

        Call this as often as you want, with as little or as much text
        as you want (may include '
').  (This just saves the text,
        all the processing is done by goahead().)
        i    N(   R   t   goahead(   R
   t   data(    (    s   /usr/lib/python2.7/sgmllib.pyt   feed_   s    c         C   s   |  j  d ƒ d S(   s   Handle the remaining data.i   N(   R   (   R
   (    (    s   /usr/lib/python2.7/sgmllib.pyt   closej   s    c         C   s   t  | ƒ ‚ d  S(   N(   R   (   R
   t   message(    (    s   /usr/lib/python2.7/sgmllib.pyt   errorn   s    c   	      C   s@  |  j  } d } t | ƒ } xâ| | k  rÿ|  j rQ |  j | | | !ƒ | } Pn  t j | | ƒ } | rx | j ƒ  } n | } | | k  r¡ |  j | | | !ƒ n  | } | | k r· Pn  | | d k rlt j | | ƒ r.|  j	 r|  j | | ƒ | d } q n  |  j
 | ƒ } | d k  r"Pn  | } q n  | j d | ƒ rt|  j | ƒ } | d k  r_Pn  | } d |  _	 q n  |  j	 r®| | d k r§|  j d ƒ | d } q Pq n  | j d | ƒ rë|  j | ƒ } | d k  rßPn  | } q n  | j d | ƒ r,|  j | ƒ } | d k  rPn  | | } q n  | j d | ƒ rŠ|  j | ƒ } | d k  r]Pn  | } q qŠn| | d k r}|  j	 r¦|  j | | ƒ | d } q n  t j | | ƒ } | r| j d ƒ } |  j | ƒ | j d ƒ } | | d d	 k r | d } q q n  t j | | ƒ } | rŠ| j d ƒ } |  j | ƒ | j d ƒ } | | d d	 k r | d } q q qŠn |  j d
 ƒ t j | | ƒ } | sÃ|  j | | ƒ | d } q n  | j d ƒ } | | k râPn  |  j | | | !ƒ | } q W| r/| | k  r/|  j | | | !ƒ | } n  | | |  _  d  S(   Ni    t   <i   s   </s   <!--s   <?s   <!t   &t   ;s   neither < nor & ??(   R   t   lenR   t   handle_datat   interestingt   searcht   startt   starttagopent   matchR   t   parse_starttagt
   startswitht   parse_endtagt   parse_commentt   parse_pit   parse_declarationt   charreft   groupt   handle_charreft   endt	   entityreft   handle_entityrefR   t
   incomplete(	   R
   R2   R   t   it   nR(   t   jt   kt   name(    (    s   /usr/lib/python2.7/sgmllib.pyR   t   s¾    		  	
  		  
 		
  	

	t   =c         C   sŽ   |  j  } | | | d !d k r0 |  j d ƒ n  t j | | d ƒ } | sP d S| j d ƒ } |  j | | d | !ƒ | j d ƒ } | | S(   Ni   s   <?s   unexpected call to parse_pi()iÿÿÿÿi    (   R   R   t   picloseR%   R&   t	   handle_piR2   (   R
   R6   R   R(   R8   (    (    s   /usr/lib/python2.7/sgmllib.pyR-   Þ   s    	c         C   s   |  j  S(   N(   R   (   R
   (    (    s   /usr/lib/python2.7/sgmllib.pyt   get_starttag_textê   s    c         C   s¥  d  |  _ | } |  j } t j | | ƒ r· t j | | ƒ } | sF d S| j d d ƒ \ } } d | |  _ | j ƒ  } | j d ƒ } |  j	 | | ƒ | | | j d ƒ d !|  _ | St
 j | | d ƒ } | s× d S| j d ƒ } g  }	 | | | d !d k r| } |  j } n[ t j | | d ƒ } | sA|  j d ƒ n  | j d ƒ } | | d | !j ƒ  } | |  _ xñ | | k  rct j | | ƒ } | s›Pn  | j d d d ƒ \ }
 } } | sÈ|
 } np | d  d	 k oç| d k n s| d  d
 k o| d k n r | d d !} n  |  j j |  j | ƒ } |	 j |
 j ƒ  | f ƒ | j d ƒ } qsW| | d k r| d } n  | | | !|  _ |  j | |	 ƒ | S(   Niÿÿÿÿi   i   s   <%s/i    s   <>s!   unexpected call to parse_starttagi   t   't   "R   (   R   R   R   t   shorttagopenR(   t   shorttagR0   t   lowerR2   t   finish_shorttagt
   endbracketR%   R&   R   t   tagfindR   t   attrfindt   entity_or_charreft   subt   _convert_reft   appendt   finish_starttag(   R
   R6   t	   start_posR   R(   t   tagR   R9   R8   t   attrst   attrnamet   restt	   attrvalue(    (    s   /usr/lib/python2.7/sgmllib.pyR)   î   s^    			 	$$	c         C   s†   | j  d ƒ r9 |  j | j  d ƒ ƒ p8 d | j ƒ  d S| j  d ƒ rq |  j | j  d ƒ ƒ pp d | j  d ƒ Sd | j  d ƒ Sd  S(   Ni   s   &#%s%si   i   s   &%s;s   &%s(   R0   t   convert_charreft   groupst   convert_entityref(   R
   R(   (    (    s   /usr/lib/python2.7/sgmllib.pyRJ   ,  s    c         C   sƒ   |  j  } t j | | d ƒ } | s) d S| j d ƒ } | | d | !j ƒ  j ƒ  } | | d k rr | d } n  |  j | ƒ | S(   Ni   iÿÿÿÿi    i   R   (   R   RE   R%   R&   t   stripRC   t   finish_endtag(   R
   R6   R   R(   R8   RN   (    (    s   /usr/lib/python2.7/sgmllib.pyR+   7  s    	c         C   s.   |  j  | g  ƒ |  j | ƒ |  j | ƒ d  S(   N(   RL   R#   RW   (   R
   RN   R   (    (    s   /usr/lib/python2.7/sgmllib.pyRD   D  s    c         C   s©   y t  |  d | ƒ } Wnd t k
 r} y t  |  d | ƒ } Wn" t k
 rb |  j | | ƒ d SX|  j | | | ƒ d Sn( X|  j j | ƒ |  j | | | ƒ d Sd  S(   Nt   start_t   do_iÿÿÿÿi    i   (   t   getattrt   AttributeErrort   unknown_starttagt   handle_starttagR   RK   (   R
   RN   RO   t   method(    (    s   /usr/lib/python2.7/sgmllib.pyRL   K  s    c         C   sa  | s9 t  |  j ƒ d } | d k  rÓ |  j | ƒ d  Snš | |  j k r‘ y t |  d | ƒ } Wn t k
 r |  j | ƒ n X|  j | ƒ d  St  |  j ƒ } x0 t | ƒ D]" } |  j | | k r­ | } q­ q­ Wx‡ t  |  j ƒ | k r\|  j d } y t |  d | ƒ } Wn t k
 r(d  } n X| rB|  j | | ƒ n |  j | ƒ |  j d =qÖ Wd  S(   Ni   i    t   end_iÿÿÿÿ(	   R"   R   t   unknown_endtagRZ   R[   t   report_unbalancedt   rangeR   t   handle_endtag(   R
   RN   t   foundR^   R6   (    (    s   /usr/lib/python2.7/sgmllib.pyRW   ]  s4     
c         C   s   | | ƒ d  S(   N(    (   R
   RN   R^   RO   (    (    s   /usr/lib/python2.7/sgmllib.pyR]   |  s    c         C   s   | ƒ  d  S(   N(    (   R
   RN   R^   (    (    s   /usr/lib/python2.7/sgmllib.pyRc   €  s    c         C   s)   |  j  r% d | d GHd G|  j GHn  d  S(   Ns   *** Unbalanced </R   s
   *** Stack:(   R   R   (   R
   RN   (    (    s   /usr/lib/python2.7/sgmllib.pyRa   „  s    	c         C   sR   y t  | ƒ } Wn t k
 r$ d SXd | k o< d k n sE d S|  j | ƒ S(   s/   Convert character reference, may be overridden.Ni    i   (   t   intt
   ValueErrort   convert_codepoint(   R
   R:   R7   (    (    s   /usr/lib/python2.7/sgmllib.pyRS   ‰  s    c         C   s
   t  | ƒ S(   N(   t   chr(   R
   t	   codepoint(    (    s   /usr/lib/python2.7/sgmllib.pyRg   “  s    c         C   s<   |  j  | ƒ } | d k r+ |  j | ƒ n |  j | ƒ d S(   s0   Handle character reference, no need to override.N(   RS   R   t   unknown_charrefR#   (   R
   R:   t   replacement(    (    s   /usr/lib/python2.7/sgmllib.pyR1   –  s    R   t   ltR   t   gtR    t   ampR@   t   quots   't   aposc         C   s%   |  j  } | | k r | | Sd Sd S(   sµ   Convert entity references.

        As an alternative to overriding this method; one can tailor the
        results by setting up the self.entitydefs mapping appropriately.
        N(   t
   entitydefs(   R
   R:   t   table(    (    s   /usr/lib/python2.7/sgmllib.pyRU   ¢  s    	c         C   s<   |  j  | ƒ } | d k r+ |  j | ƒ n |  j | ƒ d S(   s.   Handle entity references, no need to override.N(   RU   R   t   unknown_entityrefR#   (   R
   R:   Rk   (    (    s   /usr/lib/python2.7/sgmllib.pyR4   ®  s    c         C   s   d  S(   N(    (   R
   R   (    (    s   /usr/lib/python2.7/sgmllib.pyR#   ·  s    c         C   s   d  S(   N(    (   R
   R   (    (    s   /usr/lib/python2.7/sgmllib.pyt   handle_comment»  s    c         C   s   d  S(   N(    (   R
   t   decl(    (    s   /usr/lib/python2.7/sgmllib.pyt   handle_decl¿  s    c         C   s   d  S(   N(    (   R
   R   (    (    s   /usr/lib/python2.7/sgmllib.pyR=   Ã  s    c         C   s   d  S(   N(    (   R
   RN   RO   (    (    s   /usr/lib/python2.7/sgmllib.pyR\   Ç  R   c         C   s   d  S(   N(    (   R
   RN   (    (    s   /usr/lib/python2.7/sgmllib.pyR`   È  R   c         C   s   d  S(   N(    (   R
   t   ref(    (    s   /usr/lib/python2.7/sgmllib.pyRj   É  R   c         C   s   d  S(   N(    (   R
   Rw   (    (    s   /usr/lib/python2.7/sgmllib.pyRs   Ê  R   ('   R   R   t   ret   compileRH   R   R	   R   R   R   R   R   R   t   _decl_othercharsR-   R>   R)   RJ   R+   RD   RL   RW   R]   Rc   Ra   RS   Rg   R1   Rq   RU   R4   R#   Rt   Rv   R=   R\   R`   Rj   Rs   (    (    (    s   /usr/lib/python2.7/sgmllib.pyR   <   sF   	
						g			>									
		
)										t   TestSGMLParserc           B   se   e  Z d  d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z RS(   i    c         C   s   d |  _  t j |  | ƒ d  S(   NR   (   t   testdataR   R   (   R
   R   (    (    s   /usr/lib/python2.7/sgmllib.pyR   Ï  s    	c         C   s<   |  j  | |  _  t t |  j  ƒ ƒ d k r8 |  j ƒ  n  d  S(   NiF   (   R|   R"   t   reprt   flush(   R
   R   (    (    s   /usr/lib/python2.7/sgmllib.pyR#   Ó  s    c         C   s.   |  j  } | r* d |  _  d Gt | ƒ GHn  d  S(   NR   s   data:(   R|   R}   (   R
   R   (    (    s   /usr/lib/python2.7/sgmllib.pyR~   Ø  s    		c         C   sN   |  j  ƒ  t | ƒ } t | ƒ d k rA | d  d | d } n  d G| GHd  S(   NiD   i    s   ...iàÿÿÿs   comment:(   R~   R}   R"   (   R
   R   t   r(    (    s   /usr/lib/python2.7/sgmllib.pyRt   Þ  s
    
c         C   s\   |  j  ƒ  | s  d | d GHn8 d | Gx( | D]  \ } } | d d | d Gq/ Wd GHd  S(   Ns   start tag: <R   R;   R@   (   R~   (   R
   RN   RO   R:   t   value(    (    s   /usr/lib/python2.7/sgmllib.pyR\   å  s    
c         C   s   |  j  ƒ  d | d GHd  S(   Ns   end tag: </R   (   R~   (   R
   RN   (    (    s   /usr/lib/python2.7/sgmllib.pyR`   ï  s    
c         C   s   |  j  ƒ  d | d GHd  S(   Ns   *** unknown entity ref: &R!   (   R~   (   R
   Rw   (    (    s   /usr/lib/python2.7/sgmllib.pyRs   ó  s    
c         C   s   |  j  ƒ  d | d GHd  S(   Ns   *** unknown char ref: &#R!   (   R~   (   R
   Rw   (    (    s   /usr/lib/python2.7/sgmllib.pyRj   ÷  s    
c         C   s   |  j  ƒ  d | d GHd  S(   Ns   *** unknown decl: [t   ](   R~   (   R
   R   (    (    s   /usr/lib/python2.7/sgmllib.pyt   unknown_declû  s    
c         C   s   t  j |  ƒ |  j ƒ  d  S(   N(   R   R   R~   (   R
   (    (    s   /usr/lib/python2.7/sgmllib.pyR   ÿ  s    (   R   R   R   R#   R~   Rt   R\   R`   Rs   Rj   R‚   R   (    (    (    s   /usr/lib/python2.7/sgmllib.pyR{   Í  s   				
				c   	      C   s(  d d  l  } |  d  k r( | j d }  n  |  rQ |  d d k rQ |  d }  t } n t } |  rj |  d } n d } | d k rˆ | j } nC y t | d ƒ } Wn- t k
 rÊ } | Gd G| GH| j d ƒ n X| j	 ƒ  } | | j k	 ró | j
 ƒ  n  | ƒ  } x | D] } | j | ƒ qW| j
 ƒ  d  S(	   Niÿÿÿÿi   i    s   -ss	   test.htmlt   -R   t   :(   t   sysR   t   argvR   R{   t   stdint   opent   IOErrort   exitt   readR   R   (	   R   R…   t   klasst   filet   ft   msgR   t   xt   c(    (    s   /usr/lib/python2.7/sgmllib.pyt   test  s0    
		t   __main__(   R   t   warningsR    R   Rx   t   __all__Ry   R$   R5   R3   R/   R'   RA   RB   R<   RE   RF   RG   t   RuntimeErrorR   R   R   R{   R   R’   R   (    (    (    s   /usr/lib/python2.7/sgmllib.pyt   <module>   s4   		ÿ ’7$