Ë
    oj*  ã                   ó¤   — d Z ddlZddlZddlmZ ddlmZ ddlmZ  G d„ d«      Z	 G d	„ d
«      Z
 G d„ de
«      Ze
fd„Zd„ Zedk(  r e«        yy)z"
HTML rendering of Python source.
é    N)Úescape)ÚListé   )Úreflectc                   ó2   — e Zd ZdZd\  ZZdxZZdZd„ Z	d„ Z
y)ÚTokenPrinterzU
    Format a stream of tokens and intermediate whitespace, for pretty-printing.
    )r   r   r   úutf-8c                 ó   — || _         y)zJ
        @param writer: A file-like object, opened in bytes mode.
        N)Úwriter)Úselfr   s     ú9/usr/lib/python3/dist-packages/twisted/python/htmlizer.pyÚ__init__zTokenPrinter.__init__   s   € ð ˆ�ó    c                 ób  — t        t        d«      r|t        j                  k(  r|| _        y t	        |t
        «      s|j                  | j                  «      }|\  }}|\  }}	| j                  |k  r0| j                  d|| j                  z
  z  «       |dc| _        | _	        | j                  d|| j                  z
  z  «       | j                  r
d}d| _        np|t        j                  k(  r*t        j                  |«      rd}nE| j                  rd}n6d	}n3t        j                  j!                  |«      }|€J ‚|j#                  «       }| j                  ||«       |	| _	        | xj                  |j%                  d«      z  c_        | j                  |k7  rd| _	        |d
v | _
        |dk(  rd| _        y y )NÚENCODINGó   
r   ó    Ú
identifierr   ÚkeywordÚ	parameterÚvariable)s   defs   classó   :)ÚhasattrÚtokenizer   ÚencodingÚ
isinstanceÚbytesÚencodeÚcurrentLiner   Ú
currentColÚlastIdentifierÚ
parametersÚNAMEr   Ú	iskeywordÚtok_nameÚgetÚlowerÚcount)
r   ÚtypeÚtokenÚsCoordinatesÚeCoordinatesÚlineÚsrowÚscolÚerowÚecols
             r   Ú
printtokenzTokenPrinter.printtoken    s}  € Ü”8˜ZÔ(¨T´X×5FÑ5FÒ-FØ!ˆDŒMØä˜%¤Ô'Ø—L‘L §¡Ó/ˆEà#‰ˆˆtØ#‰ˆˆtØ×Ñ˜dÒ"Ø�K‰K˜ ¨×(8Ñ(8Ñ!8Ñ9Ô:Ø04°aÐ-ˆDÔ˜dœoØ�‰�D˜D 4§?¡?Ñ2Ñ3Ô4Ø×ÒØˆDØˆD�OØ”X—]‘]Ò"Ü× Ñ  Ô'Ø ‘à—?’?Ø&‘Dà%‘Dä×$Ñ$×(Ñ(¨Ó.ˆDØÐ#Ð#Ð#Ø—:‘:“<ˆDØ�‰�E˜4Ô ØˆŒØ×Ò˜EŸK™K¨Ó.Ñ.ÕØ×Ñ˜tÒ#ØˆDŒOØ#Ð'9Ð9ˆÔØ�DŠ=ØˆD�Oð r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    r   r!   r"   r   r   r2   © r   r   r   r      s,   „ ñð #Ñ€J�Ø"#Ð#€N�ZØ€Hòó$ r   r   c                   ó4   — e Zd ZU dZg Zee   ed<   d„ Zdd„Z	y)Ú
HTMLWriterzm
    Write the stream of tokens and whitespace from L{TokenPrinter}, formating
    tokens as HTML spans.
    ÚnoSpanc                 óf   — || _         g }t        j                  | j                  d|«       || _        y )Nr:   )r   r   ÚaccumulateClassListÚ	__class__r:   )r   r   r:   s      r   r   zHTMLWriter.__init__O   s+   € ØˆŒØˆÜ×#Ñ# D§N¡N°H¸fÔEØˆ�r   Nc                 ó  — t        |t        «      r|j                  d«      }t        |«      }|j	                  d«      }|�|| j
                  v r| j                  |«       y | j                  d|j	                  d«      z   dz   |z   dz   «       y )Nr	   s   <span class="py-src-s   ">s   </span>)r   r   Údecoder   r   r:   r   )r   r*   r)   s      r   ÚwritezHTMLWriter.writeU   s‰   € Ü�eœUÔ#Ø—L‘L Ó)ˆEÜ�u“ˆØ—‘˜WÓ%ˆØˆL˜d d§k¡kÑ1Ø�K‰K˜Õà�K‰KØ'Ø—+‘+˜gÓ&ñ'àñð ñð ñ	õr   )N)
r3   r4   r5   r6   r:   r   ÚstrÚ__annotations__r   r@   r7   r   r   r9   r9   G   s!   … ñð
 €FˆD�‰IÓòôr   r9   c                   ó   — e Zd ZdZg d¢Zy)ÚSmallerHTMLWriterzi
    HTMLWriter that doesn't generate spans for some junk.

    Results in much smaller HTML output.
    )Ú	endmarkerÚindentÚdedentÚopÚnewlineÚnlN)r3   r4   r5   r6   r:   r7   r   r   rD   rD   f   s   „ ñò F�Fr   rD   c                 óL  — |j                  d«       t         ||j                   «      j                   «      j                  }	 t        j                  | j                  «      D ]  }|\  }}}}}	 ||||||	«       Œ 	 |j                  d«       y # t        j
                  $ r Y Œ'w xY w)Ns   <pre>s   </pre>
)r@   r   r2   r   ÚreadlineÚ
TokenError)
ÚinpÚoutr   Úprinterr*   Ú	tokenTypeÚstringÚstartÚendr-   s
             r   ÚfilterrU   p   s˜   € Ø‡I�IˆhÔÜ™6 #§)¡)Ó,×2Ñ2Ó3×>Ñ>€GðÜ×&Ñ& s§|¡|Ó4ò 	9ˆEØ49Ñ1ˆY˜  s¨DÙ�I˜v u¨c°4Õ8ñ	9ð
 ‡I�IˆkÕøô ×Ñò Ùðús   Á8B ÂB#Â"B#c                  óÂ   — dd l } t        | j                  d| j                  «      }t        | j                  d   d«      5 }t        ||«       d d d «       y # 1 sw Y   y xY w)Nr   Úbufferr   Úrb)ÚsysÚgetattrÚstdoutÚopenÚargvrU   )rY   r[   Úfs      r   Úmainr_   |   sN   € Ûä�S—Z‘Z ¨3¯:©:Ó6€FÜ	ˆc�h‰h�q‰k˜4Ó	 ð  AÜˆq�&Ô÷÷ ñ ús   ¿AÁAÚ__main__)r6   r   r   Úhtmlr   Útypingr   Ú r   r   r9   rD   rU   r_   r3   r7   r   r   ú<module>rd      sa   ðñ
ó Û Ý Ý å ÷3 ñ 3 ÷lñ ô>F˜
ô Fð 'ó 	òð ˆzÒÙ…Fð r   