£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    YI~d0                 @   sz   d dl Z d dlmZmZmZ d dlmZ dd ZG dd dZ	dd Z
d	d
 Zdd Zedkrvd dlmZ eddd dS )    N)	StringVar
BooleanVarTclErrorc             C   s   t | dst| | _| jS )N_searchengine)hasattrSearchEnginer   )root r	   9/opt/alt/python37/lib64/python3.7/idlelib/searchengine.pyget   s    

r   c               @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zd"ddZd#ddZd$ddZd%d d!ZdS )&r   c             C   sR   || _ t|d| _t|d| _t|d| _t|d| _t|d| _t|d| _d S )N FT)	r   r   patvarr   revarcasevarwordvarwrapvarbackvar)selfr   r	   r	   r
   __init__   s    zSearchEngine.__init__c             C   s
   | j  S )N)r   r   )r   r	   r	   r
   getpat%   s    zSearchEngine.getpatc             C   s   | j | d S )N)r   set)r   patr	   r	   r
   setpat(   s    zSearchEngine.setpatc             C   s
   | j  S )N)r   r   )r   r	   r	   r
   isre+   s    zSearchEngine.isrec             C   s
   | j  S )N)r   r   )r   r	   r	   r
   iscase.   s    zSearchEngine.iscasec             C   s
   | j  S )N)r   r   )r   r	   r	   r
   isword1   s    zSearchEngine.iswordc             C   s
   | j  S )N)r   r   )r   r	   r	   r
   iswrap4   s    zSearchEngine.iswrapc             C   s
   | j  S )N)r   r   )r   r	   r	   r
   isback7   s    zSearchEngine.isbackc             C   s    |   rt|}| | d S )N)r   reescaper   )r   r   r	   r	   r
   setcookedpat<   s    
zSearchEngine.setcookedpatc             C   s.   |   }|  st|}|  r*d| }|S )Nz\b%s\b)r   r   r   r   r   )r   r   r	   r	   r
   getcookedpatC   s    
zSearchEngine.getcookedpatc          
   C   s   |   }|s| |d d S |  }d}|  s:|tjB }yt||}W nX tjk
r } z8|j}|d }t	|dkr|d nd}| ||| d S d }~X Y nX |S )NzEmpty regular expressionr         )
r   report_errorr!   r   r   
IGNORECASEcompileerrorargslen)r   r   flagsprogZwhatr)   msgcolr	   r	   r
   getprogK   s"    
zSearchEngine.getprogr$   c             C   sN   dt | }|r |d t | }|dkr8|d t | }tjd|| jd d S )NzError: z

Pattern: r   z	
Offset: zRegular expression error)Zmaster)strtkMessageBoxZ	showerrorr   )r   r   r-   r.   r	   r	   r
   r%   _   s    zSearchEngine.report_errorNr   c             C   s   |s|   }|sd S | j }t|\}}|  rb|r<|}n|}t|\}}	| ||||	||}
n.|rl|}n|}t|\}}	| ||||	||}
|
S )N)r/   r   r   get_selectionr   get_line_colsearch_backwardsearch_forward)r   textr,   okwrapfirstlaststartliner.   Zresr	   r	   r
   search_texti   s$    
zSearchEngine.search_textc             C   s   d}|}| d| d|d  }	x|	r||	d d |}
|
rV|sN|
 |krV||
fS |d }|rl||krlP d}d}| d| d|d  }	|	s"|r"d}d}d}| dd}	q"W d S )Nr   z%d.0r#   r$   z1.0z2.0)r   searchend)r   r6   r,   r<   r.   r8   r7   wrapped	startlinecharsmr	   r	   r
   r5      s(    zSearchEngine.search_forwardc             C   s   d}|}| d| d|d  }	xt||	d d |}
|
rR|sJ|
 |k rR||
fS |d }|rh||k rhP d}|dkr|szP d}d}|d}tt|d\}}| d| d|d  }	t|	d }q"W d S )Nr   z%d.0r#   r$   zend-1c.)r   search_reverser;   indexmapintsplitr*   )r   r6   r,   r<   r.   r8   r7   r@   rA   rB   rC   posr	   r	   r
   r4      s,    
zSearchEngine.search_backward)r$   )Nr   )r   )r   )__name__
__module____qualname__r   r   r   r   r   r   r   r   r    r!   r/   r%   r=   r5   r4   r	   r	   r	   r
   r      s   


(
r   c             C   sn   |  |}|sd S d }| \}}xF||k rh||krh|}||krH|d }|  ||}|sZP | \}}q$W |S )Nr#   )r>   span)r,   rB   r.   rC   foundijr	   r	   r
   rE      s    
rE   c             C   sT   y|  d}|  d}W n tk
r4   d  }}Y nX |sD|  d}|sL|}||fS )Nz	sel.firstzsel.lastinsert)rF   r   )r6   r9   r:   r	   r	   r
   r2      s    

r2   c             C   s   t t| d\}}||fS )NrD   )rG   rH   rI   )rF   r<   r.   r	   r	   r
   r3      s    r3   __main__)mainz#idlelib.idle_test.test_searchenginer"   )	verbosity)r   Ztkinterr   r   r   Ztkinter.messageboxZ
messageboxr1   r   r   rE   r2   r3   rK   ZunittestrT   r	   r	   r	   r
   <module>   s    .