
    Ϫf*                         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}   8Z(TX5F5F-F!DM%'LL/E#t#td"KK(8(8!89:04a-DdoDD4??234DDOX]]"  ' ??&D%D$$((.D###::<DE4 EKK..t#DO#'99D=DO r   N)__name__
__module____qualname____doc__r    r   r!   r"   r   r   r2    r   r   r   r      s,     #J"##NZ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+    ##DNNHf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    eU#LL)EuW%Lddkk1KKKK'++g&'  	r   )N)
r3   r4   r5   r6   r:   r   str__annotations__r   r@   r7   r   r   r9   r9   G   s!    
 FD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    IIh6#)),223>>G&&s||4 	9E491YsDIvuc48	9
 IIk  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    SZZ3::6F	chhqk4	  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   