B YI~d0�@szddlZddlmZmZmZddlmZdd�ZGdd�d�Z dd�Z d d �Z d d �Z e d krvddlmZeddd�dS)�N)� StringVar� BooleanVar�TclErrorcCst|d�st|�|_|jS)N� _searchengine)�hasattr� SearchEnginer)�root�r �9/opt/alt/python37/lib64/python3.7/idlelib/searchengine.py�gets  r c@s�eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z dd�Z dd�Z dd�Z d"dd�Zd#dd�Zd$dd�Zd%d d!�ZdS)&rcCsR||_t|d�|_t|d�|_t|d�|_t|d�|_t|d�|_t|d�|_dS)N�FT) rr�patvarr�revar�casevar�wordvar�wrapvar�backvar)�selfrr r r �__init__s     zSearchEngine.__init__cCs |j��S)N)r r )rr r r �getpat%szSearchEngine.getpatcCs|j�|�dS)N)r �set)r�patr r r �setpat(szSearchEngine.setpatcCs |j��S)N)rr )rr r r �isre+szSearchEngine.isrecCs |j��S)N)rr )rr r r �iscase.szSearchEngine.iscasecCs |j��S)N)rr )rr r r �isword1szSearchEngine.iswordcCs |j��S)N)rr )rr r r �iswrap4szSearchEngine.iswrapcCs |j��S)N)rr )rr r r �isback7szSearchEngine.isbackcCs |��rt�|�}|�|�dS)N)r�re�escaper)rrr r r � setcookedpat<s zSearchEngine.setcookedpatcCs.|��}|��st�|�}|��r*d|}|S)Nz\b%s\b)rrrrr)rrr r r � getcookedpatCs  zSearchEngine.getcookedpatc Cs�|��}|s|�|d�dS|��}d}|��s:|tjB}yt�||�}WnXtjk r�}z8|j}|d}t |�dkr�|dnd}|�|||�dSd}~XYnX|S)NzEmpty regular expressionr�������) r� report_errorr!rr� IGNORECASE�compile�error�args�len)rr�flags�progZwhatr)�msg�colr r r �getprogKs"  zSearchEngine.getprogr$cCsNdt|�}|r |dt|�}|dkr8|dt|�}tjd||jd�dS)NzError: z Pattern: rz Offset: zRegular expression error)Zmaster)�str� tkMessageBoxZ showerrorr)rrr-r.r r r r%_s zSearchEngine.report_errorNrc Cs�|s|��}|sdS|j��}t|�\}}|��rb|r<|}n|}t|�\}} |�|||| ||�} n.|rl|}n|}t|�\}} |�|||| ||�} | S)N)r/rr � get_selectionr� get_line_col�search_backward�search_forward) r�textr,�ok�wrap�first�last�start�liner.Zresr r r � search_textis$    zSearchEngine.search_textc Cs�d}|}|�d|d|d�} x�| r�|�| dd�|�} | rV|sN| ��|krV|| fS|d}|rl||krlPd}d}|�d|d|d�} | s"|r"d}d}d}|�dd�} q"WdS)Nrz%d.0r#r$z1.0z2.0)r �search�end) rr6r,r<r.r8r7�wrapped� startline�chars�mr r r r5�s( zSearchEngine.search_forwardc Cs�d}|}|�d|d|d�} x�t|| dd�|�} | rR|sJ| ��|krR|| fS|d}|rh||krhPd}|dkr�|szPd}d}|�d�} tt| �d��\}}|�d|d|d�} t| �d}q"WdS)Nrz%d.0r#r$zend-1c�.)r �search_reverser;�index�map�int�splitr*) rr6r,r<r.r8r7r@rArBrC�posr r r r4�s,  zSearchEngine.search_backward)r$)Nr)r)r)�__name__� __module__� __qualname__rrrrrrrrr r!r/r%r=r5r4r r r r rs ( rcCsn|�|�}|sdSd}|��\}}xF||krh||krh|}||krH|d}|�||�}|sZP|��\}}q$W|S)Nr#)r>�span)r,rBr.rC�found�i�jr r r rE�s   rEcCsTy|�d�}|�d�}Wntk r4d}}YnX|sD|�d�}|sL|}||fS)Nz sel.firstzsel.last�insert)rFr)r6r9r:r r r r2�s  r2cCstt|�d��\}}||fS)NrD)rGrHrI)rFr<r.r r r r3�sr3�__main__)�mainz#idlelib.idle_test.test_searchenginer")� verbosity)rZtkinterrrrZtkinter.messageboxZ messageboxr1r rrEr2r3rKZunittestrTr r r r �s  .