
    z%i                         	 d dl Z d dlmZmZmZ d dlmZ d Z G d d      Zd Zd Z	d	 Z
ed
k(  rd dlmZ  edd       yy)    N)	StringVar
BooleanVarTclError)
messageboxc                 T    	 t        | d      st        |       | _        | j                  S )N_searchengine)hasattrSearchEnginer   )roots    H/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/searchengine.pygetr      s,    
 4))$/    c                   p    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZddZddZddZddZy)r
   c                     	 || _         t        |d      | _        t        |d      | _        t        |d      | _        t        |d      | _        t        |d      | _        t        |d      | _        y )N FT)	r   r   patvarr   revarcasevarwordvarwrapvarbackvar)selfr   s     r   __init__zSearchEngine.__init__   sd    	 	b)e,
!$.!$.!$-!$.r   c                 6    | j                   j                         S N)r   r   r   s    r   getpatzSearchEngine.getpat%   s    {{  r   c                 :    | j                   j                  |       y r   )r   setr   pats     r   setpatzSearchEngine.setpat(   s    r   c                 6    | j                   j                         S r   )r   r   r   s    r   isrezSearchEngine.isre+   s    zz~~r   c                 6    | j                   j                         S r   )r   r   r   s    r   iscasezSearchEngine.iscase.       ||!!r   c                 6    | j                   j                         S r   )r   r   r   s    r   iswordzSearchEngine.isword1   r'   r   c                 6    | j                   j                         S r   )r   r   r   s    r   iswrapzSearchEngine.iswrap4   r'   r   c                 6    | j                   j                         S r   )r   r   r   s    r   isbackzSearchEngine.isback7   r'   r   c                 r    	 | j                         rt        j                  |      }| j                  |       y r   )r$   reescaper"   r    s     r   setcookedpatzSearchEngine.setcookedpat<   s'    +99;))C.CCr   c                     | j                         }| j                         st        j                  |      }| j	                         rd|z  }|S )Nz\b%s\b)r   r$   r/   r0   r)   r    s     r   getcookedpatzSearchEngine.getcookedpatC   s:    kkmyy{))C.C;;=c/C
r   c                 x   	 | j                         }|s| j                  |d       y | j                         }d}| j                         s|t        j
                  z  }	 t	        j                  ||      }|S # t        j                  $ r1}| j                  ||j                  |j                         Y d }~y d }~ww xY w)NzEmpty regular expressionr   )
r   report_errorr3   r&   r/   
IGNORECASEcompileerrormsgpos)r   r!   flagsproges        r   getprogzSearchEngine.getprogK   s    0kkmc#=>!{{}BMM)E	::c5)D  xx 	c155!%%0	s   A5 5B9'B44B9Nc                     dt        |      z   }|r|dz   t        |      z   }||dz   t        |      z   }t        j                  d|| j                         y )NzError: z

Pattern: z	
Offset: zRegular expression error)master)strr   	showerrorr   )r   r!   r9   cols       r   r5   zSearchEngine.report_error\   sX    #c("%C0C?$s3x/C7"499	6r   c                 R   	 |s| j                         }|sy | j                  j                         }t        |      \  }}| j	                         r-|r|}n|}t        |      \  }}	| j                  ||||	||      }
|
S |r|}n|}t        |      \  }}	| j                  ||||	||      }
|
S r   )r>   r   r   get_selectionr-   get_line_colsearch_backwardsearch_forward)r   textr<   okwrapfirstlaststartlinerC   ress              r   search_textzSearchEngine.search_textf   s    	" <<>D||!#D)t;;=$U+ID#&&tT4dBGC 
 $U+ID#%%dD$T2FC
r   c                 >   d}|}|j                  d|z  d|dz   z        }	|	r||j                  |	d d |      }
|
r|s|
j                         |kD  r||
fS |dz   }|r||kD  r	 y d}d}|j                  d|z  d|dz   z        }	|	s|rd}d}d}|j                  dd      }	|	r|y )Nr   %d.0   z1.0z2.0)r   searchend)r   rI   r<   rO   rC   rK   rJ   wrapped	startlinecharsms              r   rH   zSearchEngine.search_forward   s    	$$q&(9:E#2J,A37N!8D4)+  CBHHVd]Fd1f,=>ET.   r   c                    d}|}|j                  d|z  d|dz   z        }		 t        ||	d d |      }
|
r|s|
j                         |k  r||
fS |dz
  }|r||k  r	 y d}|dk  r;|s	 y d}d}|j                  d      }t	        t
        |j                  d            \  }}|j                  d|z  d|dz   z        }	t        |	      dz
  })Nr   rS   rT   rU   zend-1c.)r   search_reverserN   indexmapintsplitlen)r   rI   r<   rO   rC   rK   rJ   rX   rY   rZ   r[   r:   s               r   rG   zSearchEngine.search_backward   s    	$$q&(9:tU3BZ5AS7N!8D4)+  Bqy  jj*SYYs^4	cHHVd]Fd1f,=>Ee*q.C# r   r   )Nr   )r   )__name__
__module____qualname__r   r   r"   r$   r&   r)   r+   r-   r1   r3   r>   r5   rQ   rH   rG    r   r   r
   r
      sQ    F/! """"
"6&P,r   r
   c                     	 | j                  |      }|sy d }|j                         \  }}||k  rF||k  rA|}||k(  r|dz   }| j                  ||      }|s	 |S |j                         \  }}||k  r||k  rA|S )NrT   )rV   span)r<   rZ   rC   r[   foundijs          r   r^   r^      s     	EAE668DAq
c'a3h6!AKKq!L vvx1 c'a3h Lr   c                     	 	 | j                  d      }| j                  d      }|s| j                  d      }|s|}||fS # t        $ r d x}}Y *w xY w)Nz	sel.firstzsel.lastinsert)r_   r   )rI   rL   rM   s      r   rE   rE      sh    

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

8$$;  s   "A   AAc                 P    	 t        t        | j                  d            \  }}||fS )Nr]   )r`   ra   rb   )r_   rO   rC   s      r   rF   rF      s(    BCS)*ID#9r   __main__)mainz#idlelib.idle_test.test_searchengine   )	verbosity)r/   tkinterr   r   r   r   r   r
   r^   rE   rF   rd   unittestrq   rg   r   r   <module>rv      sR    - 	 3 3 	g gT. z	.!< r   