<!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>

]=                 @   s   d  d l  Z  d  d l m Z m Z m Z d  d l j Z d d   Z Gd d   d  Z	 d d   Z
 d	 d
   Z d d   Z e d k r d  d l Z e j d d 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/python35/lib64/python3.5/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 d  Z d d d  Z d d  d!  Z d S)#r   c             C   sy   | |  _  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
   isword/   s    zSearchEngine.iswordc             C   s   |  j  j   S)N)r   r   )r   r	   r	   r
   iswrap2   s    zSearchEngine.iswrapc             C   s   |  j  j   S)N)r   r   )r   r	   r	   r
   isback5   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   sA   |  j    } |  j   s' t j |  } |  j   r= d | } | S)Nz\b%s\b)r   r   r   r   r   )r   r   r	   r	   r
   getcookedpatA   s    
zSearchEngine.getcookedpatc             C   s   |  j    } | s& |  j | d  d  S|  j   } d } |  j   sQ | t j B} y t j | |  } Wnt t j k
 r } zQ | j } | d } t	 |  d k r | d n d } |  j | | |  d  SWYd  d  } ~ Xn 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
   getprogI   s"    	
"zSearchEngine.getprogr#   c             C   sg   d t  |  } | r* | d t  |  } | d k rJ | d t  |  } t j d | d |  j d  S)NzError: z

Pattern: r   z	
Offset: zRegular expression errorZ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   r | rX | } n | } t |  \ } }	 |  j | | | |	 | |  }
 nE | r | } 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_textg   s$    	!	zSearchEngine.search_textc             C   s   d } | } | j  d | d | d  }	 x |	 r | j |	 d  d  |  }
 |
 rw | sm |
 j   | k rw | |
 f S| d } | r | | k r Pd } d } | j  d | d | d  }	 |	 r- | r- d } d } d } | j  d d  }	 q- Wd  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  }	 x t | |	 d  d  |  }
 |
 rq | sg |
 j   | k  rq | |
 f S| d } | r | | k  r Pd } | d k r | s Pd } d } | j d  } t t | j d   \ } } | j  d | d | d  }	 t |	  d } q- Wd  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$   )__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   s   |  j  |  } | s d  Sd  } | j   \ } } xc | | k  r | | k r | } | | k rh | d } |  j  | |  } | s P| j   \ } } q4 W| S)Nr#   )r?   span)r,   rC   r.   rD   foundijr	   r	   r
   rF      s    
rF   c             C   sl   y" |  j  d  } |  j  d  } Wn t k
 r@ d  } } Yn X| sV |  j  d  } | sb | } | | 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__z#idlelib.idle_test.test_searchengine	verbosityr"   exitF)r   tkinterr   r   r   Ztkinter.messageboxZ
messageboxr1   r   r   rF   r2   r3   rL   Zunittestmainr	   r	   r	   r
   <module>   s   