3 2a0@sxddlZddlmZmZmZddljZddZGdddZ ddZ d d Z d d Z e d krtddlmZeddddS)N) StringVar BooleanVarTclErrorcCst|dst||_|jS)N _searchengine)hasattr SearchEnginer)rootr 1/opt/alt/python36/lib64/python3.6/searchengine.pygets  r c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ d#ddZd$ddZd%ddZd&d d!ZdS)'rcCsR||_t|d|_t|d|_t|d|_t|d|_t|d|_t|d|_dS)NFT) rrpatvarrrevarcasevarwordvarwrapvarbackvar)selfrr r r __init__s     zSearchEngine.__init__cCs |jjS)N)r r )rr r r getpat%szSearchEngine.getpatcCs|jj|dS)N)r set)rpatr r r setpat(szSearchEngine.setpatcCs |jjS)N)rr )rr r r isre+szSearchEngine.isrecCs |jjS)N)rr )rr r r iscase.szSearchEngine.iscasecCs |jjS)N)rr )rr r r isword1szSearchEngine.iswordcCs |jjS)N)rr )rr r r iswrap4szSearchEngine.iswrapcCs |jjS)N)rr )rr r r isback7szSearchEngine.isbackcCs |jrtj|}|j|dS)N)rreescaper)rrr r r setcookedpat<s zSearchEngine.setcookedpatcCs.|j}|jstj|}|jr*d|}|S)Nz\b%s\b)rrrrr)rrr r r getcookedpatCs  zSearchEngine.getcookedpatcCs|j}|s|j|ddS|j}d}|js:|tjB}ytj||}WnVtjk r}z8|j}|d}t |dkr|dnd}|j|||dSd}~XnX|S)NzEmpty regular expressionr) r report_errorr!rr IGNORECASEcompileerrorargslen)rrflagsprogZwhatr)msgcolr r r getprogKs"  zSearchEngine.getprogr#cCsNdt|}|r |dt|}|dkr8|dt|}tjd||jddS)NzError: z Pattern: rz Offset: zRegular expression error)Zmaster)str tkMessageBoxZ showerrorr)rrr-r.r r r r%_s zSearchEngine.report_errorNrc Cs|s|j}|sdS|jj}t|\}}|jrb|r<|}n|}t|\}} |j|||| ||} n.|rl|}n|}t|\}} |j|||| ||} | S)N)r/rr get_selectionr get_line_colsearch_backwardsearch_forward) rtextr,okwrapfirstlaststartliner.resr r r search_textis$    zSearchEngine.search_textc Csd}|}|jd|d|d} x| r|j| dd|} | rV|sN| j|krV|| fS|d}|rl||krlPd}d}|jd|d|d} | r"|r"d}d}d}|jdd} q"WdS)Nrz%d.0r#z1.0z2.0r$)r searchend) rr6r,r<r.r8r7wrapped startlinecharsmr r r r5s(  zSearchEngine.search_forwardc Csd}|}|jd|d|d} xt|| dd|} | rR|sJ| j|krR|| fS|d}|rh||krhPd}|dkr|szPd}d}|jd} tt| jd\}}|jd|d|d} t| d}q"WdS)Nrz%d.0r#zend-1c.r$)r search_reverser;indexmapintsplitr*) rr6r,r<r.r8r7rArBrCrDposr r r r4s,  zSearchEngine.search_backwardr$)r$)Nr)r)r)__name__ __module__ __qualname__rrrrrrrrr r!r/r%r>r5r4r r r r rs ( rcCsn|j|}|sdSd}|j\}}xF||krh||krh|}||krH|d}|j||}|sZP|j\}}q$W|S)Nr#)r?span)r,rCr.rDfoundijr r r rFs   rFc CsTy|jd}|jd}Wntk r4d}}YnX|sD|jd}|sL|}||fS)Nz sel.firstzsel.lastinsert)rGr)r6r9r:r r r r2s  r2cCstt|jd\}}||fS)NrE)rHrIrJ)rGr<r.r r r r3sr3__main__)mainz#idlelib.idle_test.test_searchenginer") verbosity)rZtkinterrrrZtkinter.messageboxZ messageboxr1r rrFr2r3rLZunittestrUr r r r s  .