B E<‹–X¼2ã@szddlZddlmZmZmZddlmZdd„ZGdd„dƒZ dd„Z d d „Z d d „Z e d krvddlmZeddddS)éN)Ú StringVarÚ BooleanVarÚTclErrorcCst|dƒst|ƒ|_|jS)NÚ _searchengine)ÚhasattrÚ SearchEnginer)Úroot©r ú7/opt/alt/python37/lib/python3.7/idlelib/searchengine.pyÚgets  r c@sŒeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z d"dd„Zd#dd„Zd$dd„Zd%d d!„ZdS)&rcCsR||_t|dƒ|_t|dƒ|_t|dƒ|_t|dƒ|_t|dƒ|_t|dƒ|_dS)NÚFT) rrÚpatvarrÚrevarÚcasevarÚwordvarÚwrapvarÚbackvar)Úselfrr r r Ú__init__s     zSearchEngine.__init__cCs |j ¡S)N)r r )rr r r Úgetpat%szSearchEngine.getpatcCs|j |¡dS)N)r Úset)rÚpatr r r Úsetpat(szSearchEngine.setpatcCs |j ¡S)N)rr )rr r r Úisre+szSearchEngine.isrecCs |j ¡S)N)rr )rr r r Úiscase.szSearchEngine.iscasecCs |j ¡S)N)rr )rr r r Úisword1szSearchEngine.iswordcCs |j ¡S)N)rr )rr r r Úiswrap4szSearchEngine.iswrapcCs |j ¡S)N)rr )rr r r Úisback7szSearchEngine.isbackcCs | ¡rt |¡}| |¡dS)N)rÚreÚescaper)rrr r r Ú setcookedpat<s zSearchEngine.setcookedpatcCs.| ¡}| ¡st |¡}| ¡r*d|}|S)Nz\b%s\b)rrrrr)rrr r r Ú getcookedpatCs  zSearchEngine.getcookedpatc Cs¨| ¡}|s| |d¡dS| ¡}d}| ¡s:|tjB}yt ||¡}WnXtjk r¢}z8|j}|d}t |ƒdkr€|dnd}| |||¡dSd}~XYnX|S)NzEmpty regular expressionréééÿÿÿÿ) rÚ report_errorr!rrÚ IGNORECASEÚcompileÚerrorÚargsÚlen)rrÚflagsÚprogZwhatr)ÚmsgÚcolr 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| ¡}|sdS|j ¡}t|ƒ\}}| ¡rb|r<|}n|}t|ƒ\}} | |||| ||¡} n.|rl|}n|}t|ƒ\}} | |||| ||¡} | S)N)r/rr Ú get_selectionrÚ get_line_colÚsearch_backwardÚsearch_forward) rÚtextr,ÚokÚwrapÚfirstÚlastÚstartÚliner.Zresr r r Ú search_textis$    zSearchEngine.search_textc Cs´d}|}| d|d|d¡} xŽ| r®| | dd…|¡} | rV|sN|  ¡|krV|| fS|d}|rl||krlPd}d}| d|d|d¡} | s"|r"d}d}d}| dd¡} q"WdS)Nrz%d.0r#r$z1.0z2.0)r ÚsearchÚend) rr6r,r<r.r8r7ÚwrappedÚ startlineÚcharsÚmr r r r5‘s( zSearchEngine.search_forwardc CsÌd}|}| d|d|d¡} x¦t|| dd…|ƒ} | rR|sJ|  ¡|krR|| fS|d}|rh||krhPd}|dkr |szPd}d}| d¡} tt|  d¡ƒ\}}| d|d|d¡} t| ƒd}q"WdS)Nrz%d.0r#r$zend-1cÚ.)r Úsearch_reverser;ÚindexÚmapÚintÚsplitr*) rr6r,r<r.r8r7r@rArBrCÚposr r r r4§s,  zSearchEngine.search_backward)r$)Nr)r)r)Ú__name__Ú __module__Ú __qualname__rrrrrrrrr r!r/r%r=r5r4r r r r rs ( rcCsn| |¡}|sdSd}| ¡\}}xF||krh||krh|}||krH|d}| ||¡}|sZP| ¡\}}q$W|S)Nr#)r>Úspan)r,rBr.rCÚfoundÚiÚjr r r rEÀs   rEcCsTy| d¡}| d¡}Wntk r4d}}YnX|sD| d¡}|sL|}||fS)Nz sel.firstzsel.lastÚinsert)rFr)r6r9r:r r r r2×s  r2cCstt| d¡ƒ\}}||fS)NrD)rGrHrI)rFr<r.r r r r3åsr3Ú__main__)Úmainz#idlelib.idle_test.test_searchenginer")Ú verbosity)rZtkinterrrrZtkinter.messageboxZ messageboxr1r rrEr2r3rKZunittestrTr r r r Ús  .