o b*@sdZddlZddlZddlmZddlmZddlmZGdddZ Gd d d Z Gd d d e Z e fd dZ ddZ edkrEe dSdS)z" HTML rendering of Python source. N)escape)List)reflectc@s4eZdZdZd\ZZdZZdZddZ ddZ d S) TokenPrinterzU Format a stream of tokens and intermediate whitespace, for pretty-printing. )rrrutf-8cCs ||_dS)zJ @param writer: A file-like object, opened in bytes mode. N)writer)selfrr 9/usr/lib/python3/dist-packages/twisted/python/htmlizer.py__init__s zTokenPrinter.__init__c Cs8ttdr|tjkr||_dSt|ts||j}|\}}|\}} |j|kr8|d||j|d|_|_ |d||j |j rKd}d|_ n&|tj krat |rXd}n|j r^d}nd }ntj|}|dusmJ|}|||| |_ |j|d7_|j|krd|_ |d v|_ |d krd|_ dSdS) NENCODING r identifierrkeyword parametervariable)sdefsclass:)hasattrtokenizer encoding isinstancebytesencode currentLiner currentCollastIdentifier parametersNAMEr iskeywordtok_namegetlowercount) r typetoken sCoordinates eCoordinateslinesrowscolerowecolr r r printtoken s@           zTokenPrinter.printtokenN) __name__ __module__ __qualname____doc__rrrrrr r.r r r r rs rc@s4eZdZUdZgZeeed<ddZdddZ dS) HTMLWriterzm Write the stream of tokens and whitespace from L{TokenPrinter}, formating tokens as HTML spans. noSpancCs$||_g}t|jd|||_dS)Nr4)rraccumulateClassList __class__r4)r rr4r r r r Os zHTMLWriter.__init__NcCsjt|tr |d}t|}|d}|dus||jvr#||dS|d|dd|ddS)Nrss)rrdecoderrr4r)r r&r%r r r writeUs"   zHTMLWriter.write)N) r/r0r1r2r4rstr__annotations__r r8r r r r r3Gs r3c@seZdZdZgdZdS)SmallerHTMLWriterzi HTMLWriter that doesn't generate spans for some junk. Results in much smaller HTML output. ) endmarkerindentdedentopnewlinenlN)r/r0r1r2r4r r r r r;fs r;c Cst|dt||jjj}zt|jD]}|\}}}}} |||||| qWn tjy2Ynw|ddS)Ns
s
)r8rr.rreadline TokenError) inpoutrprinterr& tokenTypestringstartendr)r r r filterps rKcCsXddl}t|jd|j}t|jdd}t||WddS1s%wYdS)Nrbufferrrb)sysgetattrstdoutopenargvrK)rNrPfr r r main|s  "rT__main__)r2rrhtmlrtypingrrrr3r;rKrTr/r r r r s   6