<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
2a0                 @   sx   d dl Z d dlmZmZmZ d dljZdd ZG dd dZ	dd Z
d	d
 Zdd Zedkrtd 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	   1/opt/alt/python36/lib64/python3.6/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 j S )N)r   r   )r   r	   r	   r
   getpat%   s    zSearchEngine.getpatc             C   s   | j j| d S )N)r   set)r   patr	   r	   r
   setpat(   s    zSearchEngine.setpatc             C   s
   | j j S )N)r   r   )r   r	   r	   r
   isre+   s    zSearchEngine.isrec             C   s
   | j j S )N)r   r   )r   r	   r	   r
   iscase.   s    zSearchEngine.iscasec             C   s
   | j j S )N)r   r   )r   r	   r	   r
   isword1   s    zSearchEngine.iswordc             C   s
   | j j S )N)r   r   )r   r	   r	   r
   iswrap4   s    zSearchEngine.iswrapc             C   s
   | j j S )N)r   r   )r   r	   r	   r
   isback7   s    zSearchEngine.isbackc             C   s    | j  rtj|}| j| d S )N)r   reescaper   )r   r   r	   r	   r
   setcookedpat<   s    
zSearchEngine.setcookedpatc             C   s.   | j  }| j stj|}| j r*d| }|S )Nz\b%s\b)r   r   r   r   r   )r   r   r	   r	   r
   getcookedpatC   s    
zSearchEngine.getcookedpatc             C   s   | j  }|s| j|d d S | j }d}| j s:|tjB }ytj||}W nV tjk
r } z8|j}|d }t	|dkr|d nd}| j||| d S d }~X 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| j  }|sd S | jj }t|\}}| j rb|r<|}n|}t|\}}	| j||||	||}
n.|rl|}n|}t|\}}	| j||||	||}
|
S )N)r/   r   r   get_selectionr   get_line_colsearch_backwardsearch_forward)r   textr,   okwrapfirstlaststartliner.   resr	   r	   r
   search_texti   s$    
zSearchEngine.search_textc             C   s   d}|}|j d| d|d  }	x|	r|j|	d d |}
|
rV|sN|
j |krV||
fS |d }|rl||krlP d}d}|j d| d|d  }	|	 r"|r"d}d}d}|j dd}	q"W d S )Nr   z%d.0r#   z1.0z2.0r$   )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}|}|j d| d|d  }	xt||	d d |}
|
rR|sJ|
j |k rR||
fS |d }|rh||k rhP d}|dkr|szP d}d}|jd}tt|jd\}}|j d| d|d  }	t|	d }q"W d S )Nr   z%d.0r#   zend-1c.r$   )r   search_reverser;   indexmapintsplitr*   )r   r6   r,   r<   r.   r8   r7   rA   rB   rC   rD   posr	   r	   r
   r4      s,    
zSearchEngine.search_backwardr$   )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   | j |}|sd S d }|j \}}xF||k rh||krh|}||krH|d }| j ||}|sZP |j \}}q$W |S )Nr#   )r?   span)r,   rC   r.   rD   foundijr	   r	   r
   rF      s    
rF   c             C   sT   y| j d}| j d}W n tk
r4   d  }}Y nX |sD| j d}|sL|}||fS )Nz	sel.firstzsel.lastinsert)rG   r   )r6   r9   r:   r	   r	   r
   r2      s    

r2   c             C   s   t t| jd\}}||fS )NrE   )rH   rI   rJ   )rG   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   rF   r2   r3   rL   ZunittestrU   r	   r	   r	   r
   <module>   s   
 .