۶eTc@sWdZddlZddlZdZdefdYZdefdYZdS(s Indentation maker. @@TR: this code is unsupported and largely undocumented ... This version is based directly on code by Robert Kuzelj and uses his directive syntax. Some classes and attributes have been renamed. Indentation is output via $self._CHEETAH__indenter.indent() to prevent '_indenter' being looked up on the searchList and another one being found. The directive syntax will soon be changed somewhat. iNcCstj|S(N(tIndentProcessortprocess(tsource((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pyt indentizesRcBseZdZdZdZejdZejdZdZ ejdZ dZ dZ d Z d Zd Zd Zd ZdZdZRS(sPreprocess #indent tags.s targss[ \t]*#indent[ \t]*(?P.*)s[ \t]*#twss(?P[ \t]*)s++s--t=tchartontofftpushtpopcCsg}x|jD]}|jj|}|rW|j|jj}||jkrad}q||jkryd}q||jkrd}q||j krd}q|j |j rt |d}di|d6}q|j drt |jd d|_d i|d6}q|j |jr9d }q|j |jrd }qny|jj|}|s|jj|}|rt|jd jd}di|d6|j}qd|}n|j|qW|jj|S(Ns%#silent $self._CHEETAH__indenter.on()s&#silent $self._CHEETAH__indenter.off()s&#silent $self._CHEETAH__indenter.inc()s&#silent $self._CHEETAH__indenter.dec()is4#silent $self._CHEETAH__indenter.setLevel(%(level)d)tleveltcharsRs4#silent $self._CHEETAH__indenter.setChars(%(level)d)s'#silent $self._CHEETAH__indenter.push()s&#silent $self._CHEETAH__indenter.pop()Ris+${self._CHEETAH__indenter.indent(%(size)d)}tsizes$${self._CHEETAH__indenter.indent(0)}(t splitlinest INDENT_DIRtmatchtgrouptARGStstriptONtOFFtINCtDECt startswithtSETtinttevaltsplitt indentCharstPUSHtPOPt DIRECTIVEt WHITESPACEStlent expandtabstlstriptappendtLINE_SEPtjoin(tselft_txttresulttlineRRR R((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pyR(s@       (t__name__t __module__t__doc__R'RtretcompileRR!tWSR"RRRtCHARRRRR R(((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pyRs tIndentercBszeZdZdZdZdZgZdZdZdZ dZ dZ d Z d Z d Zdd ZRS( s A class that keeps track of the current indentation level. .indent() returns the appropriate amount of indentation. iis cCs d|_dS(Ni(tOn(R)((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pyRZscCs d|_dS(Ni(R5(R)((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pyR \scCs|jd7_dS(Ni(tLevel(R)((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pytinc^scCs%|jdkr!|jd8_ndS(sodecrement can only be applied to values greater zero values below zero don't make any sense at all!iiN(R6(R)((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pytdec`scCs|jj|jdS(N(t LevelStackR&R6(R)((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pyR escCs7t|jdkr*|jj|_n d|_dS(sUthe levestack can not become -1. any attempt to do so sets the level to 0!iN(R#R9R R6(R)((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pyR gscCs%|dkrd|_n ||_dS(sgthe leve can't be less than zero. any attempt to do so sets the level automatically to zero!iN(R6(R)t_level((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pytsetLevelns  cCs ||_dS(N(tChars(R)t_chars((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pytsetCharuscCs|jr|j|jSd|S(Nt (R5R<R6(R)t_default((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pytindentws (R-R.R/R5R6R<R9RR R7R8R R R;R>RA(((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pyR4Ps        (R/R0tsysRtobjectRR4(((sE/opt/freeware/lib64/python2.7/site-packages/Cheetah/Utils/Indenter.pyt s    =