
    .hh                         S SK r S SKJrJrJr  S SKJr  S r " S S5      rS rS r	S	 r
\S
:X  a  S SKJr  \" SSS9  gg)    N)	StringVar
BooleanVarTclError)
messageboxc                 \    [        U S5      (       d  [        U 5      U l        U R                  $ )N_searchengine)hasattrSearchEnginer   )roots    =/opt/python-3.13.8/usr/lib/python3.13/idlelib/searchengine.pygetr      s*     4)))$/    c                   ~    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSS jrSS jrSS jrSS jrSrg)r
      c                     Xl         [        US5      U l        [        US5      U l        [        US5      U l        [        US5      U l        [        US5      U l        [        US5      U l        g )N FT)	r   r   patvarr   revarcasevarwordvarwrapvarbackvar)selfr   s     r   __init__SearchEngine.__init__   s]    
 	b)e,
!$.!$.!$-!$.r   c                 6    U R                   R                  5       $ N)r   r   r   s    r   getpatSearchEngine.getpat%   s    {{  r   c                 :    U R                   R                  U5        g r   )r   setr   pats     r   setpatSearchEngine.setpat(   s    r   c                 6    U R                   R                  5       $ r   )r   r   r   s    r   isreSearchEngine.isre+   s    zz~~r   c                 6    U R                   R                  5       $ r   )r   r   r   s    r   iscaseSearchEngine.iscase.       ||!!r   c                 6    U R                   R                  5       $ r   )r   r   r   s    r   iswordSearchEngine.isword1   r-   r   c                 6    U R                   R                  5       $ r   )r   r   r   s    r   iswrapSearchEngine.iswrap4   r-   r   c                 6    U R                   R                  5       $ r   )r   r   r   s    r   isbackSearchEngine.isback7   r-   r   c                 |    U R                  5       (       a  [        R                  " U5      nU R                  U5        g r   )r(   reescaper%   r#   s     r   setcookedpatSearchEngine.setcookedpat<   s(     99;;))C.CCr   c                     U R                  5       nU R                  5       (       d  [        R                  " U5      nU R	                  5       (       a  SU-  nU$ )Nz\b%s\b)r   r(   r8   r9   r/   r#   s     r   getcookedpatSearchEngine.getcookedpatC   s>    kkmyy{{))C.C;;==c/C
r   c                    U R                  5       nU(       d  U R                  US5        g U R                  5       nSnU R                  5       (       d  U[        R
                  -  n [        R                  " X5      nU$ ! [        R                   a0  nU R                  XR                  UR                  5         S nAg S nAff = f)NzEmpty regular expressionr   )
r   report_errorr=   r+   r8   
IGNORECASEcompilePatternErrormsgpos)r   r$   flagsproges        r   getprogSearchEngine.getprogK   s    kkmc#=>!{{}}BMM)E	::c)D   	c55!%%0	s   &A> >C&B==CNc                     S[        U5      -   nU(       a  US-   [        U5      -   nUb  US-   [        U5      -   n[        R                  " SX R                  S9  g )NzError: z

Pattern: z	
Offset: zRegular expression error)master)strr   	showerrorr   )r   r$   rD   cols       r   r@   SearchEngine.report_error\   sV    #c("%C0C?$s3x/C7"99	6r   c                 p   U(       d  U R                  5       nU(       d  g U R                  R                  5       n[        U5      u  pVU R	                  5       (       a.  U(       a  UnOUn[        U5      u  pU R                  XXXC5      n
U
$ U(       a  UnOUn[        U5      u  pU R                  XXXC5      n
U
$ r   )rI   r   r   get_selectionr5   get_line_colsearch_backwardsearch_forward)r   textrG   okwrapfirstlaststartlinerO   ress              r   search_textSearchEngine.search_textf   s    $ <<>D||!#D);;==$U+ID&&t4dGC 
 $U+ID%%d$TFC
r   c                    SnUnUR                  SU-  SUS-   -  5      n	U	(       a  UR                  U	S S U5      n
U
(       a  U(       d  U
R                  5       U:  a  X:4$ US-   nU(       a  X8:  a   g SnSnUR                  SU-  SUS-   -  5      n	U	(       d  U(       a  SnSnSnUR                  SS5      n	U	(       a  M  g )Nr   %d.0   z1.0z2.0)r   searchend)r   rV   rG   r\   rO   rX   rW   wrapped	startlinecharsms              r   rU   SearchEngine.search_forward   s    	$$q&(9:E#2J,A37N!8D4+  CBHHVd]Fd1f,=>ET. e  r   c                    SnUnUR                  SU-  SUS-   -  5      n	 [        X)S S U5      n
U
(       a  U(       d  U
R                  5       U:  a  X:4$ US-
  nU(       a  X8:  a   g SnUS::  a?  U(       d   g SnSnUR                  S5      n[	        [
        UR                  S5      5      u  p4UR                  SU-  SUS-   -  5      n	[        U	5      S-
  nM  )Nr   ra   rb   rc   zend-1c.)r   search_reverser[   indexmapintsplitlen)r   rV   rG   r\   rO   rX   rW   rf   rg   rh   ri   rE   s               r   rT   SearchEngine.search_backward   s    	$$q&(9:t3BZ5AS7N!8D4+  Bqy  jj*SYYs^4	HHVd]Fd1f,=>Ee*q.C# r   )r   r   r   r   r   r   r   r   )Nr   )r   )__name__
__module____qualname____firstlineno__r   r   r%   r(   r+   r/   r2   r5   r:   r=   rI   r@   r^   rU   rT   __static_attributes__ r   r   r
   r
      sN    /! """"
"6&P,r   r
   c                     U R                  U5      nU(       d  g S nUR                  5       u  pVXR:  aJ  Xb::  aE  UnXV:X  a  US-   nU R                  X5      nU(       d   U$ UR                  5       u  pVXR:  a  Xb::  a  ME  U$ )Nrb   )rd   span)rG   rh   rO   ri   foundijs          r   rm   rm      s     	EAE668DA
'ah6!AKK!L vvx 'ah Lr   c                      U R                  S5      nU R                  S5      nU(       d  U R                  S5      nU(       d  UnX4$ ! [         a    S =p N3f = f)Nz	sel.firstzsel.lastinsert)rn   r   )rV   rY   rZ   s      r   rR   rR      sa    

;'zz*% 

8$;  s   "A AAc                 J    [        [        U R                  S5      5      u  pX4$ )Nrl   )ro   rp   rq   )rn   r\   rO   s      r   rS   rS      s!    CS)*ID9r   __main__)mainz#idlelib.idle_test.test_searchengine   )	verbosity)r8   tkinterr   r   r   r   r   r
   rm   rR   rS   rt   unittestr   ry   r   r   <module>r      sO    	 3 3 	g gT. z	.!< r   