B YI~d�2�@s�ddlZddlZddlZddlZddlmZddlmZdZdd�Z dd�Z e� e �ej �Z e� d ej �Zd d �ZGd d �d e�Zdd�Zedkr�ddlmZedddd�ddlmZee�dS)�N)�idleConf)� DelegatorFcCsd|d�|�dS)Nz(?P<%s>�|�))�join)�nameZ alternates�r�6/opt/alt/python37/lib64/python3.7/idlelib/colorizer.py�any sr c Cs�dtdtj�d}dd�tt�D�}dtd|�d}tddg�}d }|d }|d }|d }|d }td||||g�} |d|d|d| dtddg�S)Nz\b�KEYWORDcSs(g|] }|�d�s|tjkrt|��qS)�_)� startswith�keyword�kwlist�str)�.0rrrr � s zmake_pat..z([^.'\"\\#]\b|^)�BUILTIN�COMMENTz#[^\n]*z(?i:r|u|f|fr|rf|b|br|rb)?z'[^'\\\n]*(\\.[^'\\\n]*)*'?z"[^"\\\n]*(\\.[^"\\\n]*)*"?z''''[^'\\]*((\\.|'(?!''))[^'\\]*)*(''')?z'"""[^"\\]*((\\.|"(?!""))[^"\\]*)*(""")?�STRINGr�SYNCz\n)r rr�dir�builtins) �kwZ builtinlist�builtin�commentZ stringprefixZsqstringZdqstringZ sq3stringZ dq3string�stringrrr �make_pats rz\s+(\w+)cCs^t��}t�|d�}t�|d�d}t�|d�}|j|d|d||d|d|dd�dS)NZnormalZcursor� foregroundZhilite� background)rrZinsertbackgroundZselectforegroundZselectbackgroundZinactiveselectbackground)r� CurrentTheme� GetHighlightZconfig)�text�themeZ normal_colorsZ cursor_colorZ select_colorsrrr � color_config"s  r$c@s|eZdZdd�Zdd�Zdd�Zdd�Zd d �Zdd d �Zddd�Z ddd�Z dd�Z ddd�Z dd�Z dd�Zdd�Zd S) �ColorDelegatorcCs*t�|�|��t|_t|_|��dS)N)r�__init__� init_state�prog�idprog� LoadTagDefs)�selfrrr r&Gs  zColorDelegator.__init__cCsd|_d|_d|_d|_dS)NTF)�after_id�allow_colorizing�stop_colorizing� colorizing)r+rrr r'NszColorDelegator.init_statecCs\|jdk r|�d�t�||�|dk rL|��|�d|j�|�dd�n d|_d|_ dS)Nz<>z1.0�endTF) �delegateZunbindr� setdelegate� config_colorsZbind�toggle_colorize_event� notify_ranger.r-)r+r1rrr r2Us   zColorDelegator.setdelegatecCs4x$|j��D]\}}|j|f|�q W|�d�dS)NZsel)�tagdefs�itemsZ tag_configureZ tag_raise)r+�tagZcnfrrr r3lszColorDelegator.config_colorsc Cszt��}t�|d�t�|d�t�|d�t�|d�t�|d�ddd�ddd�t�|d�t�|d�d � |_trvtd |j�dS) NrrrrZ definition)rr�error�hit) rr rr� DEFINITIONr�TODOZERRORr:r6)rr r!r6�DEBUG�print)r+r#rrr r*rs      zColorDelegator.LoadTagDefsNcCs6|�|�}|j�|||�|�||dt|��dS)Nz+%dc)�indexr1�insertr5�len)r+r?�charsZtagsrrr r@�s zColorDelegator.insertcCs&|�|�}|j�||�|�|�dS)N)r?r1�deleter5)r+�index1�index2rrr rC�s zColorDelegator.deletecCsb|�d||�|jr$tr td�dS|jrr/r.r-�after� recolorize)r+rDrErrr r5�szColorDelegator.notify_rangecCs8|jr(|j}d|_trtd�|�|�d|_d|_dS)Nzcancel scheduled recolorizerFT)r,r=r>� after_cancelr-r.)r+r,rrr �close�s zColorDelegator.closecCs�|jr(|j}d|_trtd�|�|�|jrF|jrFtr@td�d|_|j |_|jrl|jsl|�d|j�|_tr�td|jr~dp�d�dS) Nzcancel scheduled recolorizerzstop colorizingTrFzauto colorizing turnedZonZoff�break) r,r=r>rJr-r/r.rHrI)r+Zeventr,rrr r4�s"    z$ColorDelegator.toggle_colorize_eventcCs�d|_|jstrtd�dS|js2tr.td�dS|jrHtrDtd�dSzHd|_d|_trbtd�t��}|� �t��}tr�td||�Wdd|_X|jr�|� dd �r�tr�td �|� d |j �|_dS) Nz no delegatezauto colorizing is offzalready colorizingFTz colorizing...z %.3f secondsr<z1.0zreschedule colorizingrF) r,r1r=r>r-r/r.�timeZ perf_counter�recolorize_main� tag_nextrangerHrI)r+Zt0Zt1rrr rI�s8 zColorDelegator.recolorizecCs�d}�x�|�d|�}|sP|\}}|�d||�|�d|�}|rJ|d}nd}d}|}d}d}�x�|�s�|}|�|d|�}t|dd �}d|�|d �k}|�||�} | s�dSx|jD]} |�| ||�q�W|| }|j� |�} x�| �r�x�| � �� �D]~\} } | r�| � | �\}}|� | |d ||d |�| d kr�|j�||�}|r�|� d�\}}|� d |d ||d |�q�W|j� || ���} q�Wd|�|d �k�r�|}d}nd}|�s�|� d|�|��|jrbt�r�td�dSqbWqWdS)Nz1.0r<rrF�Fz+%d lines linestart��dz-1cz+%dc)�def�classr;zcolorizing stopped)rO� tag_removeZ tag_prevranger?�minZ tag_names�getr6r(�search� groupdictr7�spanrGr)�matchr0�updater.r=r>)r+�next�item�head�tailrBZ lines_to_get�okZmark�liner8�m�key�value�a�bZm1rrr rN�sl           zColorDelegator.recolorize_maincCs"x|jD]}|�|dd�qWdS)Nz1.0r0)r6rU)r+r8rrr � removecolors#s zColorDelegator.removecolors)N)N)N)N)�__name__� __module__� __qualname__r&r'r2r3r*r@rCr5rKr4rIrNrhrrrr r%7s    "Br%c Cs�ddlm}m}ddlm}||�}|�d�tt|��� d�dd��\}}|�d|d|d f�d }||d d �}|j dd d�|� d|�|� �t |�||�} t�} | �| �dS)Nr)�Toplevel�Text)� PercolatorzTest ColorDelegator�+rFz 700x250+%d+%d��abif True: int ('1') # keyword, builtin, string, comment elif False: print(0) else: float(None) if iF + If + IF: 'keyword matching must respect case' if'': x or'' # valid string-keyword no-space combinations async def f(): await g() # All valid prefixes for unicode and byte strings should be colored. 'x', '''x''', "x", """x""" r'x', u'x', R'x', U'x', f'x', F'x' fr'x', Fr'x', fR'x', FR'x', rf'x', rF'x', Rf'x', RF'x' b'x',B'x', br'x',Br'x',bR'x',BR'x', rb'x', rB'x',Rb'x',RB'x' # Invalid combinations of legal characters should be half colored. ur'x', ru'x', uf'x', fu'x', UR'x', ufr'x', rfu'x', xf'x', fx'x' Zwhite)rZboth)�expand�fillr@)ZtkinterrlrmZidlelib.percolatorrn�title�map�intZgeometry�split�packr@Z focus_setr$r%Z insertfilter) �parentrlrmrn�top�x�y�sourcer"�p�drrr �_color_delegator)s     r��__main__)�mainz idlelib.idle_test.test_colorizerrQ)� verbosity�exit)�run)rr�rerMZidlelib.configrZidlelib.delegatorrr=r r�compile�Sr(r)r$r%r�riZunittestr�Zidlelib.idle_test.htestr�rrrr �s&  s"