ó [Z-Lc@sWdZddlZddlZd„Zdefd„ƒYZdefd„ƒYZdS(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. iÿÿÿÿNcCstƒj|ƒS(N(tIndentProcessortprocess(tsource((sC/opt/freeware/lib/python2.7/site-packages/Cheetah/Utils/Indenter.pyt indentizesRcBs†eZdZdZdZejdƒZejdƒZdZ ejdƒZ dZ dZ d Z d Zd Zd Zd ZdZd„ZRS(sPreprocess #indent tags.s targss[ \t]*#indent[ \t]*(?P.*)s[ \t]*#twss(?P[ \t]*)s++s--t=tchartontofftpushtpopcCsñg}xØ|jƒD]Ê}|jj|ƒ}|rW|j|jƒjƒ}||jkrad}qÐ||jkryd}qÐ||jkr‘d}qÐ||j kr©d}qÐ|j |j ƒrßt |dƒ}di|d6}qÐ|j dƒrt |jd ƒdƒ|_d i|d6}qÐ|j |jƒr9d }qÐ|j |jƒrÐd }qÐny|jj|ƒ}|sÐ|jj|ƒ}|rÃt|jd ƒjdƒƒ}di|d6|jƒ}qÐd|}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((sC/opt/freeware/lib/python2.7/site-packages/Cheetah/Utils/Indenter.pyR(s@       (t__name__t __module__t__doc__R'RtretcompileRR!tWSR"RRRtCHARRRRR R(((sC/opt/freeware/lib/python2.7/site-packages/Cheetah/Utils/Indenter.pyRs tIndentercBszeZdZdZdZdZgZd„Zd„Zd„Z d„Z d„Z 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)((sC/opt/freeware/lib/python2.7/site-packages/Cheetah/Utils/Indenter.pyRZscCs d|_dS(Ni(R5(R)((sC/opt/freeware/lib/python2.7/site-packages/Cheetah/Utils/Indenter.pyR \scCs|jd7_dS(Ni(tLevel(R)((sC/opt/freeware/lib/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)((sC/opt/freeware/lib/python2.7/site-packages/Cheetah/Utils/Indenter.pytdec`scCs|jj|jƒdS(N(t LevelStackR&R6(R)((sC/opt/freeware/lib/python2.7/site-packages/Cheetah/Utils/Indenter.pyR escCs7t|jƒdkr*|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)((sC/opt/freeware/lib/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((sC/opt/freeware/lib/python2.7/site-packages/Cheetah/Utils/Indenter.pytsetLevelns  cCs ||_dS(N(tChars(R)t_chars((sC/opt/freeware/lib/python2.7/site-packages/Cheetah/Utils/Indenter.pytsetCharuscCs|jr|j|jSd|S(Nt (R5R<R6(R)t_default((sC/opt/freeware/lib/python2.7/site-packages/Cheetah/Utils/Indenter.pytindentws (R-R.R/R5R6R<R9RR R7R8R R R;R>RA(((sC/opt/freeware/lib/python2.7/site-packages/Cheetah/Utils/Indenter.pyR4Ps        (R/R0tsysRtobjectRR4(((sC/opt/freeware/lib/python2.7/site-packages/Cheetah/Utils/Indenter.pyt s    =